从Camera流中获取RGB数据

时间:2013-03-20 17:21:36

标签: iphone ios objective-c avfoundation

我在我的应用中使用AVFoundation框架

这是标准代码:

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数据流或类似的东西?

1 个答案:

答案 0 :(得分:0)

从捕获会话或玩家会话中获取视频/音频数据缓冲区,

  • 创建AVCaptureVideoDataOutput / AVCaptureAudioDataOutput对象。
  • 确认您的AVCaptureVideoDataOutputSampleBufferDelegate。
  • 将AVCaptureVideoDataOutput添加到您的Capture / Player会话中。
  • 实施协议方法。在AVCaptureVideoDataOutputSampleBufferDelegate的captureOutput ...方法中捕获/播放媒体时,您将收到包含视频/音频帧的CMSampleBufferRef对象。

CMSampleBufferRef对象包含媒体帧数据,时间戳信息和媒体的格式描述。您还可以在AVCaptureVideoDataOutput.videoSettings属性中指定所需的帧压缩格式(或未压缩的帧格式)。我想你会收到YUY2或JPEG帧。因此,您可以使用CGImageRef转换为RGB。