4.1.2 FFmpeg配置
ffmpeg 可以选择多种视频音频编码器对媒体进行渲染
这里我们选择几种我们会用到的视频编码器来安装。
因为上一节是默认配置安装,所以我们只有一些列基础库。
1.确认组件
因为上一节是默认配置安装,所以我们只有一些列基础库,如图4-6。
ffmpeg -version
图4-6
2.libx264
libx264是当下十分火热的H264编码器。有着非常广泛的应用。
H264的优势:低码率,流畅连续的高清图像,高容错率,网络适应性强,高压缩比。
H.264的压缩比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。 举个例子,原始文件的大小如果为88GB
采用MPEG-2压缩标准压缩后变成3.5GB,压缩比为25∶1
采用H.264压缩标准压缩后变为879MB,从88GB到879MB
H.264的压缩比达到惊人的102∶1
#ffmpeg x264的使用
ffmpeg -i /tmp/nh.mp4 -vcodec libx264 -acodec aac -f flv rtmp://172.26.22.30:1935/mylive/66
可以看到我在命令中增加了-vcodec -acodec使用视频编码器libx264,使用音频编码器aac
3. libx264安装
重新配置及编译安装ffmpeg将新的libx264配置到ffmpeg
cd /download/ffmpeg
./configure --prefix=/usr/local/ffmpeg --enable-libx264 --enable-gpl
#启用libx264,libx264需要gpl
#提示ERROR: libx264 not found,x264需要我们自己安装,而并不是ffmpeg所默认包含的库
因为x264会依赖NASM的汇编加速,因此我们先安装NASM。
如果不安装NASM,会报错 Minimum version is nasm-2.13。
安装NASM
安装后结果如图4-7。
下载nasm版本不得小于2.13
http://www.nasm.us/pub/nasm/releasebuilds/
mkdir /download/nasm
rz nasm-2.13.03rc1.tar.bz2
tar -jxvf nasm-2.13.03rc1.tar.bz2 #解压文件包
mv nasm-2.13.03rc1 nasm
cd nasm
./configure --prefix=/usr/local/nasm #配置安装目录
make & make install #编译与安装
#修改环境变量
vim /etc/profile
添加 export NASM=/usr/local/nasm/
export PATH 头部追加 $NASM/bin:
图4-7
source /etc/profile #生效设置
安装x264
下载最新版x264
http://www.videolan.org/developers/x264.html
mkdir /download/x264
rz last_x264.tar.bz2
tar -jxvf last_x264.tar.bz2 #解压文件包
mv x264-snapshot-20180123-2245 x264
cd x264
./configure --prefix=/usr/local/x264 --enable-shared #配置动态库
./configure后会列出配置清单来确认,如图4-8。
图4-8
make & make install #编译与安装
cd /download/ffmpeg
./configure --prefix=/usr/local/ffmpeg --enable-libx264 --enable-gpl
依然报错找不到libx264
tail /download/ffmpeg/ffbuild/config.log 查看原因,如图4-9。
图4-9
看一下make install x264时的输出信息,如图4-10。
图4-10
可以看到x264文件的目录,因为我们安装的时候手动选择了安装路径--prefix=/usr/local/x264,因此x264目录下的lib,include目录中的文件无法被ffmpeg自动发现
配置ffmpeg pkgconfig默认路径的环境变量
让ffmpeg可以发现我们自定义的x264文件
vim /etc/profile
添加 export PKG_CONFIG_PATH=/usr/local/x264/lib/pkgconfig
#这里就不需要再配置到PATH了
./configure --prefix=/usr/local/ffmpeg --enable-libx264 --enable-gpl
成功配置执行后会提示一下内容,证明成功,如图4-11。
图4-11
之后我们执行make&make install,会发现依然有报错,如图4-12。
图4-12
这里不要着急,仔细看下错误,libx264.c文件中对x264的使用与当前安装的x264版本有问题。我们明明是下载官网最新版怎么会有这样的问题?
首先要了解因为x264与ffmpeg是两个不同的开源项目,官网发布打包不及时很可能会出现“最新的”ffmpeg无法兼容“最新的”x264。
我们进入x264官网查看它的git信息(http://git.videolan.org/?p=x264.git;a=summary) 并与ffmpeg git(https://github.com/FFmpeg/FFmpeg) 去匹配问题,发现ffmpeg在git中迭代了这个与x264不匹配的问题版本,但是他没有放到官网。
修复ffmpeg与x264匹配问题
由此确定是我们ffmpeg版本的问题,那么我们从git下载最新版并且重新安装即可。
打开网站https://github.com/FFmpeg/FFmpeg ,我选择Download ZIP。
#删除已安装的ffmpeg
rm -rf /usr/local/ffmpeg
#删除错误版本的ffmpeg安装包与解压缩后目录
rm -rf /download/ffmpeg*
#创建新目录
mkdir /download/ffmpeg
#上传下载好的git最新版ffmpeg
rz FFmpeg-master.zip
#安装zip解压命令
yum install -y unzip
unzip FFmpeg-master.zip
这里配置应该是成功的,因为在上面的文章中已经配置过PKG_CONFIG_PATH环境变量 如果你还是报错请仔细看上边的文章
#执行配置命令
./configure --prefix=/usr/local/ffmpeg --enable-libx264 --enable-gpl
make & make install
#安装完毕尝试一下
ffmpeg -i /tmp/nh.mp4 -vcodec libx264 -acodec aac -f flv rtmp://xx
#错误提示
#ffmpeg: error while loading shared libraries:
#libx264.so.155: cannot open shared object file: No such file or directory
#找不到libx264.so,这个文件在/usr/local/x264/lib中
#设置动态库
cd /etc/ld.so.conf.d/
mkdir x264.conf
#添加一条信息
/usr/local/x264/lib
#生效
/sbin/ldconfig -v
#配置完毕,ffmpeg libx264模块已经可以使用了