Como auto-selecionar o fluxo de áudio / legenda (selecionado usando a linguagem spefic) ao processar o ffmpeg?

1

como exemplo: eu tenho 2 vídeos MKV com 3 fluxos de áudio (inglês, francês e mandarim) 2 streams de legendas (inglês e mandarim)

Os fluxos podem aparecer em qualquer ordem. como no primeiro vídeo, o mandarim é o primeiro fluxo de áudio, mas no segundo está usando o francês. Mesma situação com legendas.

O que eu quero para auto-selecionar o áudio em mandarim e legenda em inglês sem ter que especificar o número do fluxo (como usar -map talvez?).

Isso é possível? Se sim, como?

Obrigado!

    
por mrjayviper 16.11.2017 / 15:10

1 resposta

0

Isso não pode ser feito no momento com um único comando. No entanto, há uma solução alternativa com vários comandos.

ffmpeg -i in.mkv -map 0:m:language=chi? -c copy chi.mkv

ffmpeg -i in.mkv -map 0:m:language=eng? -map -0:v -c copy eng.mkv

ffmpeg -i in.mkv -i chi.mkv -i eng.mkv -map 0:v -map 1:a? -map 2:s? -c copy final.mkv

O primeiro comando extrai todos os fluxos de idioma chinês, se houver, para um MKV temporário.

O segundo comando extrai todos os fluxos de idioma inglês, se houver algum, exceto o vídeo em um MKV temporário.

O comando final mapeia o vídeo do arquivo original, o áudio do arquivo temporário de idioma chinês e a legenda do arquivo temporário em inglês.

    
por 16.11.2017 / 15:54

Tags