在绘图文本 (FFMPEG) 中使用 IF 语句
Using an IF-Statement inside a drawtext (FFMPEG)
我目前正在尝试使用 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
或类似的东西替换它。
感谢您的帮助!
假设您要在 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}'
我目前正在尝试使用 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
或类似的东西替换它。
感谢您的帮助!
假设您要在 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}'