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 -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是不支持的。那么剩下的就很明确了,配置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给视频添加图片及文字水印相关推荐

  1. FFmpeg给视频添加图片,文字(vb.net,类库——11)

    给视频添加文字,可以使用添加文字的方法,但是想添加中文字,那只能使用微软雅黑了 那我们想:文字可以被印到图片上,然后图片可以被轻而易举的添加到视频中 借助GDI+完成这一转换 Public Funct ...

  2. html位置插入透明动画文字,视频加移动水印 视频添加图片加文字水印 设置透明漂浮移动并控制显示时间...

    有没有小伙伴平时在看一些视频的时候,视频里会有一张图片然而图片里面有文字,然后是透明的图片,并且还漂浮移动在视频画面里,过了一会儿就自动消失了.这也是一直添加水印的方法,不过是把图片设置了半透明的样子 ...

  3. 生成高清缩略图; 添加图片、文字水印; 图片、文字水印透明

    之前写了一个公共的ImgHelper类,主要提供高清晰缩略图生成,由于在之前的实际操作过程中存在一些问题,最近有了点时间,于是重新拾起来再改进一下,顺便研究一下GDI+. 问题一:产品搜索列表展示,每 ...

  4. php分析图片中水印的位置,thinkphp添加图片、文字水印 自定义位置等

    只添加文字水印 //生成带水印的图片 $image = new \Think\Image(); //定义位置 $path="./Upload/water/".$time." ...

  5. java将数据转为pdf并添加图片、文字水印(表格样式)超简易模式

    pdf预览.导出.文字.图片水印(表格样式) 用到的maven依赖 <!-- pdf --> <dependency><groupId>com.itextpdf&l ...

  6. android视频叠加字符,手机上给视频加logo 安卓手机上给视频加摇摆的文字水印的方法...

    注意此教程方案是『安卓手机端教程方案』 如果在手机端操作不方便或对眼睛不好 也可以用另外电脑端的教程方案操作:视频加旋转水印[找更多方案] 今天要介绍安卓手机上视频编辑助手是可以给视频添加摇摆的文字水 ...

  7. 用Java为视频添加图片水印(类似直播)

    文章目录 1.首先[下载nginx](http://nginx-win.ecsds.eu/download/) 2.[下载ffmpeg](https://pan.baidu.com/s/1LUWeVn ...

  8. ffmpeg 给视频或者图片添加水印和马赛克的方法

    可以使用 FFmpeg 给视频或图片添加水印和马赛克.以下是具体方法: 添加水印 如果需要给视频添加水印,可以使用 overlay 滤镜.该滤镜将两个输入叠加在一起,即将视频和水印画面结合在一起.以下 ...

  9. PHP实现给视频加图片水印,怎么在视频画面上加图片?如何给视频添加自己的图片作为水印?视频添加图片水印的方法...

    今天就是周一啦,昨天周末大家有没有跟好友去玩呢~反正小编是跟同学聚会去了,聚会主题:胖.哈哈哈,不过小编可不跟他们一样只会长胖,小编可是瘦瘦瘦的呢,偷偷的告诉你们,小编减肥瘦了三十斤哦,嘻嘻.好啦,废 ...

最新文章

  1. Leap Motion+第六感或引发人机交互革命
  2. 通过IHS(IBM HTTP SERVER)转发WAS(WEBSPHERE)应用的小问题
  3. Java集合篇:ConcurrentHashMap详解(JDK1.6)
  4. [leetcode]102.二叉树的层序遍历
  5. Valgrind 使用方法
  6. 在LaTex中引用图片失败,出现(??)怎么办
  7. tab栏切换制作(原生js版本)
  8. 【翻译】InterlockedIncrement内部是如何实现的?
  9. MATLAB 和 Python 建模和仿真
  10. Linux内核源代码阅读
  11. B站视频搬运项目,宅男必选!
  12. c++20中的span
  13. DDD,这东西到底是垃圾还是银弹?
  14. 按键精灵定义全局变量_按键精灵2014全局数组变量传递(支持静态与动态)V2
  15. 再见了,“阅兵村”!
  16. stm32全彩LED屏显示
  17. D - National Railway (DP)
  18. 微软股价创历史新高 市值突破1万亿美元
  19. HANA+帆软:“帕累托“累计占比图的实现
  20. 将安卓手机短信导入到iPhone6 plus中

热门文章

  1. 海报设计需要学什么?初学者该报美…
  2. 分治法 第1关:求一组数据中最大的两个数
  3. 身为职场女性,我想和你聊聊天
  4. get和post的区别简述
  5. react native 适配机顶盒、智能电视 遥控器解决焦点问题
  6. Xshell本地指令大全
  7. 【PyCharm使用教程】10分钟快速学会使用PyCharm
  8. 限定IE浏览器的网址验证域失败解决方案
  9. QQ农场牧场源码V4.0
  10. PHP漂流瓶代码,PHP实现的迷你漂流瓶