一、编译安装需要的开源编码格式:
首先在编译安装这些开源编码格式之前,我们要明白为啥需要他们:
- aac
- x264
- x265
为啥需要呢?如果你对ffmpeg稍微了解的话,ffmpeg本身是一个框架,自身默认并没有支持这三种编码格式,所以需要我们手动添加来支持!
ok,明白了这个之后,我们开始来下载这三个开源编码格式源码包:
1、编译aac:
aac下载链接:
wget https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-2.0.2.tar.gz
开始编译
./configure --prefix=/usr/local/ffmpeg/ --enable-shared
make -j8 && make install
这里我把编译出来的东西都放在/usr/local/ffmpeg/,而且这里只编译动态库出来;大家按照上面两个步骤操作就行。
最终编译出来的动态库,就放在/usr/local/ffmpeg/lib下面,头文件在/usr/local/include下面。
2、 编译x264:
x264下载链接:
wget http://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20191024-2245-stable.tar.bz2
开始编译:
./configure --prefix=/usr/local/ffmpeg --enable-static --enable-pic
make -j8 && make install
这里把编译出来的东西同样放在路径/usr/local/ffmpeg,而且编译的是静态库。
注意:这里你第一次安装的话,会报错nasm版本过低,这个时候你要重新下载nasm源码安装编译
这里我给大家nasm的安装步骤;首先是nasm的下载链接:
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2
编译步骤:
./configure
make -j8 && make install
ok,这个操作就比较简单,你按照这个操作就行;第一次安装x264的话,通过重新安装nasm,是可以解决报错的,然后我们接着来安装x264。
3、编译x265:
x265下载链接:
wget http://ftp.videolan.org/pub/videolan/x265/x265_3.2.tar.gz
编译步骤:
cd x265_3.2/build/linux/
./make-Makefiles.bash
make -j8 && make install
刚开始大家采用模式安装到/usr/local/目录下了,我们可以结合情况修改安装路径或者将对应的动态库拷贝制定的路径下/usr/local/ffmpeg,x265编译出来的库和头文件默认分别放在/usr/local/lib和/usr/local/include路径下!
二、最新ffmpeg源码编译安装
这里我们用gitte上的源码,github上的下载会有点慢,或者可以自己下载安装包(ffmpeg下载)
git clone https://gitee.com/mirrors/ffmpeg/
然后开始编译:
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-shared --enable-version3 --enable-nonfree --enable-pthreads --enable-libx264 --enable-libx265 --enable-libfdk-aac
make -j8 && make install
我们就是手动把aac、x264、x265编码格式给强制打开,这里也提一下其他enable的作用:
- --enable-pthreads:启用pthreads(多线程)(默认关闭,可能会有线程安全问题)
- --enable-gpl:允许使用GPL(默认关闭)
- --enable-shared :构建共享库(默认关闭)
- --enable-version3:升级GPL到版本3(默认:关闭)
- --enable-nonfree:允许使用非免费的代码, 产生的库和二进制程序将是不可再发行的
- --prefix=/usr/local/ffmpeg:把ffmpeg编译出来的东西都放在这个路径下去
我们发现找不到libfdk_aac,那怎么解决呢,问题出在找不到它路径,所以我们配置一下环境变量:
vim ~/.bashrc
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/ffmpeg/lib/pkgconfig"
然后退出,执行一下source ~/.bashrc使其生效。为什么我们这里要这样操作,这里主要通过下面这个里面fdk-aac.pc这个文件去定位fdk-aac。
这个时候再执行刚才的那个配置,就可以解决这个问题,如果后期遇到类似的问题,都可以参考这种方法去解决,核心是要找到你编译出来的.pc后缀对应的文件就行:
这里也配置一下环境变量:
vim /etc/profile
修改后生效指令
souce /etc/profile
export PATH="$PATH:/usr/local/ffmpeg/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/ffmpeg/lib"
这个时候,我就可以在任何终端路径查看ffmpeg的版本了:
ffmpeg -version