O comando ffmpeg converte uma parte do arquivo de vídeo em um arquivo de áudio

O comando ffmpeg converte uma parte do arquivo de vídeo em um arquivo de áudio

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_parametersterá 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.


-vnou-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 -vne -annã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-mapopção pode parecer mais complicada, mas é mais flexível e útil. Por exemplo, -vndiz ao ffmpeg para omitir apenas o(s) fluxo(s) de vídeo, mas usando umespecificador de fluxo -mappode 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 entrada 0os streams de vídeo v. Isso pode ser estendido ainda mais. Usar 0:v:0meios first input:video:first video streame 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:1mapearia todos os fluxos, exceto o segundo fluxo de áudio. -map 0diz ao ffmpeg para incluir todos os fluxos da entrada 0(a primeira entrada) e -map -0:a:1depois 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

informação relacionada