¿Cómo capturar el canal de audio de un archivo de video MP4 en un archivo de audio separado?

¿Cómo capturar el canal de audio de un archivo de video MP4 en un archivo de audio separado?

Después de descargar un videoclip MPEG4 (contenedor MP4, video H264 AVC, audio AAC) de YouTube, ¿cómo separar su canal de audio en un archivo de audio independiente (preferiblemente sin descomprimir el audio) con herramientas gratuitas de Linux?

Respuesta1

Teniendo en cuenta los vídeos de Youtube, puede que no sea necesario extraer el audio del vídeo, ya quelas pistas de audio se pueden descargar por separadocomo tal usando Firefox con el último complemento Flashgot o usandomps-youtube(es una herramienta destinada a reproducir y descargar pistas de audio de youtube: másaquí).


Considerando archivos de video mp4:

Como respondióaquí, podemos usar un comando más genérico sin la necesidad de nombres específicos de los archivos y agregarlo al menú personalizado del Administrador de archivos, como:

ffmpeg -i "$0" -map 0:1 -c:a copy "${0%%.*}".m4a

(Es preferible usarlo, .m4aya que se admite en mayor medida como contenedor para .aac, pero puede usar el raw .aacen su lugar si lo desea).

Además, este comando ejecutado en una terminal extraerá pistas de audio de todos los archivos mp4 en la carpeta actual:

for i in *.mp4; do ffmpeg -i "${i}" -map 0:1 -c:a copy "${i%.mp4}.m4a"; done

(aquíla publicación fuente)


Vea comentarios e información relacionada en las respuestas y preguntas vinculadas sobre cómo usar dichos comandos en los menús contextuales de los administradores de archivos.


Los comandos anteriores y otros similares también se pueden utilizar para extraer audio de otros tipos de archivos de vídeo, reemplazando en consecuencia las extensiones de entrada y salida.

El primer comando también funciona como tal flv; pero para otros videos, simplemente reemplácelo m4acon el audio que contenga el videoclip. El segundo comando necesita reemplazar las extensiones de video y audio si se aplica a diferentes tipos de archivos de video.

Por lo general, mp4los flvarchivos contienen aacaudio, Webmlos archivos contienen oggy avilos archivos contienen mp3audio. Para estar seguro del audio que contiene el vídeo, utilice mediainfo:mediainfo-GUI, o simplemente instalar mediainfoy en Terminal: mediainfo <file>.

Respuesta2

Si sabes que solo hay una transmisión de audio y que es aac, entonces solo necesitas esto:

ffmpeg -acodec copy -i "movie.mp4" -y "audio.aac"

Si desea escribir el primer ID de transmisión de audio y el tipo de códec/extensión de archivo, puede usar esto:

eval $(ffmpeg -i "movie.mp4" 2>&1 |awk '/Stream.*Audio/{print "stream=" $2 ";codec=" $4}' |head -n1)
stream=${stream:1}; stream=${stream/:/}
extn=${codec/,/}; [[ $extn == "aac" ]] || 
    { echo "You need to manually set the fiie extension. Codec type is: $codec"; exit 1; } 

ffmpeg -map $stream -acodec copy -i "movie.mp4" "audio.$extn"

información relacionada