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
添加字体水印命令即可。