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.