AVCaptureVideoOutput和压缩
问题描述:
从iOS 4.x开始,AVCaptureVideoDataOutput是否可配置为返回压缩帧?AVCaptureVideoOutput和压缩
为AVCaptureVideoDataOutput文档说:
AVCaptureVideoDataOutput是通过其委托的具体 子类AVCaptureOutput的使用, ,以处理来自视频 未压缩的帧被捕获,或访问 压缩帧。
其中一个属性是'videoSettings',它根据SDK是输出的压缩设置,它表示压缩设置键可以在AVVideoSettings.h中找到。但它也表示只支持CVPixelBufferPixelFormatTypeKey。
基于此,我可以假设AVCaptureVideoDataOutput返回到sampleBufferDelegate方法的所有帧都是未压缩的吗?有没有办法到达压缩帧?
答
SDK的当前版本仅从相机返回未压缩的帧。也许它会在未来发生变化,但现在就是这样。因此,获取压缩图像的唯一方法就是自己做。如何去做取决于你的需求。
如果你需要把它们写在磁盘上,它会很长,效率低下(电影会更好)。如果您需要发送压缩图像OTA,则可以使用jpeg或png库进行操作。
我想通过电线将帧(和伴音)发送到服务器,压缩是一个必要条件,整个操作的速度也是如此。因此保存到磁盘会导致整体延迟。你会仍然使用JPEG或PNG压缩库或其他东西?是否还有另一个很好的选择,例如直接使用可以由sampleBufferDelegate返回的CMBlockBuffer? – 2011-04-18 22:07:16
@Steve Card:我不确定你真的需要压缩,这取决于你与服务器的连接以及你对图像的处理。我认为除了使用核心媒体缓冲区(我不习惯音频)的缓冲区代表返回没有其他选项。这是最快的,它可以在一个线程中完成。估计整个流的大小以及您对带宽和计算的需求,您将知道该怎么做。 – 2011-04-19 07:49:15