ffmpeg主要用于音视频转码,以及增删水印等处理,是一款简单实用且强大的音视频处理工具。
前置需要安装nasm和x264。
nasm:是一个为可移植性与模块化而设计的一个80x86的汇编器。它支持相当多
的目标文件格式
X264:x264是采用GPL授权的视频编码自由软件。x264的主要功能在于进行H.264/MPEG-4 AVC的视频编码,而不是作为解码器(decoder)之用。
X264非常重用,比如笔者在去除水印的生产实践中,如果不使用x264,去除水印后的文件大小是原文件的2倍;但是如果使用x264编码,只比原文件增加不到10%的大小,差异非常明显,尤其对于视频类业务,可以大量节约带宽成本。
目录
(1).nasm安装
(2).x264安装
(3).ffmpeg下载与部署
(4).参考资料
正文
(1).nasm安装
为了编译x264。
vim /etc/yum.repos.d/nasm.repo,写入:
[NASM]
name = Netwide Assembler
baseURL=http://www.nasm.us/pub/nasm/stable/linux/
启用= 1
gpgcheck = 0
[NASM测试]
name = Netwide Assembler(发布候选版本)
baseURL=http://www.nasm.us/pub/nasm/testing/linux/
启用= 0
gpgcheck = 0
[NASM快照]
name = Netwide汇编程序(每日快照构建)
baseURL=http://www.nasm.us/pub/nasm/snapshots/latest/linux/
启用= 0
gpgcheck = 0
yum install nasm
(2).x264安装
为了让ffmpeg使用h264编码。
ffmpeg中自带h264的解码,但是没有包含编码,所以再执行avcodec_find_encoder(CODEC_ID_H264)时返回的结果为NULL,需要额外添加x264支持h264的编码。
官网下载:https://www.videolan.org/developers/x264.html
ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
git下载:git clone https://code.videolan.org/videolan/x264.git
上边都下载不了,到这里:
https://code.videolan.org/videolan/x264/tree/stable
选择:
wget https://code.videolan.org/videolan/x264/-/archive/stable/x264-stable.tar.gz
编译/部署:
yum install install gcc libc6-dev
./configure --enable-shared --prefix=/app/3rd/x264
make
make install
[root@mysql-monitor-node1 x264-stable]# make install
install -d /app/3rd/x264/bin
install x264 /app/3rd/x264/bin
install -d /app/3rd/x264/include /app/3rd/x264/lib/pkgconfig
install -m 644 ./x264.h x264_config.h /app/3rd/x264/include
install -m 644 x264.pc /app/3rd/x264/lib/pkgconfig
install -d /app/3rd/x264/lib
ln -f -s libx264.so.157 /app/3rd/x264/lib/libx264.so
install -m 755 libx264.so.157 /app/3rd/x264/lib
include和lib目录在ffmpeg编译时要做关联,否则编译ffmpeg启用x264时会报错:ERROR: libx264 not found
(3).ffmpeg下载与部署
官网下载:http://ffmpeg.org/download.html
wget https://ffmpeg.org/releases/ffmpeg-4.1.3.tar.bz2
解压:
bzip2 -d ffmpeg-4.1.3.tar.bz2
tar -xvf ffmpeg-4.1.3.tar
编译:./configure --enable-shared --prefix=/app/3rd/ffmpeg-4.1.3
直接编译提示:nasm/yasm not found or too old。
可以使用--disable-yasm禁用这个选项编译,yasm是一款汇编器,并且是完全重写了nasm的汇编环境,接收nasm和gas语法,支持x86和amd64指令集,所以这里安装一下yasm即可;
安装yasm:yum install yasm
再次编译:
./configure --enable-shared --prefix=/app/3rd/ffmpeg-4.1.3
make & make install
我们增加/去除水印使用delogo过滤器,所以编译是要加gpl过滤器:–enable-gpl,完整命令如下:
./configure --enable-shared --enable-gpl --prefix=/app/3rd/ffmpeg-4.1.3
否则使用ffmpeg的delogo过滤器时会报错:
为了使用h264编码需要增加参数,增加后为:
./configure --enable-shared --enable-gpl --enable-libx264 --enable-decoder=h264 --enable-encoder=libx264 --enable-static --extra-cflags=-I/app/3rd/x264/include --extra-ldflags=-L/app/3rd/x264/lib --prefix=/app/3rd/ffmpeg-4.1.3
修改文件/etc/ld.so.conf,将x264的lib加入文件,最终形式为:
include /etc/ld.so.conf.d/*.conf
/app/3rd/x264/lib
/app/3rd/ffmpeg-4.1.3/lib
然后执行命令使其生效:ldconfig
功能描述我们是否使用
–enable-gpl水印delogo过滤器要用到。Y
--enable-libopenh264视频h264编码要用到。Y
(4).参考资料
1.使用ffmpeg增删水印
http://www.voidcn.com/article/p-qhzhprrs-brx.html
2.Linux环境ffmpeg以及相应解码器安装
https://www.jianshu.com/p/277fc2300f1e
3.linux下安装ffmpeg
https://www.cnblogs.com/freeweb/p/6897907.html
4.编译ffmpeg并支持H264
https://blog.csdn.net/SerenityMoon/article/details/52174437
5.nasm安装
https://blog.csdn.net/lwhsyit/article/details/85334180
6.Java调用FFmpeg进行视频处理及Builder设计模式的应用
https://www.cnblogs.com/deng-cc/p/10123069.html