ffmpeg: selecione (-map) faixa de áudio por codec id

0

Como posso usar a opção ffmpeg -map para selecionar a faixa de áudio por seu codec?

Digamos que haja um video.mkv com um fluxo de vídeo (0) e três faixas de áudio (1, 2, 3).

As faixas de áudio têm codecs diferentes, digamos DTS, AAC e AC-3 (em qualquer ordem).

Eu quero produzir um arquivo de saída com o fluxo de vídeo -map 0:0 e somente da trilha AAC, algo como:

ffmpeg -i video.mkv -map 0:0 -map 0:aac -codec copy output_with_aac_audio.mkv

No cenário real, não sei qual é a faixa AAC (1, 2 ou 3).

    
por Azevedo 11.02.2016 / 18:38

1 resposta

2

Como Tom Yan mencionou em seu comentário, você pode usar ffprobe para obter os índices de fluxo:

$ ffprobe -loglevel error -select_streams a -show_streams -show_entries stream=index,codec_name:tags=:disposition= -of csv input.mkv
stream,1,vorbis
stream,2,aac
stream,3,mp3

Suponho que você esteja usando o Linux, portanto, adicionar awk fornecerá apenas o (s) índice (s) do (s) fluxo (s) aac. Neste exemplo, o resultado mostra o fluxo aac como índice de fluxo 2 :

$ ffprobe -loglevel error -select_streams a -show_streams -show_entries stream=index,codec_name:tags=:disposition= -of csv input.mkv | awk -F',' '/aac/ {print $2}'
2

Em seguida, use -map 0:2 no seu comando ffmpeg .

    
por 11.02.2016 / 21:36