2

给定 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。

4

1 回答 1

0

QTKit 应用程序编程指南的创建单帧抓取应用程序部分在这种情况下是否不适合您?

于 2010-10-10T23:08:50.327 回答