海思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 -I$PWD/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均可以播放

 

創作不易,歡迎點贊!海星出品,轉載請註明出處!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章