ffmpeg转码如何做到抖音式水印显示,一段时间左上角显示,一段时间右下角显示

云转码

2022-04-06T03:14:28.886Z

现在抖音很火,从抖音下载到手机中的视频会被抖音自动处理,添加了片头和图片水印,抖音的图片水印很有意思,视频前半部分会显示在左上角,等视频播放到一半之后,左上角的消失,右下角的水印又出现,直到持续到视频结尾。

其实这种水印变化位置的烧录是非常简单的,原理如下:

利用ffprobe读取视频,返回视频的时长,然后取视频一半时长,通过ffmpeg烧录左上角水印,持续时间设置成视频的一半时长,然后右下角水印设置成延迟视频的一半时长之后才显示,并且持续时间为视频后半段的时长。

案例

比如一个视频a,视频长度为100秒钟,我想视频播放10S之后才显示左上角的水印,并且显示40秒钟,然后视频播放50秒之后,左上角的水印消失,右下角的水印出现,并且持续到视频播放完毕。

这个非常好实现,实现过程如下

一、通过ffprobe获取到视频的时长,返回为100秒钟。
二、编写ffmpeg命令行,第一个命令行是左上角水印,10秒钟之后才出现,然后持续40%视频时长。第二个命令行是右下角水印,50%视频时长之后才出现,持续时长为50%视频长度。
三、组装命令行,最后通过ffmpeg烧录视频即可。

命令行案例

ffmpeg -i input.mp4 -i watermark.png -i watermark2.png -filter_complex "[0:v][1:v] overlay=10:10:enable='between(t,10,50)' [tmp]; [tmp][2:v] overlay=W-w:H-h:enable='between(t,51,100)'" output.mp4

后续EFV智能云转码更新

后续我会将整个设想设计进程序中,所有人可根据自己的需求定制自己专属的水印显示方式,自由控制所有的时长,自适应视频长度。
后续也会推出fluentEFV API功能,实时根据m3u8返回流下载(支持试看,也就是没权限,只会实时生成1分钟视频流FLV下载到本地),实时根据时长返回截图,实时根据开始时间持续时间高宽生成动态图返回,实时返回某一段刨除视频之后的音频,实时返回某一段刨除音频的设定高宽的视频等等等等,敬请期待。