Tente isto:
ffmpeg -i video.mp4 -vn -sn -c:a mp3 -ab 192k audio.mp3
Eu usei isso para o mesmo propósito e isso não alterou a duração do áudio. Além disso, (IMHO) tentando aumentar a qualidade é apenas um exagero, mas você pode tentar com 320k.
Eu tenho um arquivo de vídeo, video.mp4
. Tem 18 minutos e 23 segundos de duração. Estou procurando extrair o somente áudio desse vídeo e criar um MP3 da maior qualidade possível a partir do áudio do vídeo.
Alguns googlefu me levam a este comando: ffmpeg -i video.mp4 audio.mp3
O problema é que, esse comando duplica o comprimento do áudio que é emitido (a duração é de 36 minutos e 46 segundos). Ele faz o loop da trilha de áudio uma vez, então a saída contém todos os 18 minutos e 23 segundos de áudio, e imediatamente inicia os 18 minutos e 23 segundos de áudio novamente.
Mais alguns googlefu me levam a esse sinalizador: -write_xing 0
de essa pergunta SO , mas mesmo com essa bandeira, ainda faz o loop do áudio.
EDITAR : googlefu e eu parecendo pensar que tem algo a ver com 2 canais de áudio (e talvez o canal 2 em loop imediatamente após o canal 1, ao invés de mesclar os dois) me levar a esta bandeira : -ac 1
para forçá-lo a mesclar estéreo - > mono. Isso também não funcionou, e ainda produz um arquivo MP3 de 38 minutos e 46 segundos.
Como posso extrair (para MP3) o áudio de um arquivo de vídeo, sem dobrar a duração?
Tente isto:
ffmpeg -i video.mp4 -vn -sn -c:a mp3 -ab 192k audio.mp3
Eu usei isso para o mesmo propósito e isso não alterou a duração do áudio. Além disso, (IMHO) tentando aumentar a qualidade é apenas um exagero, mas você pode tentar com 320k.
O Google apresentou alguns relatórios de erros no ffmpeg Trac que mostram que -write_xing 0 em sua linha de comando do ffmpeg também pode corrigi-lo. Parece que a discrepância no comprimento decorre de valores incorretos nos dados do Xing sendo gravados por padrão.
Tags ffmpeg