FFmpeg | 给视频加文字和图片水印
FFmpeg给视频加上logo
ffmpeg从视频中截取图像帧
ffmpeg -i inputfile.avi -r 1 -f image2 image-%05d.jpeg
ffmpeg -i inputfile.avi -r 1 -s 4cif -f image2 image-%05d.jpeg
ffmpeg -i inputfile.avi -r 1 -t 4 -f image2 image-%05d.jpeg
ffmpeg -i inputfile.avi -r 1 -ss 01:30:14 -f image2 image-%05d.jpeg
ffmpeg -i inputfile.avi -r 1 -ss 01:30:14 -vframes 120 4cif -f image2 image-%05d.jpeg
-r 指定抽取的帧率,即从视频中每秒钟抽取图片的数量。1代表每秒抽取一帧。
-f 指定保存图片使用的格式,可忽略。
image-%05d.jpeg,指定文件的输出名字。
4cif 代表帧的尺寸为705x576.其他可用尺寸如下。
-t 代表持续时间,单位为秒。
-ss 指定起始时间
-vframes 指定抽取的帧数
ffmpeg给视频加logo
ffmpeg 给视频input.mp4 加上logo.png的logo, logo的格式也可以用 .jepg
ffmpeg -i input.mp4 -i logo.png -filter_complex "[1:v] scale=176:144[logo];[0:v][logo]overlay=x=0:y=0" output.mp4
从上述命令可以看,将logo.png的图像流缩放为176x144的分辨率,然后定义一个临时标记名logo,最后将缩放后的图像[logo]铺在输入视频input.mp4的视频流[0:v]的左上角。
FFmpeg给视频加水印文字
FFmpeg可以为视频加水印,水印可以是文字,也可以是图片,主要用来标记视频所属标记。以下为参数列表
加文字
使用drawtext滤镜使用举例, 给视频加上hello world
的文字水印
ffmpeg -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello world':x=20:y=20" drawtext.mp4
调节颜色
drawtext滤镜的fontcolor参数调节颜色,例如将字体的颜色设置为绿色
ffmpeg -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello world':x=20:y=20:fontcolor=green" textgreen.mp4
如果想调整水印的位置,调整x和y参数的值即可
增加一个框和背景色
文字水印还可以增加一个框,然后给框加一个背景颜色
ffmpeg -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello world':x=20:y=20:fontcolor=green:box=1:boxcolor=yellow" box.mp4
增加时间
以本地时间为文字水印内容,可以在drawtext滤镜中配合一些特殊用法来完成。
ffmpeg -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='%{localtime\:%Y-\%m\-%d %H-%M-%s}]':x=0:y=20:fontcolor=green" time.mp4
定时显示
定时显示/不显示水印,使用drawtext和enable配合,例如没三秒钟显示一次文字水印
ffmpeg -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello world':x=20:y=20:enable=lt(mod(t\, 3)\, 1)" enable.mp4
中文水印
中文水印,需要系统中包含中文字库与中文编码支持。
ffmpeg -i input.mp4 -vf "drawtext=fontsize=100:fontfile=/Library/Fonts/Songti.ttc:text='中文测试':x=20:y=20:enable=lt(mod(t\, 3)\, 1)" chinese.mp4
图片水印
使用movie的滤镜参数
FFmpeg给视频加图片水印有两种方式,一种是通过movie指定水印文件路径,另外一种方式是通过filter读取输入文件的流并指定为水印
使用movie的方式添加水印
给视频input.mp4 添加logo.png的logo , logo的格式也可以为 jpeg
ffmpeg -i input.mp4 -vf "movie=logo.png[wm]; [in][wm]overlay=30:10[out]" movie.mp4
将透明水印加入到视频中效果会更好一点,当只有纯色背景的logo,可以考虑使用movie 与colorkey滤镜配合做成半透明的效果:
ffmpeg -i input.mp4 -vf "movie=logo.png, colorkey=black:1.0:1.0 [wm]; [in][wm]overlay=30:10[out]" colorkey.mp4
--完--
- 原文作者: 留白
- 原文链接: https://zfunnily.github.io/2020/09/ffmpegvideo/
- 更新时间:2024-04-16 01:01:05
- 本文声明:转载请标记原文作者及链接