首页 > 技术文章 > 音视频技术开发--FFmpeg+libx264配置安装

hankgo 2021-11-09 00:53 原文

之前几篇完成了V4L2的学习,通过V4L2我们能够采集到了YUYV的视频数据,不过可以看到直接传输YUV格式的数据,数量量是巨大的,网络延时严重。所以我们需要对YUV数据进行压缩编码。

目前主流的视频编码有h.264/h.265/vp9/AVS/AV1等等,这边我们以最常见最经典的h.264格式来压缩视频。基于学习的目的,我们通过x265开源编码库来压缩,可以直接通过调用x264库来实现,也可以通过FFmpeg来间接调用x264,为了后续FFmpeg的学习,我们直接使用FFmpeg来调用。所以,首先需要先配置FFmpeg、x264的环境。

一、编译x264

源码地址:git clone https://code.videolan.org/videolan/x264.git

配置编译环境:./configure --enable-static --disable-asm --prefix=/home/hank/Desktop/share/x264/out   

                        ./configure --enable-static --disable-asm --prefix=/home/hank/Desktop/share/x264/out --disable-opencl (最新版本需要去使能opencl,见FFmpeg编译) 

其中 --enable-static表示需要生成静态库, 如果想生成静态库,改为--enable-shared; --prefix指定安装目录,make install以后会吧头文件/库等产物放到该路径。

 make;make install;

等待编译完成后,可以看到安装路径下已经有产物,产物为x264可执行程序,include对外API头文件,lib路径中的静态库等。

 看下x264版本信息:

 

二、编译FFmpeg

① 源码地址:git clone git@github.com:FFmpeg/FFmpeg.git

可以看到FFmpeg库已经比较庞大了

② 配置编译环境:如下图所示,配置FFmpeg, --enable-static表示生产静态库;--enable-libx264表示使能外部libx264 --enable-gpl开启libx264必须使能gpl协议。--extra-cflags和 --extra-ldflags指定libx264对应产物路径。

./configure  --prefix=/home/hank/Desktop/share/ffmpeg/out --extra-cflags=/home/hank/Desktop/share/x264/out/include --extra-ldflags=/home/hank/Desktop/share/x264/out/lib

 运行./build.sh以后有如下报错:

 google了下,目前最新的libx264需要配置--disable-opencl,以使FFmpeg能找到库,所以返回第一步重新配置编译libx264,然后运./build.sh,配置成功。

 配置完成FFmpeg,可以看到已经成功找到了libx264库:

 make;make install

③ 编译产物

可看到make install以后在指定的路径下面生产了头文件/静态库/可执行程序等产物。

查看FFmpeg版本:

 

 

以上完成了FFmpeg+libx264的环境配置,接下去就可以使用FFmpeg/libx264的库和API来压缩编码V4L2采集的YUV图片了。

 

推荐阅读