ffmpeg drawtext filter - создает прозрачный фон с текстом

11

В настоящее время я работаю с drawtextфильтром. До сих пор мне удавалось только с drawtextнастройками опций использовать правильный шрифт и размещать текст по центру. Как я могу drawtextотобразить текст на видео, как показано ниже?

FFmpeg

ffmpeg -i "/media/test/test.mp4" -vf drawtext="fontfile=/usr/share/fonts/truetype/open-sans/OpenSans-Regular.ttf:text='Title of this Video':x=(w-tw)/2:y=(h-th)/2"  /media/test_edited.mp4"
Code_Ed_Student
источник

Ответы:

21

Используйте drawboxдля коробки и drawtextдля текста.

Красный жук

ffmpeg -i input.mp4 -vf \
"format=yuv444p, \
 drawbox=y=ih/PHI:color=black@0.4:width=iw:height=48:t=fill, \
 drawtext=fontfile=OpenSans-Regular.ttf:text='Title of this Video':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h/PHI)+th, \
 format=yuv420p" \
-c:v libx264 -c:a copy -movflags +faststart output.mp4
  • drawtextимеет boxопцию, но, насколько я могу судить, она не может быть произвольной ширины и зависит от размера текста, поэтому drawboxвместо этого используется.

  • formatФильтр используется для улучшения цвета drawboxобласти; в противном случае, в зависимости от ваших форматов ввода и вывода, область может выглядеть ненасыщенной или монохромной. Затем formatфильтр снова используется, чтобы гарантировать, что формат пикселя выходного файла совместим со всеми проигрывателями.

  • В этом примере аудио копируется в потоковом режиме, потому что вы можете не захотеть перекодировать его без необходимости.

  • Старые ffmpegпользователи должны будут использовать t=maxвместо t=fill.

llogan
источник
Отлично, это выходит за рамки текущего вопроса, и мне может понадобиться создать новый вопрос. Любые предложения о том, как добавить snapchatтаймер. Например, я сделал некоторые испытания и FFmpeg содержит источник видеосигнала testsrc , который содержит таймер: ffplay -f lavfi -i testsrc. Цифра 0 исходного таймера имеет размер 29x52 пикселей, а ее положение в верхнем левом углу составляет 256 пикселей по горизонтали и 94 пикселей по вертикали. Я могу обрезать область одной цифры, как этоffmpeg -f lavfi -i testsrc -vf crop=29:52:256:94 -t 10 timer1.mp4
Code_Ed_Student
Я добавил изображение с таймером к вопросу. Таймер обратного отсчета на основе продолжительности видео.
Code_Ed_Student
Да, я создам новый вопрос для этого. Ты прав. 30. 29, 28...и т. д.
Code_Ed_Student
Новый вопрос размещен: video.stackexchange.com/questions/15556/ffmpeg-video-with-timer
Code_Ed_Student
1
Отлично, и вы правы, это действительно повлияло на поле
Code_Ed_Student
1

ffmpeg -i C: \ Users \ Developer_2 \ Videos \ 2.mkv -vf drawtext = "fontfile = C \: / Regular.ttf: text = 'apcis.tmou.org': fontcolor = white: fontsize = 24: box = 1: boxcolor=black@0.4: x = w-tw: y = h-й "C: \ inetpub \ wwwroot \ videos \ 1.mp4

kostia7alania
источник
это работает для меня, но я использую boxcolor-white@0.9
сабля tabatabaee yazdi