Попробуй это:
ffmpeg -i inputfile1 -i inputfile2 -y \
-filter_complex '[0:0] [0:1] [1:0] [1:1] concat=n=2:v=1:a=1 [v] [a];\
[v]drawtext=fontsize=72:fontcolor=White:fontfile=/usr/share/fonts/truetype/DejaVuSans.ttf:text=Text Line To Render:x=(w)/2:y=(h)/2[o]'\
-map '[o]' -map '[a]' ...other encoding parameters... outputfile
Обратите внимание, что [v]
и [a]
- просто метки - вы можете очень хорошо использовать [p]
и [q]
и это тоже подойдет. Только поток 0 идет к первой метке, а поток 1 - ко второй. Я предполагаю, что поток 0 - это видео.
Вы должны убедиться, что потоки в inputfile1
и inputfile2
имеют одинаковый порядок. Затем мы передаем вывод видеопотока в качестве входных данных фильтру drawtext, говоря [v]drawtext=....
Вывод этого теперь помечен как [o]
в конце параметров drawtext
. Говоря -map [o]
, мы используем вывод из drawtext
для передачи вперед к другим вашим параметрам кодирования.
Путь к шрифту, который я использую, взят из OpenSUSE. Ваш может быть другим.