ffmpeg -i input -filter_complex "drawtext=x=50:y=60:fontfile=simsun.ttc:text='%{localtime}':fontsize=40:fontcolor=red@1:box=1:boxcolor=black@0" -y output
在文本滤镜中添加本地时间,效果:
因为ffmpeg 接收%{localtime}是根据C语言strftime()函数来设计的, 所以也可以根据自己的选择进行组合:
说明符 替换为 实例
%a 缩写的星期几名称 Sun
%A 完整的星期几名称 Sunday
%b 缩写的月份名称 Mar
%B 完整的月份名称 March
%c 日期和时间表示法 Sun Aug 19 02:56:02 2012
%d 一月中的第几天(01-31) 19
%H 24 小时格式的小时(00-23) 14
%I 12 小时格式的小时(01-12) 05
%j 一年中的第几天(001-366) 231
%m 十进制数表示的月份(01-12) 08
%M 分(00-59) 55
%p AM 或 PM 名称 PM
%S 秒(00-61) 02
%U 一年中的第几周,以第一个星期日作为第一周的第一天(00-53) 33
%w 十进制数表示的星期几,星期日表示为 0(0-6) 4
%W 一年中的第几周,以第一个星期一作为第一周的第一天(00-53) 34
%x 日期表示法 08/19/12
%X 时间表示法 02:50:06
%y 年份,最后两个数字(00-99) 01
%Y 年份 2012
%Z 时区的名称或缩写 CDT
%% 一个 % 符号 %
ffmpeg -i input -filter_complex "drawtext=x=50:y=60:fontfile=simsun.ttc:text='%{localtime\:%Y-%m-%d %X}':fontsize=40:fontcolor=red@1:box=1:boxcolor=black@0" -y output
即%{localtime\:%Y-%m-%d %X} 和%{localtime} 效果是相同的,其中%X 直接等于%H:%M%S
但是当我们将代码%{localtime\:%Y-%m-%d %H:%M%S} 作为参数传递出去时, 缺会发现报错%{localtime} requires at most 1 arguments, 其原因主要是因为':'作为特殊字符无法出现在localtime的包含的{}表达式中。
但是经过研究发现":"出现在字符串外是不受影响的所以我们可以多使用几个localtime+":"来变相的进行规避,即:text='%{localtime\: %Y-%m-%d %H}''\:''%{localtime\: %M }''\:''%{localtime\: %S }'