Я успешно использовал ответ на этот вопрос:цикл текста, который стирает слева направо, используя фильтр FFMPEG drawtext

Но мне нужно изменить направление прокрутки с ВПРАВО на ВЛЕВО .. Я просто зацикливаюсь на некоторых вариантах, так что я надеюсь, что кто-то здесь может помочь

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

3 ответа3

1

Для меня это работает (чтение текста из текстового файла в 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

0

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

Все дело в установке значения х. Мне нравится ответ 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))

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

if(eq(t,0),(0-tw),if(gt(x,(w+tw)),(0-tw),x+4))
0

Адаптируем ответ в связанной ветке:

-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 с, а символ прокрутится по ширине за 5.5 секунд.

Редактировать:

Это петли.

-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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .