【问题标题】:FFMPEG: Create timestamp based on actual creation timeFFMPEG:根据实际创建时间创建时间戳
【发布时间】:2022-07-02 08:13:15
【问题描述】:

期望的结果

根据视频的原始创建时间为视频的每一帧添加带有时间戳的叠加层。例如。从 2022-03-26T15:51:49.000000Z 开始,一秒钟后出现在 2022-03-26T15:51.50.000000Z 的视频中

接近

Creation_time 已经存储在文件中,例如运行ffmpeg -i input.mov" 时,它会显示creation_time : 2022-03-26T15:51:49.000000Z

为视频添加带时间戳的叠加层: ffmpeg -i input.mov -filter_complex "drawtext=text='%{pts\:gmtime\:1507046400\:%d-%m-%Y %T}': x=100 : y=100: box=1" -c:a copy output.mp4

需要挑战/帮助

需要将gmtime\:1507046400 替换为实际的creation_time。如何做到这一点?

来源

【问题讨论】:

标签: ffmpeg


【解决方案1】:

我建议的链接是固定日期时间的。
对于滚动时间,请使用时间偏移量。
如果我在 2022/2/28 的 12:02:03 选择任意日期和时间,计算偏移的秒数,在这种情况下,12 x 60 x 60 加 2 x 60 加 3 等于 43323。
我们将日期固定为文本,然后使用偏移量作为时间。

ffmpeg -i some.mp4 -filter_complex  "[0:v]drawtext=text='2022 02 28 %{pts\:hms\:43323}':x=(w-text_w)/2:y=10:font='Noto mono':fontsize=40:alpha=0.5:box=1:boxborderw=4 [vid]" -map [vid] -map 0:a -f matroska - | ffplay -autoexit -i -

对于超过午夜播放的视频,您需要对该主题进行变体。

ffmpeg -i some.mp4 -filter_complex  "[0:v]drawtext=text='%{pts\:gmtime\:1646092780}':x=(w-text_w)/2:y=10:font='Noto mono':fontsize=40:alpha=0.5:box=1:boxborderw=4 [vid]" -map [vid] -map 0:a -f matroska - | ffplay -autoexit -i -

这里的偏移量计算为自 Unix 纪元时间 (01/01/1970 00:00:00) 以来经过的秒数

【讨论】:

  • 谢谢 - 这太棒了,我真的很感激你也想到了过去的午夜方面。你知道获取creation_time变量的方法吗?如有必要,我可以通过脚本(例如 PHP)运行它 - 但希望动态获取创建时间,然后运行您的终端命令。
  • @PederWessel 请参阅此问题:stackoverflow.com/questions/31541489/… - 但请注意,并非所有媒体都有元标记或全套元标记,因此如果您没有找到创建日期,请制定备份计划。
  • 谢谢 - 像美女一样工作!制定备份计划。再次感谢您!
【解决方案2】:

我正在寻找同样的东西,并且已经阅读了以上所有内容。我想知道的是您在代码中的哪个位置计算经过的时间?还是您计算并手动输入?我需要处理 100 多个文件并要求一切都以编程方式完成。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    • 2015-05-31
    • 2023-04-09
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    相关资源
    最近更新 更多