Qual é a maneira mais fácil de converter um arquivo wav compactado em um arquivo wav descompactado em C # ou C ++?

StackOverflow https://stackoverflow.com/questions/461773

Pergunta

O que é a maneira mais fácil para programaticamente converter um arquivo wav comprimido (MPEG codec por exemplo, mas poderia ser qualquer codec instalado) para um arquivo wav descompactado (16 bits PCM)?

Eu ouvi que o uso de programa direto e escrever o código em C ++ nativo faria isso, mas eu não tive muita experiência com o programa direto.

Existe uma maneira mais fácil de fazer isso? C #, que seria o ideal, mas C ++ também seria bem também.

Foi útil?

Solução

Você pode descompactar arquivos WAV em C # usando qualquer ACM codec instalado no seu PC usando NAudio . Aqui está um código de exemplo:

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

Outras dicas

DirectShow é provavelmente a melhor maneira para fazer a decodificação, assumindo que estamos falando do Windows. DirectShow é uma API COM, assim você pode escrever C ++ nativo código COM, você pode usar um dos disponíveis DirectShow .Net invólucros ou você poderia usar C ++ / CLI. Qual você escolhe depende do resto da sua arquitetura de aplicação - se você precisa usar Net, em seguida, C ++ / CLI é definitivamente o caminho mais fácil. Você realmente precisa ser um pouco mais específico sobre o que você está tentando alcançar - por exemplo, MPEG si não é um codec -. eles apenas definir padrões

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top