As instruções gerais para legendas gravadas podem ser encontradas aqui: https://trac.ffmpeg.org/wiki/HowToBurnSubtitlesIntoVideo
Usei as instruções para legendas baseadas em imagens com sucesso muitas vezes. Mas agora que preciso gravar legendas SRT, não posso usar as instruções acima por dois motivos:
- Preciso usar um filtro complexo (-filter-complex) ao mesmo tempo, que não pode ser combinado com um filtro simples (-vf).
- A trilha de legenda que desejo gravar é uma das várias trilhas incorporadas na fonte de vídeo, então, mesmo que
subtitles=video.mkv
funcionasse, esse método não permite que um número específico de trilha de legenda seja especificado.
Existe algo como a -filter-complex
opção [0:v][0:s:1]overlay[v]
que funcionaria com SRT e outras legendas baseadas em texto e não em imagem?
Ah, eu descobri.
Não percebi que uma sintaxe próxima à usada para um filtro simples pode ser adicionada a um filtro complexo, desde que você use a nomenclatura de parâmetros adequada para encadear os componentes do filtro.
Também aprendi que o nome do arquivo de um vídeo com várias faixas de legendas incorporadas pode ser complementado com um seletor de faixas no formato
:si=
index .Estou usando este comando para gerar fluxos de vídeo pré-convertidos em várias resoluções para streaming adaptável. A parte sem legenda do filtro é para converter vídeo HDR para SDR.