使用 ffmpeg,我想将当前本地时间戳(以毫秒为单位)叠加到使用 ffmpeg 格式的视频上YYYY-MM-DD HH:MM:SS.mmm
。我见过类似的问题,但没有看到显示毫秒部分的答案。
使用text=%{localtime}
simply 显示YYYY-MM-DD HH:MM:SS
不带毫秒数。如果您尝试使用常见的毫秒说明符来显示毫秒部分,则它不会像text=%{localtime\\:%Y %m %d %H %M %S %s}
或那样工作text=%{localtime\\:%Y %m %d %H %M %S %f}
。
如果您使用text=%{pts\\:hms}
它,它确实会显示毫秒,但它不参考当前本地时间。您可以添加自午夜以来的总秒数偏移量,以使您接近当地时间,例如text=%{pts\\:hms\\:61200}
使您到达下午 5 点,但这是调用命令时的快照,而不是捕获视频帧的实际当前本地时间(以毫秒为单位)。
更新:
我刚刚发现这篇文章:https://github.com/InSoundz/ffmpeg-strftime-milliseconds
看起来有人在strftime()
ffmpeg 使用的函数中添加了毫秒分辨率。
我唯一的问题是我不知道如何使用此源代码重新构建 Windows 版本 *.exe。有人可以帮忙吗?一旦将其重新构建为 Windows 可执行文件,我就应该能够使用格式化程序添加毫秒分辨率,%u
如下所示:%Y-%m-%d_%H-%M-%S.%%03u
获取添加到录制视频的时间戳示例2017-05-28_12-26-33.599
。有人能帮我使用这个修改后的库重新构建这个 Windows *.exe 吗?
任何帮助都将不胜感激!
答案1
来自drawtext 文档:
localtime
过滤器运行的时间,以本地时区表示。它可以接受一个参数:strftime() 格式字符串。
但是 strftime 没有显示毫秒的功能。请参阅man strftime
。
您使用的%s
是“自纪元 1970-01-01 00:00:00 +0000 (UTC) 以来的秒数”。这不是您想要的。我不确定您在哪里找到的%f
,但它对 strftime 无效。