当前正尝试在视频马赛克上叠加一个非常精确的时间戳,但我遇到了一个问题,即唯一可打印的实时时间戳是 UTC。
两年前有人在这里问过类似的问题ffmpeg 覆盖时间码与时区偏移但它对我的情况没用,除非我以某种方式找到一种方法来输入提前 2 小时的实时 Epoch 代码。
我正在使用的代码片段是:
drawtext=font=/usr/share/fonts/truetype/msttcorefonts/Comic_Sans_MS.ttf:fontsize=60:box=1:[email protected]:fontcolor=magenta:x=(w-text_w)/2:y=(h-text_h)/2:text='%{gmtime\:%H\\\\\:%M\\\\\:%S}'[time];\
我希望这只是一个替换的问题%H
,%H+2
但%(H+2)
遗憾的是并非那么简单。
答案1
非常简单的解决方案,我不敢相信我花了这么长时间才弄清楚(应该阅读官方过滤器文档)。您gmtime
根本不需要使用,只需使用localtime
,将系统时间设置为所需的时区即可。
因此命令如下:
drawtext=font=/usr/share/fonts/truetype/msttcorefonts/Comic_Sans_MS.ttf:fontsize=60:box=1:[email protected]:fontcolor=magenta:x=(w-text_w)/2:y=(h-text_h)/2:text='%{localtime\:%T}'[time];