mba*_*ros 2 windows video winapi decoding ms-media-foundation
我已经使用 Media Foundation API 编写了一个程序,该程序采用 AVI 文件并将其视频样本解码为未压缩的 RGB 帧。
最近,我发现了一个包含音频和视频轨道的 AVI 文件,但 Windows Media Player 没有播放视频轨道(正在播放音频)。
我试图用另一个播放器(Gom Player)打开文件,它建议我下载额外的编解码器包:LEAD MJPG/MCMP Video Codec。安装后 WMP 开始解码和播放视频轨道。但在那之后,我再次无法使用 MF API 解码文件。
我的猜测是 Media Foundation 仅限于 Windows 提供的内容。那正确吗?
另外,是否有一种方法可以告诉 Media Foundation 使用外部安装的编解码器进行解码?
Media Foundation API 提供可扩展性,但是 Media Foundation 可接受的编解码器需要提供相应的格式:它们应该可用并注册为 Media Foundation 转换。这是一种罕见的情况,因为 Media Foundation 总体上并不流行,而且大多数可下载的编解码器都有 DirectShow API 接口或 Video For Windows API 接口,但不是 Media Foundation 的接口。
如果您有合适的编解码器,Media Foundation 会选择它。
Windows Media Player 尝试通过 Media Foundation 播放,如果失败,则回退到 DirectShow。这解释了为什么可下载编解码器修复了 Windows Media Player 而不是 Media Foundation。