使用ffmpeg给视频添加图片及文字水印

1. 准备工具

  1. MacBook Pro
  2. homebrew
  3. 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源码,通过调用ffmpegmain()函数来执行ffmpeg命令(以后有机会可以写个有关ios上使用ffmpeg命令的博客)。第二种是直接安装到Mac上,使用终端来管理。
使用homebrew安装ffmpeg

brew install ffmpeg

检查ffmpeg是否安装成功

brew info ffmpeg

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用来在“视频顶部的指定文件中绘制文本字符串或文本”。如果想使用drawtext这个filter,在编译ffmpeg的时候就必须支持freetype。那么如何检查我们安装的ffmpeg是否支持freetype呢,好吧,现在让我们回到安装ffmpeg的地方。执行 ffmpeg是否安装成功的命令(brew info ffmpeg)里有如下信息。
ffmpeg支持列表可以看到freetype是不支持的。那么剩下的就很明确了,配置ffmpegconfigure参数,让它支持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添加字体水印命令即可。

FFmpeg是一个开源的跨平台音视频处理工具,可以用于加水印。加水印是指在视频添加一些文字图片或者其他图形元素,用于标识、保护版权或者增加美观度。 下面是使用FFmpeg视频水印的步骤: 1. 下载和安装FFmpeg:你可以从FFmpeg官方网站(https://ffmpeg.org/)下载适合你操作系统的版本,并按照官方文档进行安装。 2. 准备水印素材:你可以准备一张图片作为水印,也可以使用文字作为水印。如果使用图片作为水印,建议使用透明背景的PNG格式图片。 3. 构建FFmpeg命令:打开命令行终端,输入以下命令来给视频水印: ``` ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=W-w-10:H-h-10" output.mp4 ``` 其中,`input.mp4`是输入视频文件的路径,`watermark.png`是水印图片的路径,`output.mp4`是输出视频文件的路径。`overlay=W-w-10:H-h-10`表示将水印放置在视频右下角,距离右边和底部各10个像素。 如果要使用文字作为水印,可以使用`drawtext`滤镜,例如: ``` ffmpeg -i input.mp4 -vf "drawtext=text='Watermark':x=10:y=10:fontsize=24:fontcolor=white" output.mp4 ``` 其中,`text='Watermark'`表示水印文字内容,`x=10:y=10`表示水印的位置,`fontsize=24`表示字体大小,`fontcolor=white`表示字体颜色为白色。 4. 执行命令:在命令行中执行构建好的FFmpeg命令,等待处理完成。 请注意,以上命令只是示例,你可以根据实际需求调整参数和选项。FFmpeg具有丰富的功能和选项,可以满足不同的视频处理需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值