1

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

4

1 回答 1

0

从捕获会话或播放器会话中获取视频/音频数据缓冲区,

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

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

于 2014-01-07T08:10:22.730 回答