如何使用 FFMPEG 向视频添加任意格式的时间戳?

How to add an arbitrary, formatted timestamp to a video with FFMPEG?

我正在从自定义工具调用 ffmpeg 以连接视频文件,同时在输出中覆盖时间戳。输出视频需要有一个从任意时间开始的时间戳。格式必须是带秒和子午线的 12 小时制,例如 10:34:59 AM 或 6:13:09 PM。这是我现在使用的完整命令:

ffmpeg\bin\ffmpeg.exe -y -i "concat:input.mod" -ss 00:00:00 -t 00:02:17 
-an -vcodec libx264 -profile:v baseline -level 13 -b:v 2000k -vf 
 "drawtext=fontcolor=white:fontsize=16:fontfile="/Windows/Fonts/arial.ttf":
box=1:boxcolor=black@0.3:x=(w-text_w-10):y=(h-text_h-5):
timecode='02\:36\:17\;00':rate=30000/1001" output.mp4

这将输出从输入文件开头开始的 2 分 17 秒时长的视频。输出视频在右下角有一个时间码,从时间 02:36:17 开始,在 02:38:34 结束。我想要的正是这个,但不是在第 0 帧上打印“02:36:17;00”并从那里开始计数,它应该在第 0 帧上打印“2:36:17 AM”并从那里开始计数。

我试过使用localtime函数输出格式化时间,但它使用的时间值是调用drawtext过滤器的时间。它不需要任意时间的参数。

我也看过pts函数,它似乎允许任意偏移,但只支持两种格式选项,这两种格式都不是我需要的时钟格式。

使用 ffmpeg 添加具有任意开始时间和格式的时间戳的正确方法是什么?

这个问题在 this question 的(当前)第三个答案中得到了回答。答案是已弃用的 strftime 扩展选项允许格式化,并接受未记录的 basetime 参数(自 UNIX 纪元以来以微秒为单位)来设置初始时间码。