ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 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可以为视频加水印,水印可以是文字,也可以是图片,主要用来标记视频所属标记。以下为参数列表 ![waAeZd.png](https://s1.ax1x.com/2020/09/12/waAeZd.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的滤镜参数 ![waAtds.png](https://s1.ax1x.com/2020/09/12/waAtds.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 ```