2

Привет, я хочу добавить водяные знаки png изображения в видео с жестким кодом .srt файл в то же время, что изменения, я должен сделать следующую строку

ffmpeg -i input.mkv -threads 0 -c:v libx264 -crf 28 -preset veryslow -vf "movie=watermark.png [watermark]; [in][watermark] overlay=0:0 [out]"  output.mp4

1 ответ1

2

Вы можете жестко закодировать субтитры в видео с помощью фильтра 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 ; если вы хотите определенный поток, см. документацию карты и спецификаторов потока .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .