我有一个应该播放音频文件的 C# 程序。我已经弄清楚如何使用 DirectShow 播放 Windows 具有编解码器的任何声音文件,但现在我想正确填写“打开”对话框上的文件类型过滤器框。我想自动列出 Windows 具有编解码器的任何文件格式。如果某个随机用户安装了一个晦涩格式的编解码器,则其相关的扩展名和文件类型描述需要显示在列表中。
有任何想法吗?
如果我没记错的话,编解码器不知道它支持哪些文件类型,即文件扩展名,因为编解码器将一些流作为输入,而不是实际的文件。因此,如果您想要显示支持的音频文件格式的文件扩展名,除非您拥有大量文件扩展名和相关编解码器的列表,否则您很可能会不走运,但即便如此,您也会遇到容器问题格式等等。
例如,我的 Windows Media Player 可以愉快地播放 m4b 文件,但对它们一无所知。我必须手动将它与文件类型相关联。
您可以使用NAudio开源 .NET 音频库来枚举系统上安装的所有 ACM 编解码器。看看AcmDriver
课堂。
只需使用 mm 编解码器 api。永远不要使用注册表。
您可以在 Windows 注册表中查找内容类型为“audio/*”的所有文件类型。具体来说,查看 HKCR/Software/*/Content Type 下的所有键。