FFMPEG 中 drawtext %{localtime} 格式化显示添加“:“的问题--%{localtime} requires at most 1 arguments

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 }'

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值