У меня есть программа на C#, которая должна воспроизводить аудиофайлы. Я понял, как воспроизвести любой звуковой файл, для которого Windows имеет кодек, с помощью DirectShow, но теперь я хочу правильно заполнить поле фильтра типа файла в диалоговом окне «Открыть». Я хотел бы автоматически отображать любой формат файла, для которого в Windows есть кодек. Если какой-то случайный пользователь устанавливает кодек для непонятного формата, в списке должны появиться связанные с ним расширения и описание типа файла.
Есть идеи?





Если я правильно помню, кодек не знает, какие типы файлов, то есть расширения файлов, он поддерживает, поскольку кодек принимает в качестве входных данных некоторый поток, а не файл. Поэтому, если вы хотите отображать расширения файлов поддерживаемых форматов аудиофайлов, вам, скорее всего, не повезет, если у вас нет обширного списка расширений файлов и связанных кодеков, но даже тогда у вас возникнут проблемы с контейнером. форматы и все такое.
Например, мой проигрыватель Windows Media успешно воспроизводит файлы m4b, но ничего о них не знает. Пришлось вручную связать его с типом файла.
Вы можете поискать в реестре Windows все типы файлов с типом содержимого «audio / *». В частности, просмотрите все ключи в разделе HKCR / Software / * / Content Type.
Просто используйте mm codec apis. Никогда не используйте реестр.
Вы можете использовать аудио-библиотеку .NET с открытым исходным кодом NAudio для перечисления всех кодеков ACM, установленных в вашей системе. Взгляните на класс AcmDriver.