2011-08-25 67 views
0

AVFoundation Programming Guide指出捕獲視頻當優選像素的格式有:在iOS上捕捉視頻時查詢最佳像素格式?

  • 的iPhone 4:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRangekCVPixelFormatType_32BGRA
  • 爲iPhone 3G:kCVPixelFormatType_422YpCbCr8kCVPixelFormatType_32BGRA

(沒有建議[但是]對於iPhone 5或具有相機的iPad設備。)

然而,沒有提供關於我應該如何去確定應用程序當前正在運行的設備。如果首選的像素格式在將來因此而變得與我的應用程序未知設備不同,該怎麼辦?

什麼是確定任何設備的首選YpCbCr像素格式的正確和未來證明的方法?

回答

0

我相信你可以將視頻設置設置爲零,AVFoundation將使用最有效的格式。例如,而不是做

NSDictionary *videoSettings = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]; 
videoOutput.videoSettings = videoSettings; 

做到這一點,而不是

videoOutput.videoSettings = nil; 

你也可以嘗試不設置它。我知道在過去我只是將它設置爲零,除非我需要以特定格式捕捉圖像。

編輯

要獲得AVFoundation選擇要使用的格式。

CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(source); 
CGColorSpaceRef cref = CVImageBufferGetColorSpace(imageBuffer); 
+0

是的,這將提供最有效的格式。但我想要最有效的格式是YpCbCr像素格式。目前的實施將會在iPhone 3GS和iPhone 4上產生這種效果,但它是未來的證明嗎?公共API的文檔沒有說明, – PeyloW

+0

如果您需要檢查最有效的格式,那麼您可以將視頻設置設置爲零,然後檢查CMSampledBufferRef的格式。我知道這不一定能幫助你,因爲你必須知道YpCbCR格式是最有效的。 –