Pergunta

Esta questão tem estado em minha mente por alguns anos e eu nunca realmente encontrei a resposta para isso.

O que eu gostaria de fazer é extrair o real forma de onda / PCM de um arquivo MP3, para que eu possa reproduzi-lo usando a placa de som (é claro).

O ideal seria estar experimentando alguns efeitos DSP.

Meu primeiro passo foi olhar para LAME, mas não encontrou nada relevante sobre MP3 decodificação em um programa ou coisas assim.

Então, eu estou perguntando onde eu poderia encontrar algo parecido com isso.

Que língua devo usar? Eu estava pensando C, mas talvez não são linguagens de programação lá fora, que iria fazer o trabalho de forma mais eficiente.

Obrigado!

Guillaume.

Foi útil?

Solução

A questão resume-se a:? O que você está tentando realizar

A partir da descrição de sua pergunta de decodificação de um MP3 e jogá-lo na placa de som faz com que ele soa como se você está tentando fazer um media player.

No entanto, se a sua intenção é a de brincar com efeitos DSP, então parece que a questão é mais sobre o processamento do som ao invés de decodificação de MP3. se esse for o caso, provavelmente, olhando para escrever plug-ins para jogadores de mídia existentes (tais como Windows Media player e Winamp ) seria caminho mais fácil para o que você está tentando realizar.

Francamente, aprender a escrever o seu próprio decodificador a partir do zero não é apenas um problema de programação, mas um matemático, portanto, usando bibliotecas existentes são o caminho a percorrer. Conversando com o sistema operacional ou bibliotecas como DirectSound para saída de áudio parece ser um trabalho desnecessário, se alguma coisa. Eu sinto que trabalhando em plug-ins para jogadores existentes seria o caminho a percorrer, a menos que seu objetivo é fazer o seu próprio media player.

Se o que você realmente quer realizar está jogando com dados de áudio, então, provavelmente, decodificação de um MP3 para PCM não comprimido usando qualquer decodificador MP3, em seguida, manipulá-lo na língua de sua escolha iria realizar seu objetivo de lidar com efeitos com som.

A opção de idioma vai depender se você está indo para interagir diretamente com bibliotecas de MP3 decodificação, ou se você pode apenas usar a entrada de áudio cru, o que permitirá que você use praticamente qualquer idioma de sua escolha.

Houve uma pergunta semelhante há um tempo atrás, Introdução ao programático áudio, onde eu postei uma resposta sobre algumas maneiras básicas para manipular áudio, tais como amplificação, mudando a velocidade de reprodução, e fazer algum trabalho com FFT.

Outras dicas

libmpg123 deve fazer o truque.

Tenho vindo a utilizar o Windows Media SDK, não para este fim, mas eu tenho certeza que existem ganchos deixe que lhe permitem interceptar o fluxo de áudio ou converter MP4 para WAV descompactado. Eu usei C ++.

Lotes:

http://www.mp3-tech.org/programmer/decoding.html

Escolha o seu veneno ...

Além disso, LAME faz MP3s decodificar (confira opção --decode), de modo que você pode encontrar algo interessante nessa fonte.

-Adam

Ela realmente depende em qual plataforma você está programando eo que você quer fazer com o código. Se você estiver no Windows, você deve olhar para o media formato Windows SDK ou DirectShow . Ambos devem ter a capacidade de decodificar arquivos MP3 em forma de onda crua. No Mac, eu esperaria Quicktime ter essa mesma capacidade. Outros já sugeriram fonte para Linux / código-fonte aberto.

Eu recomendaria olhando para Cubase e Wavelab tanto como irá converter MP3 para WAV etc e permitir que você brincar com a forma de onda

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