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 给视频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可以为视频加水印,水印可以是文字,也可以是图片,主要用来标记视频所属标记。以下为参数列表
f858f4dd0efb0cdbb44030978ce5deb8.png

加文字

使用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的滤镜参数
cc5ae74901ef0e9468de3f9e99ad9e54.png
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

--完--