ffmpeg给视频添加时间水印
通过 drawtext 滤镜模块给视频添加时间水印
- 给视频添加时间水印
- 用来做片源调试,非常方便的查找和定位处理的哪一帧视频片源;
1. 添加本地时间水印
ffmpeg -t 5 -i input.mp4 -vf “drawtext=fontsize=160:text=’%{localtime:%T}’” -c:v libx264 -an -f mp4 output.mp4 -y
ffmpeg -t 5 -i input.mp4 -vf "drawtext=fontsize=160:text='%{localtime\:%T}'" -c:v libx264 -an -f mp4 output.mp4 -y
效果如下:
2. 添加本地时间水印,打印详细日期并且精确到毫秒
ffmpeg -t 5 -i input.mp4 -vf “settb=AVTB,setpts=‘trunc(PTS/1K)1K+st(1,trunc(RTCTIME/1K))-1Ktrunc(ld(1)/1K)’,drawtext=fontsize=100:fontcolor=white:text=’%{localtime}.%{eif:1Mt-1Ktrunc(t*1K):d}’” -c:v libx264 -an -f mp4 output.mp4 -y
ffmpeg -t 5 -i input.mp4 -vf "settb=AVTB,setpts='trunc(PTS/1K)*1K+st(1,trunc(RTCTIME/1K))-1K*trunc(ld(1)/1K)',drawtext=fontsize=100:fontcolor=white:text='%{localtime}.%{eif\:1M*t-1K*trunc(t*1K)\:d}'" -c:v libx264 -an -f mp4 output.mp4 -y
注意:
上面的测试case,比较适合在直播中使用,实时编码同时实时获取系统时间。
如果是离线转码测试,可以添加 -re 参数。如下:
ffmpeg -re -t 5 -i input.mp4 -vf “settb=AVTB,setpts=‘trunc(PTS/1K)1K+st(1,trunc(RTCTIME/1K))-1Ktrunc(ld(1)/1K)’,drawtext=fontsize=100:fontcolor=white:text=’%{localtime}.%{eif:1Mt-1Ktrunc(t*1K):d}’” -c:v libx264 -an -f mp4 output.mp4 -y
效果如下:
3. 把视频的pts时间戳添加为视频水印,精度到毫秒
ffmpeg -t 5 -i input.mp4 -vf “drawtext=fontsize=160:text=’%{pts:hms}’” -c:v libx264 -an -f mp4 output.mp4 -y
ffmpeg -t 5 -i input.mp4 -vf "drawtext=fontsize=160:text='%{pts\:hms}'" -c:v libx264 -an -f mp4 output.mp4 -y
效果如下:(第二秒截图)
测试过程中使用的截图命令,截取视频中的第二秒的图片:
ffmpeg -i output.mp4 -ss 2 -vframes 1 ~/Desktop/test.jpeg -y