ffmpeg 中有多种淡入淡出文本的方法。但我只找到了已知实际时间的解决方案。
\n\n但是,当我不知道当前的运行时间并且想要淡入和淡出文本时,我该怎么办?
\n\n假设我有一个无尽的流,我想使用zmqsend淡入文本。并且淡入淡出应该立即开始。为此,我的理解是,我需要将一些时间信息存储在变量中并用其进行计算。但是在 ffmpeg 表达式中存储变量是不可能的 - 对吗?
\n\n为了测试目的,这里有一个播放实例:
\n\nffplay -dumpgraph 1 -f lavfi "color=s=512x288:c=black,zmq,drawtext=text=\'\'"\n
Run Code Online (Sandbox Code Playgroud)\n\n为了使用 zmq 添加一些文本,我现在可以运行:
\n\necho Parsed_drawtext_2 reinit text="Hello\\ World,\\ what\xe2\x80\x99s\\ up?" | zmqsend\n
Run Code Online (Sandbox Code Playgroud)\n\n或者,如果我知道运行时间,10 秒后我希望文本淡入:
\n\n"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))))\'"\n
Run Code Online (Sandbox Code Playgroud)\n\n我现在的目标是拥有一个可以发送的表达式,以便 ffmpeg 开始淡入文本并在一定时间后淡出。
\n\n就像是:
\n\nnow=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))))\n
Run Code Online (Sandbox Code Playgroud)\n\n有没有办法在表达式中存储变量,或者有其他方法来实现这一点?
\n