ffmpeg添加动态时间戳的问题

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

看到这个需求,第一个想到的就是用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:[email protected]:" -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添加动态时间戳的问题)