1. 准备工具
- MacBook Pro
- homebrew
- ffmpeg
2.工具安装
homebrew
安装
说起homebrew
确实是Mac上非常好用的一个工具,像什么CocoPods,node,ffmpeg
等等安装都不在话下。不过因为用的是公司的电脑,之前不知道咋折腾把Mac
的管理权限都给弄没了,啥都安装不了。要解决此问题可以参考以下博客
Mac
丢失管理员权限解决办法
homebrew安装命令
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
为Mac安装ffmpeg
使用ffmpeg
命令一般有两种方式,第一种是自己编译ffmpeg
源码,通过调用ffmpeg
的main()
函数来执行ffmpeg
命令(以后有机会可以写个有关ios上使用ffmpeg
命令的博客)。第二种是直接安装到Mac
上,使用终端来管理。
使用homebrew
安装ffmpeg
brew install ffmpeg
检查ffmpeg
是否安装成功
brew info ffmpeg
有关ffmpeg
安装博客较多,这里就不在赘述。到这里使用ffmpeg
给视频加水印的准备工作就完成了。
给视频加图片水印
相比给视频增加文字水印,图片水印相对简单一些。具体原因后面我会说明。
在视频右下角的添加图片水印
ffmpeg -i 仓库实景.mp4 -vf "movie=wenzi.png[watermark];[in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] " output.mp4
下面来说明一下这条命令中基本参数的含义
-i
:一般表示输入仓库实景.mp4
:这里表示要处理的视频源- -
vf
:滤镜相关,视频裁剪,水印等等操作都需要它完成 wenzi.png
: 要添加的水印图片地址overlay
:水印参数main_w-overlay_w-10
: 水印在x轴的位置,也可以写成x=main_w-overlay_w-10
main_h-overlay_h-10
:水印在y轴的位置
至于里面其他参数的意义如[watermark
],我个人猜测可能是类似标记之类的东西,方便阅读的(ps:有了解的小伙伴可以告知一声哈)在ffmpeg
的文档中也没有找到这个参数。
ffmpeg
官方提供了另外一种添加图片水印的方法
在视频右下角的添加图片水印
ffmpeg -i input.mp4 -i logo.png -filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' output.mp4
在视频左下角添加图片水印
ffmpeg -i input.mp4 -i logo.png -filter_complex 'overlay=x=10:y=main_h-overlay_h-10' output.mp4
参数解析
-filter_complex
: 相比-vf
,filter_complex
适合开发复杂的滤镜功能,如同时对视频进行裁剪并旋转。参数之间使用逗号(,)隔开即可main_w
:视频宽度overlay_w
: 要添加的图片水印宽度main_h
: 视频高度overlay_h
:要添加的图片水印宽度
ffmpeg
官方文档实现:ffmpeg文档地址
给视频添加文字水印
在视频左上角添加一条白色字体的文字水印
ffmpeg -i input.mp4 -vf "drawtext=fontfile=simhei.ttf: text=‘技术是第一生产力’:x=10:y=10:fontsize=24:fontcolor=white:shadowy=2" output.mp4
参数说明
fontfile
:字体类型text
:要添加的文字内容fontsize
:字体大小fontcolor
:字体颜色
然后,执行上面的命令。然鹅出现了以下错误
这个错误是很明显的,直译过来就是缺失一种filter
(滤镜),叫做drawtext
。可是这个drawtext
到底是个什么东西呢(PS:一开始受到一些误导我认为是因为本地缺少字体)ffmpeg
文档里有一段对drawtext
的介绍
这里很明确的说了,drawtext
用来在“视频顶部的指定文件中绘制文本字符串或文本”。如果想使用drawtext
这个filter
,在编译ffmpeg
的时候就必须支持freetype
。那么如何检查我们安装的ffmpeg
是否支持freetype
呢,好吧,现在让我们回到安装ffmpeg
的地方。执行 ffmpeg
是否安装成功的命令(brew info ffmpeg
)里有如下信息。
可以看到freetype
是不支持的。那么剩下的就很明确了,配置ffmpeg
的configure
参数,让它支持freetype
即可。
安装freetype
brew install freetype
安装ffmpeg
brew install ffmpeg --with-freetype
已经安装过ffmpeg
brew reinstall ffmpeg --with-freetype
如果还是安装不上的话可以尝试先执行卸载第三方库的命令
brew uninstall freetype
暴力点甚至可以先卸载ffmpeg
,再执行以上命令
brew uninstall ffmpeg
再来看看ffmpeg
支持的类型
已经支持freetype
了
接着再执行ffmpeg
添加字体水印命令即可。