¿Cómo puedo convertir video MP4 a audio MP3 con FFmpeg?

120

Necesito extraer una pista de audio MP3 de un video MP4 con ffmpeg. Puedo hacer esto para .flv -> mp3, pero no conozco los parámetros de la línea de comandos para mp4-> mp3. Por ejemplo, flv -> mp3:

ffmpeg -i video.flv -acodec copy audio.mp3

¿Qué parámetros debo usar para mp4 -> mp3?

Steven Penny
fuente
2
Si realmente no necesita un MP3, no convertiría el audio: MP4-> MP3 es una transformación con pérdida, perderá información de origen adicional.
Thom Wiggers
no más ffmpeg para ubuntu 14.04
Louis
@ThomWiggers ¿es necesariamente con pérdida? No sé cómo se codifican los mp4, pero siempre que pueda separar el video y el audio, no debería ser así
franco
La versión original de esta pregunta no tenía claro cómo se codificó el audio, eso se modificó en las ediciones. Remuxing no tiene que ser con pérdidas.
Thom Wiggers

Respuestas:

150

El comando básico es:

ffmpeg -i filename.mp4 filename.mp3

o

ffmpeg -i video.mp4 -b:a 192K -vn music.mp3

Verifique esta URL: Video MP4 a archivo MP3 usando ffmpeg (Ubuntu 9.10 Karmic Koala)

Nota: Ubuntu no suministra FFmpeg, pero la bifurcación llamada Libav . La sintaxis es la misma: solo use en avconvlugar de ffmpegpara los ejemplos anteriores.

Naga Harish M
fuente
3
¡Gracias! ¿Esta calidad es la mejor, o puedo hacerlo mejor?
no más ffmpeg para ubuntu 14.04
Louis
2
@Louis Todavía puede descargarlo desde ffmpeg.org/download.html
slhck
1
@Louis: lo mismo para 14.10, pero aparentemente regresa en 15.04: askubuntu.com/questions/432542/…
Wilf
52

La mejor manera de codificar MP3 es utilizarlo -q:apara una velocidad de bits variable.

ffmpeg -i k.mp4 -q:a 0 -map a k.mp3

La qopción solo se puede usar con libmp3lame y corresponde a la -Vopción LAME . Ver:

Steven Penny
fuente
@slhck ... ese es un buen punto, pero acabo de probar en un archivo de video, y omitiendo -vnsolo copia la transmisión de audio. Supongo ffmpeg deben tener alguna forma de detectar la diferencia (que acaba de comprobar un archivo con ffprobe, y el video fue la corriente 1 en lugar del habitual 0, y tenía algo de metadatos: comment : Cover (front))
evilsoup
Este finalmente jugó también el reproductor de música Android. Gracias
michalzuber
1
Y para convertir todo el directorio (incluidos los nombres de archivo con espacios) con el comando anterior: para i en * .mp4; do ffmpeg -i "$ i" -q: a 0 -map a "$ (nombre base" $ {i / .mp4} "). mp3"; hecho;
kingSlayer
¿Cómo es el .mp3 resultante diferente del comando vanilla ffmpeg -i vid.mp4 audio.mp3en la respuesta de @Naga Harish M? ¿Menos con pérdida?
Frank