В ffmpeg есть несколько способов увеличения и уменьшения текста. Но я нашел решения только там, где известно фактическое время.
Но что мне делать, если я не знаю текущего времени выполнения и хотел бы добавить и уменьшить текст?
Допустим, у меня есть бесконечный поток, и я хочу добавить текст с помощью zmqsend . И исчезновение должно начаться немедленно. Для этого я понимаю, что мне нужно хранить некоторую информацию о времени в переменной и рассчитывать с этим. Но сохранение переменных невозможно в выражениях ffmpeg - верно?
Для целей тестирования приведен игровой пример:
ffplay -dumpgraph 1 -f lavfi "color=s=512x288:c=black,zmq,drawtext=text=''"
Для добавления текста с помощью zmq я могу запустить сейчас:
echo Parsed_drawtext_2 reinit text="Hello\ World,\ what’s\ up?" | zmqsend
Или, если я знаю время выполнения и через 10 секунд я хочу добавить текст:
"text='Hello\ World':fontsize=:fontcolor=ffffff:alpha='if(lt(t,10),0,if(lt(t,11),(t-10)/1,if(lt(t,16),1,if(lt(t,17),(1-(t-16))/1,0))))'"
Теперь моя цель - получить выражение, которое я могу отправить, чтобы запустить ffmpegзатухание в тексте и исчезновение через определенное время.
Что-то вроде:
now=t,if(lt(t,now+10),0,if(lt(t,now+11),(t-(now+10))/1,if(lt(t,now+16),1,if(lt(t,now+17),(1-(t-(now+16)))/1,0))))
Есть ли способ сохранить переменные в выражении или есть какой-то другой способ реализовать это?