Eu tenho usado o ffmpeg para fazer tudo até agora com um vídeo, juntando quadros de animação, adicionando áudio, sobrepondo imagens e adicionando legendas. Portanto, espero que a resposta à minha pergunta ainda esteja dentro do ffmpeg, mas estou aberto a usar outros programas, se necessário.
Eu já criei os arquivos de legenda ASS (plural para vários idiomas), aproveitando as informações de fonte, cor e posicionamento. Mas quando fui adicionar um deles ao vídeo, ele perdeu todas essas informações de formatação. A única maneira que encontrei de preservar essas informações com o ffmpeg é sub-renderizando, renderizando o texto permanentemente no vídeo, mas quero que o visualizador possa alternar entre idiomas.
Isto é o que eu faço atualmente:
ffmpeg \
-i video_in.mp4 -i sub_eng.ass -i sub_spa.ass \
-c copy -c:s mov_text \
-map 0:v -map 0:a -map 1 -map 2 \
-metadata:s:s:0 language=eng \
-metadata:s:s:1 language=spa \
video_out.mp4
Existe uma maneira de submarcar um vídeo com informações de posição? Cada linha nas legendas tem sua própria posição (imitando um balão de fala para indicar quem está falando).
EDIT: Solução parcial com MKV da Gyan
ffmpeg \
-i video_in.mkv -i sub_eng.ass -i sub_spa.ass \
-c copy \
-map 0:v -map 0:a -map 1 -map 2 \
-metadata:s:s:0 language=eng \
-metadata:s:s:1 language=spa \
video_out.mkv