Я создаю видео из одного изображения с помощью 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