С помощью ffmpeg добавьте повторяющееся наложение текста на видео - PullRequest
1 голос
/ 27 апреля 2020

Я ищу создание наложения, которое циклически повторяет символы в строке снова и снова. Мне удалось использовать файл sendcmd, чтобы поместить A, B, C, D, E в первые 5 секунд видео

0  drawtext reinit 'text=A';
1  drawtext reinit 'text=B';
2  drawtext reinit 'text=C';
3  drawtext reinit 'text=D';
4  drawtext reinit 'text=E';

Но оно не циклично, и у меня нет удалось найти способ сделать это, потому что sendcmd выглядит так, как будто он просто использует временный код. Я мог бы создать командный файл длиной 3600 строк для моего часового видео, с этими командами снова и снова (командный файл будет генерироваться программно, поэтому не обременительно)


После некоторых значительных экспериментов я смог сделайте это с 5 отдельными текстами:

drawtext=fontfile=/Windows/Fonts/bauhs93.ttf:fontsize=1024:fontcolor=white@0.1:bordercolor=black@0.1:borderw=10:r=250:text='A':x=if(trunc(mod(t\,5))\,-2000\,(w-tw)/2),
drawtext=fontfile=/Windows/Fonts/bauhs93.ttf:fontsize=1024:fontcolor=white@0.1:bordercolor=black@0.1:borderw=10:r=250:text='B':x=if(trunc(mod(t\,5))-1\,-2000\,(w-tw)/2),
drawtext=fontfile=/Windows/Fonts/bauhs93.ttf:fontsize=1024:fontcolor=white@0.1:bordercolor=black@0.1:borderw=10:r=250:text='C':x=if(trunc(mod(t\,5))-2\,-2000\,(w-tw)/2),
drawtext=fontfile=/Windows/Fonts/bauhs93.ttf:fontsize=1024:fontcolor=white@0.1:bordercolor=black@0.1:borderw=10:r=250:text='D':x=if(trunc(mod(t\,5))-3\,-2000\,(w-tw)/2),
drawtext=fontfile=/Windows/Fonts/bauhs93.ttf:fontsize=1024:fontcolor=white@0.1:bordercolor=black@0.1:borderw=10:r=250:text='E':x=if(trunc(mod(t\,5))-4\,-2000\,(w-tw)/2)

Но, как видно, я должен повторить здесь много вещей. Есть ли какой-нибудь более приятный способ? Кажется, это заметно влияет на скорость кодирования, когда добавляется больше символов

Я надеялся, что текстовые выражения помогут, но, похоже, я могу возвращать только цифры из значений, поэтому это выражение не сработало :

%{e:if(trunc(mod(t,5)),'A', '')%{e:if(trunc(mod(t,5))-1,'B', '') ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...