Linux下编译支持h264、h265、AAC编码的ffmpeg和ffplay

一、编译x264源码

首先下载x264源码:https://code.videolan.org/videolan/x264/

解压,进入源码目录,然后执行命令:

./configure --prefix=$(pwd)/install --enable-static --enable-shared --disable-asm
make
make install

执行完后,即会在源码目录下生成x264的头文件,库文件。

二、编译x265源码

下载x265源码:https://bitbucket.org/multicoreware/x265_git/src/master/

解压,进入源码目录的source目录下,然后执行命令:

cmake -DCMAKE_INSTALL_PREFIX=./install ./
make
make install

执行完后,即会在source目录的install 目录下生成x265的头文件,库文件。

三、编译fdk-aac源码

下载fdk-aac源码:GitHub - mstorsjo/fdk-aac: A standalone library of the Fraunhofer FDK AAC code from Android.

将fdk-aac编译进FFmpeg后进行AAC编码时就可以通过-sample_fmt参数指定采样格式了,否则可能会报错:Specified sample format XXX is invalid or not supported

安装libtool

yum install libtool

如果不安装libtool等下执行autoreconf -fiv命令时可能会报错:

执行命令:

yum install libtool
unzip fdk-aac-master.zip
cd fdk-aac-master
autoreconf -fiv
mkdir install
./configure --prefix=$(pwd)/install --enable-static --enable-shared
make
make install

四、编译sdl源码

要编译出ffplay需要sdl库。

下载sdl源码:https://github.com/libsdl-org/SDL/releases

解压,然后在跟解压后的目录同级的目录下新建build文件夹:

执行上述操作后目录结构如下:

然后执行命令:

cd build/
cmake -DCMAKE_INSTALL_PREFIX=./install ../SDL-release-2.28.5
make
make install

如果cmake出现报错,就删除掉CMakeCache.txt,再重新进行cmake

五、编译FFmpeg源码

下载FFmpeg源码:https://github.com/FFmpeg/FFmpeg/tags

查看pkgconfig路径:

which pkgconfig
whereis pkgconfig

设置环境变量(这里以pkgconfig路径在/usr/lib64/pkgconfig 为例,以实际为准):

export PKG_CONFIG_PATH="/usr/lib64/pkgconfig"

分别拷贝x264、x265、fdk-aac和sdl的.pc文件到pkgconfig目录下

cp x264.pc /usr/lib64/pkgconfig
cp x265.pc /usr/lib64/pkgconfig
cp lib/pkgconfig/fdk-aac.pc /usr/lib64/pkgconfig
cp sdl2.pc /usr/lib64/pkgconfig

这些步骤是为了防止等下configure ffmpeg 的时候报错:ERROR: XXX not found using pkg-config

进入FFmpeg源码目录,执行:

./configure --enable-shared --prefix=$(pwd)/install --enable-ffmpeg --enable-ffplay --enable-debug --disable-optimizations --disable-asm --disable-stripping --enable-libx264 --enable-libx265 --enable-sdl2 --enable-gpl --enable-pthreads --enable-libfdk-aac --enable-nonfree --extra-cflags="-I/root/NfsShareDir/trunk/avs/sdk/x264/inc -I/root/NfsShareDir/trunk/avs/sdk/x265/inc -I/root/NfsShareDir/trunk/avs/sdk/fdk-aac/inc/fdk-aac -I/root/NfsShareDir/trunk/avs/sdk/sdl2/inc" --extra-ldflags="-L/root/NfsShareDir/trunk/avs/sdk/x264/lib -L/root/NfsShareDir/trunk/avs/sdk/x265/lib -L/root/NfsShareDir/trunk/avs/sdk/fdk-aac/lib -L/root/NfsShareDir/trunk/avs/sdk/sdl2/lib"

其中,--enable-debug--enable-ffplay--disable-optimizations --disable-asm --disable-stripping 是为了编译出带有调试信息,可以用gdb调试的ffmpeg和ffplay。

--extra-cflags 指定 x264、x265、fdk-aac和sdl的头文件路径。

--extra-ldflags 指定 x264、x265、fdk-aac和sdl的库文件路径。

make
make install

执行完成后,即会在/root/NfsShareDir/trunk/avs/third_party/FFmpeg-n5.0.3/install 目录下生成ffmpeg的头文件,库文件。

六、编译生成的可执行文件测试

然后我们可以通过命令去验证ffmpeg是否支持x264的编码了:

./ffmpeg -i rtsp://admin:admin@192.168.18.14 -vcodec libx264 -acodec aac -f flv rtmp://172.16.17.154:1935/live/test

通过命令去验证ffmpeg是否支持对aac编码修改音频采样格式:

./ffmpeg -i "rtsp://172.16.17.155/stream/video5" -vcodec copy -acodec libfdk_aac -ar 44100 -sample_fmt s16 -f flv rtmp://127.0.0.1/live/test1

通过命令去验证ffplay是否正常

./ffplay XXX.mp4

如果报错:Failed to initialize a hardware accelerated renderer: Couldn't find matching render driver。说明可能是系统显卡驱动不支持。

参考:

ffmpeg怎么利用gdb调试以及gdb调试快捷键

ffmpeg支持libx264和libx265的安装方法

X265编译

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值