Use
ffmpeg -i intro.mp4 -i input.mkv -itsoffset 4.5 -i input.mkv -i logo.png
-filter_complex
"[0:v] scale=480:270,setdar=16/9 [a];
[1:v] scale=480:270,setdar=16/9 [b];
[3:0] scale=480:270 [wm];
[b][wm] overlay[ov];
[a][0:a:0][0:a:0] [ov][1:a:0][1:a:1] concat=n=2:v=1:a=2 [vd] [a0] [a1]"
-map "[vd]" -map "[a0]" -map "[a1]" -map 2:s? -c:s copy -y output.mkv
Depois de especificar as instruções do mapa, apenas esses fluxos mapeados serão incluídos. Portanto, você precisa mapear explicitamente qualquer fluxo de legendas. Como pode não haver um, adicionei um ?
à direita para indicar a atribuição condicional.
Alimentei o vídeo de entrada duas vezes, porque os timestamps das legendas estarão errados na saída, pois a introdução agora precede o vídeo. Um deslocamento de registro de data e hora é adicionado à segunda entrada e a legenda é mapeada a partir desse feed. O valor itsoffset
deve ser igual à duração da introdução (em segundos). Não deve haver necessidade de transcodificar as legendas.