美文网首页
mp4v2库配置、交叉编译

mp4v2库配置、交叉编译

作者: 黑鼠_DEAN | 来源:发表于2018-12-24 13:51 被阅读0次

    mp4v2 库是一个专用于处理mp4容器的开源项目,其使用c++编写,并提供c语言接口。
    下载mp4v2库的最新代码以后,使用标准linux configure 进行配置,以设置cross-compile、目录等,然后进行编译。具体过程整理如下:

    1. 配置与编译mp4v2

    配置 ./configure --help 可以查看所有配置选项。例如:

    #--prefix 指向交叉编译的SYSROOT路径
    #--CC  指向编译工具链的gcc
    #--CXX 指向编译工具链的g++
    
    export PATH=/opt/grape-buildhf/host/opt/ext-toolchain/bin/:$PATH
    ./configure --prefix=/opt/grape-buildhf/staging/ --host=arm-linux --disable-debug --enable-shared CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++
    
    

    编译,安装目标文件到配置的地点 make ; make install
    得到编译结果文件,没有设置编译路径。
    则在编译目录下.libs,是隐藏文件夹,可以得到静态库目标libmp4v2.a和动态库目标libmp4v2.so.2.0.0,以及指向动态库的两个软链接文件。

    在include目录下可以得到mp4v2库的所有头文件,其中mp4v2.h是顶层include文件。使用mp4v2库时,只需包含mp4v2.h即可。

    2. 使用mp4v2库将H264裸流实时封装的过程

    该示例只插入了视频码流,音频码流插入方法类似
    准备工作

    包含mp4v2头文件#include "mp4v2/mp4v2.h"
    在编译命令中加上链接mp4v2库libmp4v2.a或libmp4v2.so的代码 -static -lmp4v2 或-lmp4v2
    加入mp4v2库依赖的库libstdc++.so和libm.so -lstdc++ -lm

    MP4FileHandle hMP4File = MP4CreateEx(strDstFileName,  0, 1, 1, 0, 0, 0, 0);
    if (hMP4File == MP4_INVALID_FILE_HANDLE)    {
        printf("open file fialed.\n");
        return NULL;
    }
    
    MP4SetTimeScale(hMP4File, 90000);
    
    MP4TrackId video = MP4AddH264VideoTrack(hMP4File, 90000, 90000 / 25, 3840, 2160,
                                            0x64, //sps[1] AVCProfileIndication
                                            0x00, //sps[2] profile_compat
                                            0x1f, //sps[3] AVCLevelIndication
                                            3); // 4 bytes length before each NAL unit
    if (video == MP4_INVALID_TRACK_ID)    {
    printf("add video track fialed.\n");
    return;
    }
    

    写入H264帧(假设一帧数据缓存指针pBuf, 数据长度为nBuf)

    while(!stream_end()){
        MP4WriteSample(hMP4File, video, pBuf, nBuf , MP4_INVALID_DURATION, 0, 1);
    }
    

    关闭MP4文件

    MP4Close(hMP4File, 0);
    

    参考资料

    【mp4文件格式解析】 http://blog.sina.com.cn/s/blog_48f93b530100jz4b.html
    【RTP2MP4】 https://github.com/ZhengfengRao/rtp2mp4

    相关文章

      网友评论

          本文标题:mp4v2库配置、交叉编译

          本文链接:https://www.haomeiwen.com/subject/tixzkqtx.html