0

我正在尝试更深入地了解编解码器区域以及它是如何工作的。

主要驱动因素是安装编解码器包以处理某些无法播放的视频的不确定性,这最终导致无论如何都不允许播放这些文件。通过在顶部安装其他编解码器包,这通常会变得复杂。我还注意到,有时简单地重新安装编解码器包可能会导致以前可以播放的视频在重新安装编解码器包后无法播放。

我最好奇的是安装编解码器包(Shark007、CCCP、K-Lite)时在后台发生了什么——编解码器如何注册到不同的播放器,特别是 Windows 媒体播放器?WMP 内部是否有已知编解码器列表,其中添加了新编解码器?如何确定我是否有特定编码类型的特定编解码器?DirectShow 及其过滤器如何与新的编解码器协同工作?

我发现的大多数信息都是非常顶级的,大多数建议是使用编解码器包设置和/或安装其他编解码器包.. :(

任何关于该领域(书籍、链接等)的进一步信息的建议或建议将不胜感激!:)

4

1 回答 1

3

在 Windows 中,使用最广泛的多媒体 API 是 DirectShow,正如您在问题标签中指出的那样,您可能正是针对它的。还有其他 API。重要说明是 DirectShow不是Windows Media Player 的主要 API:WMP 将尝试通过 Media Foundation 播放文件,如果失败,第二次尝试将利用旧版 DirectShow。尽管如此,DirectShow 仍然是应用程序中最常用的。

在 DirectShow 中,多媒体管道是由过滤器构建的,过滤器通过它们的引脚连接成一个图形。连接的结构具有流过的数据,例如从文件到解码的视频/音频传送到设备。编解码器是此管道中经常使用的组件。

编解码器的注册是Filter Mapper子系统的权限范围。它负责所有注册并为Intelligent Connect提供连接选项- 将东西连接在一起的子系统,包括在需要时提供编解码器以及应用程序请求自动提供编解码器。

您可以在 MSDN 上的DirectShow下找到有关内部结构的最佳文档。

于 2012-04-16T10:07:55.577 回答