安装ffmpeg给视频添加水印

FFMPEG

CentOS 7,具有完全 root 访问权限。

注意:此方法的 ffmpeg 安装也适用于 centos 6.x,cpanel,directadmin
从 repo 导入 GPG 密钥:

1
rpm --import http://packages.atrpms.net/RPM-GPG-KEY.atrpms

安装 ATRPMS Repo:

1
rpm -ivh http://dl.atrpms.net/all/atrpms-repo-6-7.el6.x86_64.rpm

Ffmpeg 需要 libdc1394-devel,它在 epel 库中可用。 执行以下命令安装 epel 存储库:

1
rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm

ATRPMS 安装 FFMpeg 存储库

1
yum -y --enablerepo = atrpms install ffmpeg ffmpeg-devel

验证ffmpeg版本:

1
2
3
4
5
6
7
8
9
10
11
12
ffmpeg -version
ffmpeg version 2.2.1
built on Jun 17 2014 01:25:46 with gcc 4.8.2 (GCC) 20140120 (Red Hat 4.8.2-16)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --enable-shared --enable-runtime-cpudetect --enable-gpl --enable-version3 --enable-postproc --enable-avfilter --enable-pthreads --enable-x11grab --enable-vdpau --disable-avisynth --enable-frei0r --enable-libdc1394 --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --disable-stripping
libavutil 52. 66.100 / 52. 66.100
libavcodec 55. 52.102 / 55. 52.102
libavformat 55. 33.100 / 55. 33.100
libavdevice 55. 10.100 / 55. 10.100
libavfilter 4. 2.100 / 4. 2.100
libswscale 2. 5.102 / 2. 5.102
libswresample 0. 18.100 / 0. 18.100
libpostproc 52. 3.100 / 52. 3.100

使用方法摘自国外博客,有兴趣的可以看看
FFMPEG 博客

watermarking-videos-from-the-command-line-using-ffmpeg-filters/
在某些情况下,您可能不知道要加入水印的视频的确切尺寸。 幸运的是,有一些变量可以用来更好地定位水印,这取决于视频的大小。 这些变量包括:

  • main_h - 视频的高度
  • main_w - 视频的宽度
  • overlay_h - 重叠广告的高度
  • overlay_w - 重叠式广告的宽度

使用这些变量,我们可以将水印定位在视频的中心,如下所示:

1
2
ffmpeg -i birds.mp4 -i watermark.png
-filter_complex "overlay=x=(main_w-overlay_w)/2:y=(main_h-overlay_h)/2" birds2.mp4

如果我们想要为剪辑添加品牌或水印,但不覆盖现有视频,我们可以使用 pad 过滤器为剪辑添加一些填充,然后将我们的水印放在填充上,如下所示:

1
2
3
ffmpeg -i birds.mp4 -i watermark2.png
-filter_complex "pad=height=ih+40:color=#71cbf4,overlay=(main_w-overlay_w)/2:main_h-overlay_h"
birds3.mp4

一旦你开始得到这个的概念之后,你甚至可以让你的水印动起来

1
2
ffmpeg -i birds.mp4 -i watermark.png
-filter_complex "overlay='if(gte(t,1), -w+(t-1)*200, NAN)':(main_h-overlay_h)/2" birds4.mp4

如果遇到这个 error

1
The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.

那就添加个参数吧

1
ffmpeg -i yii.mp4 -i logo.jpg -strict -2 -filter_complex "overlay=x=(main_w-overlay_w)/2:y=(main_h-overlay_h)/2" birds2.mp4

如果遇到其他错误,就去查查资料吧