これらの単純なコード行 (アプリには何もありません) は、iOS 9 (iPhone 6 および iPhone 4S) では正常に動作しますが、iOS 8 (iPhone 5 および iPod Touch 5G) では動作しません。
VTCompressionSessionRef videoEncoder;
OSStatus err = VTCompressionSessionCreate(NULL, 1920, 1080,
kCMVideoCodecType_H264,
NULL,
NULL,
NULL,
NULL,
(__bridge void*)self, &videoEncoder);
if (err != noErr) {
NSLog(@"Error when creating compression session : %d", (int)err);
} else {
NSLog(@"All systems go!");
}
また、より低い解像度で試したり、オプションのパラメーターの一部またはすべてを指定しようとしたりしましたが、いずれの場合も iOS 9 で動作し、iOS 8 ではエラー -12902 (kVTParameterErr) で失敗します。一部のパラメータが間違っていることを知ってうれしいですが、どのパラメータが iOS 9 で間違っていると見なされないのはなぜですか?
VTCopyVideoEncoderList は、すべての場合に avc1 (H264) エンコーダーが存在するリストも提供することに注意してください。
何が起こっているのか分かりますか?