一只海星的主页

海思MP4开发系列(一)GPAC交叉编译(Hi3559 + H265 + gpac + MP4)

参考

  1. Hi3559AV100 下gpac交叉编译
  2. 海思3516A 运行mp4box工具,移植gpac 0.4.0
  3. 使用gpac封装mp4
  4. 无法解决R_AARCH64_ADR_PREL_PG_HI21重定向于符号__stack_chk_guard@GLIBC_2.17

背景

传统MP4封装,大部分都只是使用libmp4v2库,H264+libmp4v2网上教程也很多,但8012年和H265一起来了,技术应更好的兼容后续拓展,Mp4v2目前是无人维护的状态也不支持H265,所有我们选择了gpac作为新的MP4封装的轮子,盘它!

编译环境

主机:Ubuntu-16.04
目标机器:海思3559A
编译工具链:aarch64-himix100-linux-

zlib交叉编译

zlib是一个压缩库,gpac依赖zlib,我们首先编译一个libz.a

下载

使用最新版本:zlib-1.2.11
zlib官网下载地址:点我

交叉编译zlib

  • 解压进入文件夹zlib-1.2.11
  • 指定编译器
    export CC=aarch64-himix100-linux-gcc
  • 配置生成Makefile
    ./configure --prefix=$PWD/_install
  • 编译生成
    make -j$(nproc)
    make install

生成目录

在本目录_install下会生成如下三个目录:
include lib share

gpac交叉编译

下载

git clone [https://github.com/gpac/gpac.git](https://github.com/gpac/gpac.git)

添加zlib

将zlib-1.2.11/_install/lib目录下libz.a拷贝到gpac/extra_lib/lib/gcc/目录下

交叉编译gpac

  • 配置生成Makefile
./configure --prefix=PWD/_install --cc=aarch64-himix100-linux-gcc --cxx=aarch64-himix100-linux-g++ --extra-cflags=-fPIC -IPWD/extra_lib/include/zlib --extra-ldflags=-L$PWD/extra_lib/lib/gcc --use-zlib=local --disable-x11 --disable-x11-shm --disable-x11-xv
--cc、--cxx是指定编译器
--extra- --use-zlib 指定zlib库
--disable 这个是界面相关的,我用不到可以先去掉,根据自己情况,去留随意

– 修改config.mak
这一步不一定需要,因为看有些工具没改过来,安全起见修改最好
将config.mak中几个工具全部替换成交叉编译链工具

CC=@aarch64-himix100-linux-gcc
AR=@aarch64-himix100-linux-ar
RANLIB=@aarch64-himix100-linux-ranlib
STRIP=@aarch64-himix100-linux-strip
  • 编译生成
    make -j$(nproc)
    make install

生成目录

在本目录_install下会生成如下目录:
bin include lib man share
bin下 MP4Box可以用来测试

目标板测试

环境变量增加库路径搜索

将zlib下的lib和gpac下的lib库放到nfs目录的同一个文件夹
将gpac下的bin目录也拷贝到nfs目录
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/nfs_share/gpac/lib

MP4封装测试

进入gpac/bin目录,使用MP4Box工具测试将H265数据封装成Mp4

~/nfs_share/gpac/bin # ./MP4Box -add ../../video_hayson.h265 test.mp4
HEVC import - frame size 1280 x 720 at 25.000 FPS
HEVC Import results: 103 samples (115 NALUs) - Slices: 4 I 99 P 0 B - 0 SEI - 4 IDR
Saving to test.mp4: 0.500 secs Interleaving

播放

chmod 777 test.mp4
VLC和ffplay均可以播放

发表评论

邮箱地址不会被公开。 必填项已用*标注