给定 H.264 的样本缓冲区,有没有办法提取它表示为图像的帧?
我正在使用 QTKit 从相机捕获视频并使用 aQTCaptureMovieFileOutput
作为输出对象。
我想要类似于CVImageBufferRef
作为参数传递给QTCaptureVideoPreviewOutput
委托方法的东西。由于某种原因,文件输出不包含CVImageBufferRef
.
我得到的是一个 QTSampleBuffer,因为我在压缩选项中设置了它,它包含一个 H.264 样本。
我已经看到,在 iPhone 上,CoreMedia 和 AVFoundation 可用于CVImageBufferRef
从给定创建一个CMSampleBufferRef
(我想这与我能得到的一样接近QTSampleBuffer
)——但这是 Mac,而不是 iPhone。
CoreMedia 或 AVFoundation 都不在 Mac 上,我看不到任何方法可以完成相同的任务。
我需要的是来自输出对象回调给我的 H.264 样本的当前帧的图像(无论是 CVImageBufferRef、CIImage 还是 NSImage 都无关紧要)。
扩展信息(来自下面的评论)
我发布了一个相关问题,重点关注原始问题 - 尝试使用 QTKit 简单地播放视频样本流:在 Mac OS X 上使用 QTKit 播放视频数据流
这似乎是不可能的,这就是为什么我开始尝试通过缩放、压缩和转换图像数据并通过网络将其发送到对等方来CVImageBufferRef
尝试获取帧作为图像并创建视频外观。NSImage
我可以使用QTCapturePreviewVideoOutput
(或解压缩的)以CVImageBufferRef
.
但是,这些图像引用在对我有用之前需要压缩、缩放和转换为s,因此尝试使用(允许在之前设置压缩和图像大小)NSImage
从框架中获取已经缩放和压缩的帧QTCaptureMovieFileOutput
开始捕获),使我不必进行昂贵的压缩、缩放和转换操作,这些操作会杀死 CPU。