Вы можете жестко закодировать субтитры в видео с помощью фильтра subtitles
. Лучший способ сделать то, что вы хотите, это использовать цепочку фильтров, которая пропускает видео через цепочку (поэтому выходной сигнал наложенного фильтра становится входным сигналом фильтра субтитров). Фильтры в цепочке разделяются запятыми. Это не следует путать с фильтром графа, который состоит из одного или нескольких фильтров или цепочек фильтров, разделенных точками с запятой.
Я удалил пробел и сократил метки, чтобы этот пример поместился без прокрутки в стороны. Если вы наберете это в командной строке, вы должны сделать это в одной строке, удаляя обратную косую черту и новые строки:
ffmpeg -i input.mkv -threads 0 -c:v libx264 -crf 28 -preset veryslow \
-vf "movie=watermark.png[wm];[in][wm]overlay=0:0,subtitles=subtitle.srt[out]" \
output.mp4
Лично я предпочитаю использовать сложный фильтр графа, а не фильтр фильма, когда у меня несколько входов:
ffmpeg -i input.mkv -i watermark.png -threads 0 -c:v libx264 -crf 28 -preset veryslow \
-filter_complex "[0:v][1:v]overlay=0:0,subtitles=subtitle.srt[out]" \
-map "[out]" -map 0:a output.mp4
Обратите внимание, что второй будет использовать все аудиопотоки из input.mkv, которые могут быть или не быть тем, что вы хотите. Если вам не нужен звук, удалите -map 0:a
; если вы хотите определенный поток, см. документацию карты и спецификаторов потока .