Логотип водяного знака ffmpeg с жестким кодом субтитров

Привет, я хочу добавить изображение водяного знака в видео с жестким кодом.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 ответ

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

Другие вопросы по тегам