【问题标题】:OSX Native API Video Decoding C++ [closed]OSX Native API 视频解码 C++ [关闭]
【发布时间】:2018-03-21 14:22:28
【问题描述】:

最近,我使用 Apple Core Audio C++ API 完成了一个音频解码任务。

现在我有兴趣使用带有 C++ 的本机 OSX API(Windows 操作系统上的 DirectShow 或 Media Foundation 的模拟)再次解码和获取视频文件帧的原始未压缩数据。

我查看了可用的 API(AVFoundation、Core Video 等),但找不到可以完成这项工作且可通过 C++ 访问的框架。

那么我的问题是哪个框架最适合完成这项任务?

【问题讨论】:

    标签: c++ macos avfoundation core-video


    【解决方案1】:

    您可以使用AVFoundation 的AVAssetReader 从文件中读取原始视频数据。

    您创建一个AVAssetReader,添加一个带有nil 输出设置的AVAssetReaderTrackOutput,然后调用copyNextSampleBuffer() 直到完成。

    但是,除非您有非常具体的需求,否则您不太可能发现原始编解码器视频数据非常有用。您是否尝试显示视频?在这种情况下,AVPlayerLayer / AVPlayer(AVFoundation 再次)可能是您正在寻找的。如果你想要更低级别的东西,CoreMedia/VideoToolbox 可能适合你。 AVFoundation 是一个 Objective C 框架,因此您将使用 Objective-C++,而 CoreMedia 和 VideoToolbox 是 C 框架。

    【讨论】:

    • 感谢您的回答。我不得不把这个项目搁置一段时间,现在我正在重新开始我的工作。我只需要逐帧获取像素的原始未压缩 rgb 值。我想对视频执行自定义过滤器(我自己实现的),所以原始像素数据正是我需要从输入文件中获取的。我会试试你的建议,并让你知道结果。谢谢。
    • 啊,对于帧数据,您需要传递非 nil 选项,指定 rgba(可能)。我可以更新我的答案。
    • 那太棒了。谢谢
    • 有人关闭了这个问题
    • 哦,我明白了,这很糟糕。也许我会花点时间自己调查一下(我想我可能能够处理它)。另一个简单的问题:AVFoundation vs VideoToolbox:选择哪一个(在更好的功能和更多的音频格式/编解码器支持方面)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多