Pregunta

Esta pregunta ha estado en mi mente durante algunos años y nunca encontré la respuesta.

Lo que me gustaría hacer es extraer la forma de onda/PCM real de un archivo MP3, para poder reproducirlo usando la tarjeta de sonido (por supuesto).

Lo ideal sería experimentar algunos efectos DSP.

Mi primer paso fue investigar LAME, pero no encontré nada relevante sobre la decodificación de MP3 en un programa o cosas así.

Entonces pregunto dónde puedo encontrar algo como esto.

¿Qué idioma debo usar?Estaba pensando en C, pero tal vez existan lenguajes de programación que harían el trabajo de manera más eficiente.

¡Gracias!

Guillaume.

¿Fue útil?

Solución

La cuestión se reduce a: ¿qué estás tratando de lograr

A partir de la descripción de su pregunta de decodificar un MP3 y jugar en la tarjeta de sonido hace que suena como si usted está tratando de hacer un reproductor de medios.

Sin embargo, si su intención es jugar con los efectos DSP, entonces suena como la cuestión es más sobre el procesamiento del sonido en lugar de decodificación de archivos MP3. Si ese es el caso, probablemente en busca de escritura en plug-ins para reproductores de medios existentes (por ejemplo, reproductor de Windows Media y Winamp ) habría ruta más fácil de lo que está tratando de lograr.

Francamente, aprender a escribir su propio decodificador desde cero no es sólo un problema de programación matemática, sino una, así que usar las bibliotecas existentes son el camino a seguir. Hablando con el sistema operativo o las bibliotecas como DirectSound para emitir audio parece que el trabajo innecesario si nada. Siento que el trabajo en plug-ins para los jugadores existentes sería el camino a seguir, a menos que su objetivo es hacer su propio reproductor de medios de comunicación.

Si lo que realmente quiere lograr es jugar con los datos de audio, entonces probablemente decodificar un MP3 a PCM sin compresión utilizando cualquier decodificador de MP3, a continuación, manipulándola en el idioma de su elección sería lograr su objetivo de hacer frente a los efectos con sonido.

La elección de la lengua va a depender de si se va a interactuar directamente con las bibliotecas de decodificación MP3, o si sólo se puede utilizar la entrada de audio en bruto, lo que permitirá utilizar casi cualquier idioma de su elección.

Hubo una pregunta similar hace un tiempo, Iniciación a la programación de audio, donde he publicado una respuesta en algunas formas básicas para manipular audio, tales como la amplificación, el cambio de velocidad de reproducción, y haciendo algún trabajo con FFT.

Otros consejos

libmpg123 debe hacer el truco.

He estado usando el SDK de Windows Media, no para este propósito, pero estoy bastante seguro de que hay enlaces que le permiten interceptar la transmisión de audio o convertir MP4 a WAV sin comprimir.Usé C++.

Lotes:

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

Escoja su veneno ...

Además, LAME MP3 hace decodificar (echa un vistazo a la opción --decode), por lo que podría encontrar algo interesante en esa fuente.

-Adán

Depende realmente qué plataforma se está programando en y lo que quiere hacer con el código. Si está en Windows, debe consultar la de Windows Media Format SDK o DirectShow . Deben ambos tienen la capacidad de decodificar archivos mp3 en la forma de onda en bruto. En el Mac, yo esperaría Quicktime tener esta misma capacidad. Otros ya han sugerido fuente de código fuente de Linux / abierta.

Yo recomendaría mirando Cubase y Wavelab ya que tanto va a convertir MP3 a WAV, etc y le permitirá jugar con la forma de onda

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top