Como posso converter vídeo MP4 para áudio MP3 com o FFmpeg?

120

Preciso extrair uma faixa de áudio MP3 de um vídeo MP4 com ffmpeg. Eu posso fazer isso para .flv -> mp3, mas não conheço os parâmetros da linha de comando para mp4-> mp3. Por exemplo, flv -> mp3:

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

Quais parâmetros devo usar para mp4 -> mp3?

Steven Penny
fonte
2
Se você realmente não precisa de um MP3, eu não converteria o áudio: MP4-> MP3 é uma transformação com perdas, você perderá informações extras da fonte.
Thom Wiggers
não há mais ffmpeg para o ubuntu 14.04
Louis
@ThomWiggers é necessariamente com perdas? Eu não sei como mp4s são codificados, mas contanto que você pode separar vídeo e áudio, não deveria ter que ser
Frank
A versão original desta pergunta não estava clara como o áudio foi codificado - que foi alterado nas edições. Remoção não precisa ser com perdas.
Thom Wiggers 18/06

Respostas:

150

O comando básico é:

ffmpeg -i filename.mp4 filename.mp3

ou

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

Verifique este URL: Arquivo de vídeo MP4 para MP3 usando o ffmpeg (Ubuntu 9.10 Karmic Koala)

Nota: O Ubuntu não fornece FFmpeg, mas o fork chamado Libav . A sintaxe é a mesma - basta usar em avconvvez dos ffmpegexemplos acima.

Naga Harish M
fonte
3
Obrigado! Essa qualidade é melhor ou posso fazer melhor?
não há mais ffmpeg para o ubuntu 14.04
Louis
2
@ Louis Você ainda pode baixá-lo em ffmpeg.org/download.html
slhck 22/11/14
11
@Louis - o mesmo para 14.10, mas aparentemente está retornando em 15.04: askubuntu.com/questions/432542/…
Wilf
52

A melhor maneira de codificar MP3 é usar -q:apara taxa de bits variável.

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

A qopção pode ser usada apenas com libmp3lame e corresponde à -Vopção LAME . Vejo:

Steven Penny
fonte
@ slhck ... esse é um bom argumento, mas acabei de testar em um arquivo de vídeo e deixar de fora -vnapenas copia o fluxo de áudio. Suponho ffmpeg deve ter alguma maneira de detectar a diferença (Eu verifiquei apenas um arquivo com ffprobe, eo vídeo foi o fluxo 1 ao invés do habitual 0, e teve alguns metadados: comment : Cover (front))
evilsoup
Este finalmente tocou também o player de música Android. Graças
michalzuber
11
E para converter o diretório inteiro (incluindo nomes de arquivos com espaços) com o comando acima: para i em * .mp4; do ffmpeg -i "$ i" -q: a 0 -map a "$ (nome da base" $ {i / .mp4} "). mp3"; feito;
Regicida
Como o ffmpeg -i vid.mp4 audio.mp3arquivo .mp3 resultante é diferente do comando vanilla na resposta de @Naga Harish M? Menos perdas?
frank