最近在搞FFmpeg RTSP视频流解码, 关于这块交叉编译的资料比较少,填了很多坑,记录一下笔记。
吐槽
首先不得不吐槽一点,全志给的资料真的太少了,SDK做得也不行,想要份Linux-SDK 的API 文档,还要申请企业认证才能给,一堆认证流程,属实是烦。。。
吐槽归吐槽,工作还是要做的,要是早知道这么坑,就不会听信那销售员的推销采用A40了,用海思多好,SDK里自带了视频流的解码,开发文档全部开放,API接口一应俱全,辣鸡全志,难怪打不过海思。。。
交叉编译
环境配置
- 宿主机环境: Windows7 64位 专业版
- Ubuntu环境:Ubuntu 12.04
- 内核版本: Linux 3.10
- 交叉编译器:arm-linux-gnueabihf-
- Ubuntu gcc/g++ : gcc version 4.8.4
- cmake版本:cmake version 3.18.1
准备工作:在Ubuntu 下,/opt
目录下新建三个文件夹,分别是:ffmpeg_source,ffmpeg_build,bin
,使用以下命令:
以root身份登陆Ubuntu
cd /opt
mkdir ffmpeg_source ffmpeg_build bin
交叉编译fdk-aac
fdk-aac 是音频解码库,其能够对视频流中的音频数据进行解码,所以是必不可少的一环。
编译组件安装包我都放在/opt/ffmpeg_source
目录下
进到/opt/ffmpeg_source
目录:
下载fdk-aac,重命名、解压
cd /opt/ffmpeg_source
wget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/master
mv fdk-aac.tar.gz fdk-aac-new.tar.gz
tar xvf fdk-aac-new.tar.gz
进入目录,生成Makefile
cd fdk-aac-new
./autogen.sh
(生成成功)
如果没有出错的话,就能进行下一步configure
,出错了应该是环境缺少依赖
配置编译常数:
mkdir /opt/aac_bin
./configure --prefix=/opt/aac_bin --host=arm-linux-gnueabihf --disable-shared
- --prefix:编译生成目录,/opt/aac_bin;
- --host:交叉工具链,arm-linux-gnueabihf;
编译:
make -j4
这里根据自己电脑配置选择参与编译的核心数目,这个源码比较小,编译很快,直接使用make
也行。
(编译成功)
安装
make install
(安装成功)
安装成功后,会在/opt/aac_bin
目录下生成三个文件夹,如下图所示,即表示交叉编译fdk-aac成功;
交叉编译x264
下载x264
源码,解压
git clone https://github.com/mstorsjo/fdk-aac.git
tar jxvf x264-master.tar.bz2
进入目录,配置编译常数,生成Makefile
cd x264-master
./configure --prefix=/opt/x264_bin --enable-static --host=arm-linux-gnueabihf --cross-prefix=arm-linux-gnueabihf- --disable-asm
(配置成功)
编译:
make -j4
(编译成功)
然后进行安装:
make install
(安装成功)
安装成功后,会在/opt/x264_bin
目录下生成三个文件夹,如下图所示,即表示交叉编译x264成功:
交叉编译x265
注意:x265 使用cmake
进行编译,并且Ubuntu 12.04 默认的cmake版本比较低,直接编译会无法通过,一定要重新下载cmake源码,自行编译一个cmake,并加入到环境变量,这里是个坑...
我使用的cmake版本是:cmake version 3.18.1
下载x265 源码,我下载的是 3.0 版本,去下面链接下载:http://ftp.videolan.org/pub/videolan/x265/
下载好了FTP传到Ubuntu /opt/ffmpeg_source
目录下
解压、进入目录:
tar xvf x265_3.0.tar.gz
cd /x265_3.0
注意:这个版本的源码,在/x265_3.0/build/arm-linux
目录下,已经有了make-Makefiles.bash
和toolchain.cmake
文件,不需要自己再去新建编译脚本,低版本的源码没有这两个文件,需要自己新建,非常麻烦 = =
进入编译目录,运行脚本生成Makefile:
cd /build/arm-linux
chmod 777 make-Makefiles.bash
./make-Makefiles.bash
(配置成功)
更改CMAKE_INSTALL_PREFIX
路径,即更改交叉编译生成的路径,默认是生成在/usr/local
下的,不便于我们后面的编译,所以单独存放于/opt/x265_bin
vim cmake_install.cmake
将
# 更改 set(CMAKE_INSTALL_PREFIX "/usr/local") 为
set(CMAKE_INSTALL_PREFIX "/opt/x265_bin")
(更改输出路径)
编译:
make -j4
(编译成功)
安装:
make install
安装成功之后,在/opt/x265_bin
目录下,会生成三个文件夹,如上图所示,即表示交叉编译x265成功
(未完待续...)
版权属于:编码书生
本文链接:https://codess.cc/archives/437.html
所有原创文章采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
除特别注明,您可以自由的转载和修改,但请务必注明文章来源且不可用于商业目的。
1 条评论
唉,我也是被忽悠,买了个全志A40i的板子做摄像头推流,谁曾想连个像样的demo都没有,文档也少。