Использование IF-оператора внутри drawtext (FFMPEG) - PullRequest
1 голос
/ 22 января 2020

В настоящее время я пытаюсь реализовать таймер для видео с помощью FFMPEG, поэтому он должен начинаться в 00.00 и начинать отсчет времени после количества кадров и снова останавливать отсчет после установленного количества кадров. Поэтому таймер должен работать так:

00:00 00:00 00.00 (время начала) 00.01 00.02 [...] 05.88 05.89 (время остановки) 05.89 05.89 05.89

Пока что я получил (как минимум) следующую команду:

ffmpeg -i input.mp4 
-filter_complex "[0:v]drawtext=fontfile='C\\:font.ttf':
text='%{eif\\:n/30\\:d\\:2}\\:%{eif\\:((mod(n,30))/30)*100\\:d\\:2}':
fontcolor=black:fontsize=55:x=(1705.5-(text_w/2)):y=(1000.5-(text_h/2)),format=yuv420p" 
-pix_fmt yuv420p -c:a copy out.mp4

Есть еще кое-что внутри filter_complex, поэтому я не могу заменить что с -vf или подобным.

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 22 января 2020

Предположим, вы хотите начать отсчет с n=200 и закончить с n=700. Тогда давайте назовем min(max(n-200,0),700-200) как X

Ваше текстовое выражение теперь становится

text='%{eif\\:X/30\\:d\\:2}\\:%{eif\\:((mod(X,30))/30)*100\\:d\\:2}'
...