Ошибка NAudio: "NoDriver вызывает acmFormatSuggest"

У меня есть проект, который использует NAudio для преобразования из mp3 в wav. (используя WaveFormatConversionStream.CreatePcmStream() способ)

он отлично работал на моей машине разработки, но теперь я пробую его на новом новом сервере и бросаю эту ошибку:

NAudio.MmException: NoDriver вызывает acmFormatSuggest
в Наудио.MmException.Попробуйте (результат MmResult, строковая функция)
в Наудио.Волна.Компрессия.AcmStream.SuggestPcmFormat(WaveFormat сжатый формат)
на NAudio.Волна.WaveFormatConversionStream.CreatePcmStream(WaveStream sourceStream)

Я предполагаю, что здесь есть некоторая зависимость, которая нужна NAudio, которая не находится на новом сервере. Что это и где я должен установить его?

сервер-это недавно созданный 32-разрядный экземпляр Amazon EC2 Windows 2008 с установленными ролями "веб-сервер" и "сервер приложений".

3 ответов


запуск Windows 2008 R2, используя Naudio для определения длины WAV и Mp3-файлов, я столкнулся с той же проблемой.

Я решил это, следуя этому:https://technet.microsoft.com/en-us/library/cc772567.aspx

по существу, установите функцию" Desktop Experience".

вышеуказанное потребует перезагрузки сервера.

Как только выше было установлено, мне не нужно было ничего включать дальше, проблема была решена.


WaveFormatConversionStream использует кодеки ACM, установленные на вашем компьютере. Он начинается с вопроса, установлен ли какой-либо кодек ACM, который может конвертировать из источника в целевой формат. Казалось бы, вам не хватает MP3-кодека на целевом компьютере.

NAudio предлагает другой способ декодирования mp3-файлов, используя DMO MP3-декодер (DirectX Media Object), который также может быть на вашем целевом компьютере. Чтобы использовать это, вам нужно получить последний источник NAudio от Codeplex и в MP3FileReader (который теперь выполняет преобразование в PCM для вас), вы берете следующую строку:

decompressor = new AcmMp3FrameDecompressor(this.Mp3WaveFormat); 

и заменить

decompressor = new DmoMp3FrameDecompressor(this.Mp3WaveFormat); 

благодаря @Shiroy, я нашел удивительный NLayer (https://github.com/naudio/NLayer) библиотека @MarkHeath. Если вы установите его с NLayer.NAudioSupport, вы можете сжать с одной дополнительной строкой кода (и никаких установленных кодеков не требуется).