FFMPEG executa um filtro de vídeo e copia apenas um fluxo de legendas

0

Eu tenho um .mkv com 1 fluxo de vídeo, 2 fluxos de áudio e 12 faixas de legenda.

Eu quero transformá-lo em escala de cinza, basta usar a primeira faixa de áudio e usar a faixa de legenda eng 6 (de acordo com ffmpeg -i , isso é rotulado como stream 0:11)

Estou executando um filtro para transformar o vídeo em escala de cinza (tirado de ffmpeg documentation), que funciona bem e, por padrão, está escolhendo o fluxo de áudio correto, então estou bem lá, mas também parece escolha a primeira faixa de legendas, que não é a faixa de legendas que eu quero.

Os tópicos on-line sobre legendas tendem a mapear todos os streams para conseguir isso ou eles falam sobre a importação de legendas, nenhuma dessas eu quero, mas mesmo se eu tentar mapear todas as legendas, recebo um erro dizendo que a filtragem e a cópia de fluxo não pode ser usada em conjunto.

Comando que estou executando:

$ ffmpeg -i color.mkv -vf colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3 \
    -c:a copy grey.mkv

Eu tentei todos os tipos de variantes usando c: s (nem tenho certeza se esse é o jeito certo de chamar faixas de legenda), mas os resultados que recebo tendem a ser piores do que eu já tenho (quando eu os obtenho para correr eles parecem estar faltando, então eles não podem sequer jogar).

Eu pesquisei a documentação do ffmpeg para isso, mas essa instância específica não está lá ou não estou entendendo quando é apresentada.

    
por Bloomberg288 14.07.2018 / 06:56

1 resposta

1

Use isto:

$ ffmpeg -i color.mkv -vf format=gray -map 0:v -map 0:a:0 -map 0:11 \
    -c:a copy -c:s copy grey.mkv

O map s define quais faixas devem ser incluídas. Os c com especificadores definem a operação do codec para copiar para os fluxos especificados.

    
por 14.07.2018 / 07:04

Tags