Extraer audio de un video MP4 sin volver a codificar

¿Cómo extraer/descargar/copiar una pista de audio de un archivo de video MP4 (MPEG-4) sin necesidad de transcodificar/re-codificacar?

Extraer audio de un video MP4 sin volver a codificar


Problema

Tengo un archivo .mp4 (MPEG-4) de vídeo y quiero su pista de audio. No estoy interesado en la pista de vídeo. Hay varias herramientas disponibles que nos permiten extraer pistas individuales de un vídeo MP4, pero si a continuación, queremos guardar el track de audio extraído en un archivo separado, no podremos evitar volver a codificar los datos de audio, causando una pérdida evitable de calidad. Apple QuickTime Pro es un ejemplo de este tipo.

Solución

Después de mucha investigación, finalmente me encontré con una herramienta que ofrece varias manipulaciones de archivos MP4, y es gratis también. La herramienta se llama MP4Box y es parte del paquete libre GPAC (Project on Advanced Content).

http://gpac.sourceforge.net/index.php

Es una herramienta de línea de comandos y solo está disponible en código fuente, pero yo voy a explicar cómo usarlo. Si estás usando Windows, se hacen versiones listas en GUI de esta herramienta, por ejemplo, Yamb (Yet Another MP4Box UI).

Uso básico y ejemplos de uso de MP4Box: http://gpac.sourceforge.net/packager.php

Cómo se hace

1. Descarga código fuente de GPAC desde http://gpac.sourceforge.net/home_download.php. Obtener el archivo genérico (tar.gz). No necesitas las librerías de terceras partes, al menos no para compilar y ejecutar MP4Box.

2. Extrae el archivo tar.gz haciendo doble clic en él. O desde linea de comandos con:
tar -xvzf achivo.tar.gz


3. Abre una terminal de comandos y cambia a la carpeta donde has desempaquetado los fuentes tecleando cd y arrastrando la carpeta que descomprimidos en la ventana de Terminal, y oprimir la tecla Enter. O simplemente tipeando en la terminal de comandos:
cd /ruta/a/la/carpeta/con/el/contenido/descomprimido


4. Después introduce los siguientes comandos:
chmod u+x configure; ./configure; make; sudo make install


5. Eso es todo para la instalación. Ahora tienes el paquete GPAC en tu sistema. Contiene una serie de diferentes y muy poderosos instrumentos para diversos usos, pero sólo nos preocupa la herramienta MP4Box por ahora (la cual es muy poderosa en sí misma).

6. Para extraer el audio de un vídeo MP4, simplemente introduce el siguiente comando en la terminal:
mp4box -single [trackID] video.mp4

Sustituye video.mp4 por el nombre real del archivo .mp4 o la ruta completa al mismo, del cual deseas extraer el audio. Para [trackID], es necesario introducir el ID (número) del track que contiene el audio. Con todos los archivos que he probado, éste siempre era la pista 1 (sólo pone 1 ). Si no estás seguro, puedes averiguar qué temas contiene el MP4, y sus IDs, haciendo:
mp4box -info video.mp4


A continuación obtendras un nuevo archivo .mp4 con el mismo nombre que el archivo del video, pero con el añadido de _track[trackID] y que contiene nada más que la pista de audio sin cambios (que suele ser de audio AAC). Te recomiendo que cambies la extensión del archivo a .m4a (MPEG-4 Audio) debido a que algunos dispositivos de audio ignoran ficheros MPEG4 distintos de .m4a .

Eso es todo!

5 comentarios - Extraer audio de un video MP4 sin volver a codificar

@balta51
esto funciona con linux ubuntu 10.04
@kmm165
muy interesante la verdad, lo probaré en debian
@alejoreba
Bastante complicado, pero vale la pena probarlo. Gracias.
@analu99 +1
Todo está muy bien sólo quiero aclararte que mp4 no es igual a mpeg-4. El MPEG-4 es un video mientras que el mp4 es un contenedor