我有一个应该播放audio文件的C#程序。 我已经想出了如何使用DirectShow播放Windows有编解码器的任何声音文件,但现在我想在“打开”对话框中正确填写文件typesfilter框。 我想自动列出Windows有一个编解码器的任何文件格式。 如果某个随机用户安装了一个模糊格式的编解码器,则其相关的扩展名和文件types描述需要显示在列表中。
有任何想法吗?
如果我没有记错,编解码器不知道哪些文件类型,即文件扩展名,它支持,因为一个编解码器需要一些流作为输入,而不是一个文件。 所以,如果你想要显示支持的音频文件格式的文件扩展名,你很可能是运气不好,除非你有一个广泛的文件扩展名和相关的编解码器的列表,但即使如此,你会遇到问题的容器格式和所有这一切。
例如,我的Windows媒体播放器愉快地播放m4b文件,但不知道任何关于它们。 我不得不手动将它与文件类型相关联。
您可以在Windows注册表中查找内容类型为“audio / *”的所有文件类型。 具体来说,查看HKCR / Software / * / Content Type下的所有密钥。
只需使用mm编解码器apis。 切勿使用注册表。
您可以使用NAudio开源.NET音频库来枚举系统上安装的所有ACM编解码器。 看看AcmDriver
类。