Я использую эту команду ffmpeg для рендеринга видео из изображений. Проблема в том, что когда я использую Cartion /ni, не могу выровнять арабский текст по правому краю. Я не могу использовать для этого множественный DrawText, потому что текст взят из базы данных.
ffmpeg -r:v 1/5 -f concat -safe 0 -i /system/gobro.txt -i "/system/chill.mp3" -vf "scale=iw*min(1280/iw\,800/ih):ih*min(1280/iw\,800/ih), pad=1280:800:(1280-iw*min(1280/iw\,800/ih))/2:(800-ih*min(1280/iw\,800/ih))/2,
drawbox=enable='between(t,5,39.9)':y=(ih-110):[email protected]:width=iw:height=110:t=filldrawtext=enable='between(t,10,14.9)':fontfile=/ttf/changa-medium.ttf:fontsize=30:fontcolor=white:x=(w-text_w-20):y=(h-text_h-60):text='غير كانت الخطّة ',
drawtext=enable='between(t,10,14.9)':fontfile=/TTF/Changa-Medium.ttf:fontsize=20:fontcolor=white:x=(w-text_w-20):y=(h-text_h-15):text='gfuishg isfdhgi usfdhgi sfdg /n hello this is new line'"
-c:a aac -shortest -y -pix_fmt yuv420p /public/video.mp4 2> /system/out.txt
снимок экрана, поясняющий проблему
Спасибо
решение1
Я не думаю, что имеет значение, написан ли ваш текст справа налево или слева направо. Я думаю, что единственная проблема, которую вам нужно решить, этовыравниваниеилиоправданиетекста. На вашем образце фотографии, похоже, вы хотите, чтобы весь текст был выровнен по правому краю, независимо от того, написан ли он шрифтом RTL или LTR. Если я прав, то что-то похожее на следующее должно сделать то, что вам нужно.
В вашем примере кода вы помещаете текст LTR в один фильтр
drawtext=enable='between(t,10,14.9)':fontfile=/TTF/Changa-Medium.ttf:fontsize=20:fontcolor=white:x=(w-text_w-20):y=(h-text_h-15):text='gfuishg isfdhgi usfdhgi sfdg /n hello this is new line'
Разделите две строки на два фильтра DrawText и «выровняйте» две строки справа.
drawtext=enable='between(t,10,14.9)':fontfile=/TTF/Changa-Medium.ttf:fontsize=20:fontcolor=white:x=(w-text_w-20):y=(h-text_h-15):text='gfuishg isfdhgi usfdhgi sfdg',
drawtext=enable='between(t,10,14.9)':fontfile=/TTF/Changa-Medium.ttf:fontsize=20:fontcolor=white:x=(w-text_w-20):y=(h-text_h-line_h-15):text='hello this is new line'
Для второй строки текста я изменил значение смещения Y. Я добавил термин «-line_h», чтобы вторая строка оказалась ниже первой.