Какой самый простой способ преобразовать сжатый файл WAV в несжатый файл WAV в C # или C ++? - PullRequest
1 голос
/ 20 января 2009

Какой самый простой способ программно преобразовать сжатый файл WAV (например, кодек MPEG, но может быть любой установленный кодек) в несжатый файл WAV (16-битный PCM)?

Я слышал, что с помощью прямого показа и написания кода на нативном C ++ это можно сделать, но у меня не было большого опыта с прямым показом.

Есть ли более простой способ сделать это? C # это было бы идеально, но C + + тоже подойдет.

Ответы [ 2 ]

2 голосов
/ 20 января 2009

DirectShow , вероятно, является лучшим способом для декодирования, если мы говорим о Windows. DirectShow - это API-интерфейс COM, поэтому вы можете написать собственный COM-код C ++, использовать одну из доступных оболочек DirectShow .Net или использовать C ++ / CLI. Какой из них вы выберете, зависит от остальной архитектуры вашего приложения - если вам нужно использовать .Net, то C ++ / CLI, безусловно, самый простой путь. Вам действительно нужно быть более конкретным в отношении того, чего вы пытаетесь достичь - например, MPEG сам по себе не является кодеком - они просто определяют стандарты.

1 голос
/ 21 января 2009

Вы можете распаковать файлы WAV в C # с помощью любого кодека ACM, установленного на вашем ПК, используя NAudio . Вот пример кода:

using (WaveFileReader reader = new WaveFileReader(inputFileName))
{
    using (WaveStream convertedStream = 
        WaveFormatConversionStream.CreatePcmStream(reader))
    {
        WaveFileWriter.CreateWaveFile(outputFileName, convertedStream);
    }
}
...