
Eu tenho um arquivo de vídeo (duração de 1 hora). Preciso que qualquer parte do arquivo de vídeo (30 min) seja convertida em arquivo de áudio
ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -vcodec copy -acodec copy /opt/b.mp4
então eu usei
ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -acodec copy /opt/b.mp4
Mas ainda posso ver o vídeo junto com o áudio. Eu preciso apenas de arquivos de áudio
Responder1
Se você precisa apenas de áudio (espero ter entendido direito), então não precisa da primeira etapa. Se você usar:
ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -vn -acodec copy /opt/b.mp3
isso vai aconteceroferecidoo codec de áudio original era mp3. Caso contrário, você pode forçar a recodificação:
ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -vn -acodec libmp3lame ...other_parameters.. /opt/b.mp3
O other_parameters
terá taxas de bits etc.
Responder2
Existem dois métodos principais para obter apenas o vídeo ou áudio de um arquivo que contém ambos. Por padrão oseleção de fluxoo comportamento no ffmpeg selecionará um fluxo por tipo de fluxo. Observe que as entradas podem conter vários tipos de fluxo: vídeo, áudio, legenda e dados. Algumas entradas podem até conter vários desses tipos de fluxo; como dois fluxos de vídeo.
-vn
ou-an
Essas opções dizem ao ffmpeg para omitir o vídeo ( -vn
) ou o áudio ( -an
).
Para omitir o vídeo e copiar o áudio:
ffmpeg -i input -vn -codec:a copy output.mka
Para omitir o áudio e copiar o vídeo:
ffmpeg -i input -an -codec:v copy output.mkv
Estes exemplos irãocópia do fluxoo fluxo desejado. Isso significa que o ffmpeg irá simplesmente re-muxá-lo em vez de recodificar. Isso é muito rápido e, como se trata essencialmente de “copiar e colar”, não afetará a qualidade.
Usar
-vn
e-an
não omitirá outros fluxos que possam estar presentes, como legendas ou fluxos de dados, mas os formatos somente de áudio os ignorarão de qualquer maneira.
-map
O-map
opção pode parecer mais complicada, mas é mais flexível e útil. Por exemplo, -vn
diz ao ffmpeg para omitir apenas o(s) fluxo(s) de vídeo, mas usando umespecificador de fluxo -map
pode dizer ao ffmpeg para omitir tudo, exceto o fluxo desejado.
Para copiar apenas o vídeo:
ffmpeg -i input -map 0:v -codec copy output.mkv
Para copiar apenas o áudio:
ffmpeg -i input -map 0:a -codec copy output.mka
O
0:v
é um especificador de stream que diz ao ffmpeg para incluir apenas desde a primeira entrada0
os streams de vídeov
. Isso pode ser estendido ainda mais. Usar0:v:0
meiosfirst input:video:first video stream
e seria útil se sua entrada contivesse vários fluxos de vídeo e você desejasse apenas o primeiro. Consulte a saída do console ffmpeg para descobrir a ordem dos streams em sua entrada.Você também pode usar mapeamentos negativos. O uso
-map 0 -map -0:a:1
mapearia todos os fluxos, exceto o segundo fluxo de áudio.-map 0
diz ao ffmpeg para incluir todos os fluxos da entrada0
(a primeira entrada) e-map -0:a:1
depois diz ao ffmpeg para ignorar o primeiro fluxo de áudio da primeira entrada.
Responder3
A primeira parte está certa. Na segunda parte extraia o áudio apenas para o arquivo b.mp4.
ffmpeg -i b.mp4 -vn -acodec copy audio_b.mp3