Прокрутка справа налево в ffmpeg / drawtext

Я успешно использовал ответ из этого вопроса:
цикл текст, который стирает слева направо с помощью ffmpeg drawtext filter

но мне нужно изменить направление прокрутки справа налево.. Я просто застрял в попытке некоторые варианты, так что я надеюсь, что кто-то здесь может помочь...

спасибо заранее!

15
задан Community
22.03.2023 12:29 Количество просмотров материала 3002
Распечатать страницу

3 ответа

адаптация ответа в связанном потоке:

-vf "drawtext=text=string1:fontfile=foo.ttf:y=h-line_h-10:x=w-(t-4.5)*w/5.5:fontcolor=white:fontsize=40:shadowx=2:shadowy=2"

свиток начнется с t = 4.5 s и символ будет прокручиваться по ширине в 5.5 секунд.

Edit:

Это одно петли.

-vf "drawtext=text='abcd':fontfile=bpmono.ttf:y=h-line_h-10:x=w-mod(max(t-4.5\,0)*(w+tw)/5.5\,(w+tw)):fontcolor=ffcc00:fontsize=40:shadowx=2:shadowy=2"
0
отвечен Gyan 2023-03-23 20:17

для меня это работает (чтение текста из текстового файла в windows):

-vf "drawtext=fontcolor=white:fontsize=40:fontfile='C\:\Windows\Fonts\arial.ttf':textfile='C\:\text.txt':reload=1:y=h-line_h-52:x=w-(mod(4*n\,w+tw)-tw/40)"

то же самое, но с фоновым полем:

-vf "drawtext=fontcolor=white:fontsize=40:fontfile='C\:\Windows\Fonts\arial.ttf':textfile='C\:\text.txt':reload=1:y=h-line_h-52:x=w-(mod(4*n\,w+tw)-tw/40),drawbox=y=ih-88:color=black@0.4:width=iw:height=48:t=max"

: D

1
отвечен Zibri 2023-03-23 22:34

x=if(eq(t\,0)\,w\,if(lt(x\,(0-tw))\,w\,x-4))

все дело в установке значения x. Мне нравится ответ Mulvya, который хорош, если вы хотите, чтобы текст прокручивался по видеокадру за фиксированное количество секунд. Однако я хотел постоянную скорость независимо от ширины видео.

я начал с if(lt(x,(0-tw)),w,x-1)

идея заключалась в том, чтобы начать с ширины видео w и продолжать уменьшать значение x, пока оно не станет меньше 0-text_w. На данный момент текст исчезает.

но это не сработало. Значение по умолчанию для x равно 0, мне нужно было установить его в w в начале. Вот я и придумал вот это -

if(eq(t,0),w,if(lt(x,(0-tw)),w,x-1))

x-1 был слишком медленным для моего вкуса, я изменил его на x-4.

побег, прежде чем использовать его в вашей команде x=if(eq(t\,0)\,w\,if(lt(x\,(0-tw))\,w\,x-4))

противоположность этому, начиная слева и идти направо будет

if(eq(t,0),(0-tw),if(gt(x,(w+tw)),(0-tw),x+4))
0
отвечен Yash Gadhiya 2023-03-24 00:51

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх