ffmpeg添加动态时间戳的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ffmpeg添加动态时间戳的问题相关的知识,希望对你有一定的参考价值。

参考技术A 最近项目有个需求——给录制的视频按照基准时间添加动态时间戳。

看到这个需求,第一个想到的就是用ffmpeg去转换,百度了一番,基本上都是类似与下面这条命令:

ffmpeg -i 20201124023926196.mp4 -vf "drawtext=expansion=strftime:basetime=$(date +%s -d '2020-11-24 16:27:50')000000 :text='%Y-%m-%d %H\\:%M\\:%S':fontsize=18:fontcolor=white:box=1:x=100:y=100:boxcolor=black@0.5:" -strict -2 -y out.mp4

执行后,可以发现时间戳并不是从指定的"2020-11-24 16:27:50"基准时间开始的,这是什么原因呢?于是又从git上查找相关的资料,发现是basetime格式的问题, basetime是int(64)类型的,精确到微秒, 一定要注意这一点。

其它参数说明:

       -i: 指定输入文件,这里使用的视频编码是H264, 音频编码是AAC

  -vf: 视频滤镜,使用了drawtext滤镜,basetime是视频时间戳的初始值,text是显示时间的格式,fontsize后面一串是关于水印的颜色、字体、背景等设置

  -strict -2:AAC的解码在2.x版本是试验性功能,需要加这个参数

  -y: 覆盖已经存在的输出文件

以上是关于ffmpeg添加动态时间戳的问题的主要内容,如果未能解决你的问题,请参考以下文章

FFMPEG中的时间问题

为 Azure 数据流中的文件动态添加时间戳

将具有当前时间戳的列添加到 Hive 中的表

带时间戳的逻辑删除

INNER JOIN 基于彼此范围内的公共时间戳的两个 BigQuery 表?

根据另一列中的更改创建带有时间戳的最后修改列