Ffmpeg рисует текст поверх масштабированного видео независимо от размера изображения

Ffmpeg рисует текст поверх масштабированного видео независимо от размера изображения

Я создаю видео из одного изображения с помощью ffmpeg и рисую текст поверх видео.

Как сделать drawtextтак, чтобы поверх был наложен масштабированный размер видео, а не масштаб изображения?

Сейчас, когда я добавляю текст, X и Y начинаются с верхнего левого угла изображения, а не самого масштабированного видео. Изображение имеет меньшие размеры, чем масштаб видео, поэтому мне нужно рисовать текст независимо от размера изображения. Если текст выходит за пределы масштаба изображения, он обрезается, хотя незаполненная черная рамка оставшегося масштабированного видео все еще там.

Это команда, которую я использую.

ffmpeg -loop 1 -r 1 -i image.jpg -b:v 1M -vf "scale=320:240, drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf: text='Test Text': x=200: y=100: fontsize=30: [email protected]: box=1: [email protected]" -t 20 output.mp4

решение1

Если изображение является единственным источником видео, то видеопростоизображение и "наложение из верхнего левого угла видео" означает то же самое, что и "наложение из верхнего левого угла изображения". Так что вы все делаете правильно.

Черная рамка, о которой вы говорите, этонетчасть видео. Она вставленанекоторыймедиаплееры при открытии очень узких видео, потому что панель управления медиаплеера шире, чем видео. Например, медиаплеер VLC имеет довольно широкие элементы управления/панель меню и он дополняет видео большими границами. Но Windows Media Player не отображает черную границу, так как его элементы управления вписываются в ширину видео 320p.

решение2

Заработало с помощью следующей команды:

ffmpeg -loop 1 -i image.jpg -r 29.970 -c:v libx264 -t 15 -pix_fmt yuv420p -profile:v high -level 4.2 -vf "scale=1920:1080, drawtext = text='Resumes in %{eif\:15-t\:d}': x=200: y=100: fontsize=30: [email protected]: box=1: [email protected]" out.mp4

Связанный контент