文章目录
  1. 1. 编译mp4v2动态库
    1. 1.1. 下载并解压代码
    2. 1.2. 编译动态库
  2. 2. 使用动态库分离mp4中的h264码流

本文目标:在Android 4.1平台上使用mp4v2库从mp4文件中分离出h264码流

我电脑上已经配置好NDK的环境,在环境变量中添加了NDK_HOME

编译mp4v2动态库

下载并解压代码

下载地址:mp4v2 Download

解压之后在mp4v2-2.0.0目录下新建jni目录,将mp4v2-2.0.0目录下的文件/文件夹都放入其中,我电脑上的目录为D:\code\openSrc\mp4v2-2.0.0\jni

编译动态库

进入jni目录

  1. 改名字:libplatform/config.h.in -> libplatform/config.h

  2. 创建Application.mkAndroid.mk,内容可以参见我的github

  3. 在命令行中运行ndk-build.cmd命令,即可生成libmp4v2.so动态库

使用动态库分离mp4中的h264码流

完整android工程见我的github,只要注意两点:

  1. 使用MP4ReadSample读取的NAL数据前四个字节是经过修改的。原本h264 NAL数据的前四个字节为0x00000001,但是在mp4中将这四个字节替换成了本NAL单元的大小。只需要将前四个字节替换回去即可。

  2. 使用MP4GetTrackH264SeqPictHeaders获取的SPS/PPS信息都是没有0x00000001前缀的,都需要加上此前缀。

参考文档:

  1. android 编译mp4v2 2.0.0生成动态库
文章目录
  1. 1. 编译mp4v2动态库
    1. 1.1. 下载并解压代码
    2. 1.2. 编译动态库
  2. 2. 使用动态库分离mp4中的h264码流