没有减压的AVCaptureSession

时间:2015-06-15 07:55:47

标签: objective-c video avfoundation

环境

  • OS-X
  • 优胜美
  • 目标C
  • 压缩视频输入(AVCaptureDeviceFormat =='muxx'/'isr')

用例

压缩视频流作为支持'muxx / isr'有效载荷格式的HAL捕获设备(AVCaptureDevice)暴露给操作系统,我希望能够直接访问压缩有效载荷的原始字节而不进行解压缩。

实施

  1. 使用“+ (AVCaptureDevice *)deviceWithUniqueID:(NSString *)deviceUniqueID
  2. 查找设备
  3. 创建“AVCaptureDeviceInput
  4. 创建“AVCaptureVideoDataOutput
  5. 将“AVCaptureDevice”与“AVCaptureDeviceInput
  6. 相关联
  7. 'AVCaptureVideoDataOutput'
  8. 上的setSampleBufferDelegate
  9. 创建AVCaptureSession
  10. 通过添加输入和输出(未选择预设)配置会话
  11. 通过调用[session startRunning]
  12. 启动会话
  13. 在“AVCaptureVideoDataOutputSampleBufferDelegate”调用后调用“CMSampleBufferGetDataBuffer(sampleBuffer);”获取对RAW缓冲区的引用
  14. 问题描述

    当系统调用委托时,我得到的缓冲区是指解码的yuy2图像而不是压缩缓冲区(在它被解复用和解码之前),因此,“CMSampleBufferGetDataBuffer”返回 nil 指针。

    如何通过解压缩获取AVCaptureDevice发送的RAW有效负载?

1 个答案:

答案 0 :(得分:0)

解决方案是使用C ++ CoreMediaIO框架,此link提供了一个示例,CoreMediaIO的主要问题是它没有被广泛使用且文档很少,Apple提供的示例代码很旧并且在使用最新的SDK编译之前需要进行相当多的修改,但是,最终,它有效,this Blog entry有一个很好的例子。