2013-03-20 51 views
1

RGB數據在我的應用程序找我使用<code>AVFoundation</code>框架從相機流

這裏是非標準代碼:

AVCaptureSession *session = [[AVCaptureSession alloc] init]; 
session.sessionPreset = AVCaptureSessionPresetHigh; 

AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session]; 

captureVideoPreviewLayer.frame = self.preview.bounds; 
[self.preview.layer addSublayer:captureVideoPreviewLayer]; 

AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 

AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil]; 

[session addInput:input]; 

[session startRunning]; 

如何獲得這樣的流RGB數據流的東西?

回答

0

對於來自捕獲會話或播放器會話獲取的視頻/音頻數據緩衝區,

  • 創建AVCaptureVideoDataOutput/AVCaptureAudioDataOutput對象。
  • 確認您的某個AVCaptureVideoDataOutputSampleBufferDelegate。
  • 將AVCaptureVideoDataOutput添加到您的Capture/Player會話。
  • 實施協議方法。在AVCaptureVideoDataOutputSampleBufferDelegate的captureOutput ...方法中捕獲/播放媒體時,您將收到包含視頻/音頻幀的CMSampleBufferRef對象。

CMSampleBufferRef對象包含媒體幀數據,時間戳信息和媒體的格式描述。您還可以在AVCaptureVideoDataOutput.videoSettings屬性中指定所需的幀壓縮格式(或未壓縮的幀格式)。我想你會收到YUY2或JPEG幀。所以你可以使用CGImageRef轉換成RGB。