OSX 本机 API 视频解码 C++
OSX Native API Video Decoding C++
最近使用Apple Core Audio C++完成了一个音频解码任务API。
现在我有兴趣使用原生 OSX API 和 C++(类似于 DirectShow 或 Media Foundation Windows OS).
我查看了可用的 APIs(AVFoundation、Core Video 等),但找不到可以完成这项工作并可通过 C++ 访问的框架。
所以我的问题是哪个框架最适合完成这项任务?
您可以使用 AVFoundation
的 AVAssetReader
从文件中读取原始视频数据。
您创建了一个 AVAssetReader
,添加了一个带有 nil
输出设置的 AVAssetReaderTrackOutput
,然后调用 copyNextSampleBuffer()
直到完成。
但是,除非您有非常具体的需求,否则您不太可能会发现原始编解码器视频数据非常有用。您是否要显示视频?在这种情况下,AVPlayerLayer
/ AVPlayer
(再次是 AVFoundation
)可能就是您要查找的内容。如果您想要更低级别的内容,CoreMedia
/VideoToolbox
可能适合您。 AVFoundation
是一个 objective c 框架,因此您将使用 objective-c++,而 CoreMedia
和 VideoToolbox
是 C 框架。
最近使用Apple Core Audio C++完成了一个音频解码任务API。
现在我有兴趣使用原生 OSX API 和 C++(类似于 DirectShow 或 Media Foundation Windows OS).
我查看了可用的 APIs(AVFoundation、Core Video 等),但找不到可以完成这项工作并可通过 C++ 访问的框架。
所以我的问题是哪个框架最适合完成这项任务?
您可以使用 AVFoundation
的 AVAssetReader
从文件中读取原始视频数据。
您创建了一个 AVAssetReader
,添加了一个带有 nil
输出设置的 AVAssetReaderTrackOutput
,然后调用 copyNextSampleBuffer()
直到完成。
但是,除非您有非常具体的需求,否则您不太可能会发现原始编解码器视频数据非常有用。您是否要显示视频?在这种情况下,AVPlayerLayer
/ AVPlayer
(再次是 AVFoundation
)可能就是您要查找的内容。如果您想要更低级别的内容,CoreMedia
/VideoToolbox
可能适合您。 AVFoundation
是一个 objective c 框架,因此您将使用 objective-c++,而 CoreMedia
和 VideoToolbox
是 C 框架。