這些簡單的代碼行(在應用程序中沒有任何其他內容)可以在iOS 9(iPhone 6和iPhone 4S)上正常工作,但不適用於iOS 8(iPhone 5和iPod Touch 5G):VTCompressionSessionCreate適用於iOS 9,但不適用於iOS 8
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和與錯誤-12902(kVTParameterErr)無法在iOS 8的所有情況。很高興知道某些參數是錯誤的,但哪一個爲什麼在iOS 9上不被認爲是錯誤的?
請注意,VTCopyVideoEncoderList給我一個列表,其中avc1(H264)編碼器也存在於所有情況下。
任何想法是怎麼回事?
好點,感謝提到這一點。我最終在蘋果公司打開了一個支持請求,他回答說,我的一小部分代碼在iOS 8上確實不起作用,並且沒有解決方法。他們沒有提到使用VTCompressionOutputCallback。 –
這很奇怪,因爲有明顯的記錄解決方法。我在'iOS 8'上使用'VTCompressionSessionCreate'和一個基於C的'VTCompressionOutputCallback'回調函數,效果很好。 –