我从自定义工具调用 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:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bddfd2c5ded2d1d2cf80dfd1dcded6fd8d938e" rel="noreferrer noopener nofollow">[email protected]</a>: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 扩展选项允许格式化,并接受未记录的基准时间参数(自 UNIX 纪元以来以微秒为单位)来设置初始时间码。
关于ffmpeg - 如何使用 FFMPEG 将任意格式化的时间戳添加到视频中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32193274/