媒体基础外部编解码器支持

Media Foundation external codec support

我使用 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。