音视频技术应用(3)-Linux编译x264,x265,fdk-aac, ffmpeg 测试并运行
本文测试的环境为 ubuntu18.06, 下载地址:http://mirrors.aliyun.com/ubuntu-releases/18.04/ubuntu-18.04.6-desktop-amd64.iso
1. 安装可能用到的工具链
打开终端,执行下列指令,安装所有用到的工具链:
sudo -i apt-get install make cmake g++ nasm yasm diffutils pkg-config -y
-y 表示不必每次询问,每次都是yes
2. 编译x264
首先下载x264的源码:
链接: https://pan.baidu.com/s/116ctuWFJcOUdBPSdujST8g 提取码: 5eug
下载完成后解压,然后 cd 到 x264的当前目录下打开终端,执行下列指令:
执行配置项:
./configure --enable-shared --prefix=/usr
执行make -j16
安装到usr 目录下,之所以安装到usr目录下是因为linux的系统环境变量默认已经支持该路径。
执行make install
可以看到x264已经顺利安装到/usr目录下,这样x264就编译好了。
3. 编译x265
接下来编译x265,首先下载x265的源码:
链接: https://pan.baidu.com/s/1PjQD_ZOri_HSVY9pcRLgQg 提取码: i3a2
下载完毕后解压,然后定位到x265的build/linux目录:
可以看到x265提供了一个名为make-Makefiles.bash 的文件用于自动生成Makefile, 下面执行该文件生成Makefile:
执行:./make-Makefiles.bash
执行完毕后发现当前目录下已经可以生成了Makefile文件:
PS: 若编译时提示:
需要安装cmake-curses-gui:
然后在运行上面的 ./make-Makefiles.bash 脚本,就没得问题了, 最后就是 make:
make-j16
make install
这样x265就编译完了。
4. 编译fdk-aac
首先下载fdk-aac的源码文件:
链接: https://pan.baidu.com/s/1HYj8gkLBDhd4N8FKgi9Tiw 提取码: nskj
下载完成后解压,然后定位到fdk-aac的根目录:‘
执行./autogen.sh, 以生成configure文件:
若提示 autoreconf not found, 则需要安装automake 工具,使用下列指令安装这些工具:
apt-get install autoconf automake libtool -y
再次执行./autogen.sh 就不会报错了:
同时也得到了configure文件:
下面更新一下配置项:
./configure --enable-shared -prefix=/usr
make -j16
make install
这样fdk-aac就编译好了。
5. 编译ffmpeg
首先下载ffmpeg的源码:
链接: https://pan.baidu.com/s/16AZP8wxHiDgY3jyQ8GhWfQ 提取码: 3sjv
下载完成后解压,并定位到ffmpeg的当前目录:
配置configure 文件,生成makefile
./configure --enable-shared --prefix=/usr --disable-programs --disable-ffplay --disable-ffmpeg --disable-ffprobe --enable-libx264 --enable-gpl --enable-libfdk-aac --enable-nonfree --enable-libx265
make -j16
make install
这样ffmpeg就编译好了。
6. 测试ffmpeg是否能在linux环境下正常运行
将先前在windows环境编译好的first_ffmpeg项目拷贝到linux环境下:
我们为这个项目编写一个简单的makefile 用于编译 first_ffmpeg.cpp
first_ffmpeg:first_ffmpeg.cpp g++ $^ -o $@ -lavcodec
first_ffmpeg:first_ffmpeg.cpp // 冒号后面代表的是依赖项
$^ // 表示提取依赖项
$@ // 表示编译的目标项,这里就是first_ffmpeg.
执行make 指令,并且执行./first_ffmpeg, 如果能够看到下列log信息,则说明ffmpeg 已经可以正常编译并运行了,。
PS: 如果提示x265 库找不到,则执行:cp /usr/local/lib/libx265.x /usr/lib 将x265的库由/usr/local目录拷贝到/usr/lib目录下。x265当前默认编译在usr/local/lib目录下。
<完>