cocoa - 从 H.264 样本数据中提取图像 (Objective-C/Mac OS X)

标签 cocoa macos video qtkit

给定 H.264 的样本缓冲区,有没有办法提取它表示为图像的帧?

我正在使用 QTKit 从相机捕获视频并使用 QTCaptureMovieFileOutput作为输出对象。

我想要类似于CVImageBufferRef的东西作为参数传递给 QTCaptureVideoPreviewOutput委托(delegate)方法。由于某种原因,文件输出不包含 CVImageBufferRef .

我得到的是一个 QTSampleBuffer,因为我已在压缩选项中设置了它,所以它包含一个 H.264 样本。

我看到在iPhone上,CoreMedia和AVFoundation可以用来创建CVImageBufferRef从给定的CMSampleBufferRef (我想这是我能得到的最接近 QTSampleBuffer 的结果) - 但这是 Mac,而不是 iPhone。

CoreMedia 或 AVFoundation 都不在 Mac 上,我看不到任何方法来完成相同的任务。

我需要的是来自输出对象回调给我的 H.264 样本当前帧的图像(无论是 CVImageBufferRef、CIImage 还是 NSImage 都没关系)。

<小时/>

扩展信息(来自下面的评论)

我已经发布了一个相关问题,重点关注原始问题 - 尝试使用 QTKit 简单地播放视频样本流:Playing a stream of video data using QTKit on Mac OS X

这似乎是不可能的,这就是为什么我开始尝试通过缩放、压缩和转换 CVImageBufferRef 中的图像数据来获取帧作为图像并创建视频外观。至NSImage并通过网络将其发送给对等点。

我可以使用QTCapturePreviewVideoOutput (或解压缩)得到未压缩的帧图像,格式为 CVImageBufferRef

但是,这些图像引用需要压缩、缩放并转换为NSImage在它们对我有任何用处之前,因此尝试使用 QTCaptureMovieFileOutput 从框架中获取已经缩放和压缩的框架(它允许在开始捕获之前设置压缩和图像大小),使我不必执行昂贵的压缩、缩放和转换操作,这些操作会占用 CPU。

最佳答案

Creating a Single-Frame Grabbing Application 是吗?在这种情况下,QTKit 应用程序编程指南的部分对您不起作用?

关于cocoa - 从 H.264 样本数据中提取图像 (Objective-C/Mac OS X),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3889909/

相关文章:

cocoa - NSTokenField 设置最大 Token 数量

cocoa - 向基于文档的 Mac 应用程序窗口添加垂直滚动条

macos - 是否可以找出我在 Mac OSX 上安装的 Nuget 版本?

opencv - 有没有办法访问用opencv拍摄的帧进行加密?

ios - 使用多种语言的 App Preview 视频将 iOS 应用程序上传到 App Store

PHP FFMPEG 如何在转换前根据比特率和持续时间计算视频的文件大小?

cocoa - 当鼠标离开 NSWindow 时,NSTextField 失去焦点/FirstResponder

cocoa - 为什么NSWindow没有styleMask :NSTitledWindowMask can not be keyWindow?

linux - Mach-O在ELF/linux中的二级命名空间符号解析

macos - Mac OS X 上 Ansible 主机文件的存储位置