ffmpeg converte uma parte do arquivo de vídeo para um arquivo de áudio

0

Eu tenho um arquivo de vídeo (duração de 1 hora). Eu preciso de qualquer parte do arquivo de vídeo (30 min) para ser convertido 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

    
por Amarnath R 03.12.2013 / 07:31

3 respostas

2

Se você precisa apenas de áudio (espero que tenha entendido corretamente), então você não precisa do primeiro passo. Se você usa:

ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -vn -acodec copy /opt/b.mp3

ele fará isso desde que o codec de áudio original seja mp3. Se não, você pode forçar a re-codificaçã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.

    
por 03.12.2013 / 15:06
1

Existem dois métodos principais para obter apenas o vídeo ou áudio de um arquivo que contenha ambos. Por padrão, o comportamento seleção de fluxo 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 conter vários de cada um desses tipos de fluxos; 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 á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
  • Esses exemplos transmitem a cópia do fluxo desejado. Isto significa que o ffmpeg simplesmente irá re-muxar em vez de re-codificar. Isso é muito rápido e, como é essencialmente "copiar e colar", isso não afeta a qualidade.

  • O uso de -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

A opção -map 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 um especificador 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 fluxo informando ao ffmpeg para incluir apenas a partir da primeira entrada 0 dos fluxos de vídeo v . Isso pode ser estendido ainda mais. Usar 0:v:0 significa first 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 fluxos em sua entrada.

  • Você também pode usar mapeamentos negativos. Usar -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 entrada 0 (a primeira entrada) e -map -0:a:1 diz ao ffmpeg para ignorar o primeiro fluxo de áudio da primeira entrada.

por 03.12.2013 / 20:16
0

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
    
por 03.12.2013 / 08:39

Tags