本文目标:在 Android 4.1 平台上使用 MP4v2 库从 MP4 文件中分离出 H264 码流
我电脑上已经配置好NDK
的环境,在环境变量中添加了NDK_HOME
。
编译 MP4v2 动态库
下载并解压代码
Google Code 下载地址:MP4v2 on Google Code
Github 上我 fork 的地址:MP4v2 on my Github
解压之后在mp4v2-2.0.0
目录下新建jni
目录,将mp4v2-2.0.0
目录下的文件/文件夹都放入其中,我电脑上的目录为D:\code\openSrc\mp4v2-2.0.0\jni
编译动态库
进入jni
目录
改名字:
libplatform/config.h.in
->libplatform/config.h
创建
Application.mk
和Android.mk
,内容可以参见我的 Github mp4v2-2.0.0_android在命令行中运行
ndk-build.cmd
命令,即可生成libmp4v2.so
动态库
使用动态库分离 MP4 中的 H264 码流
完整 Android 工程见我的 Github Mp4v2demo,需要注意两点:
使用
MP4ReadSample
读取的NAL
数据前四个字节是经过修改的。原本h264 NAL
数据的前四个字节为0x00000001
,但是在 MP4 中将这四个字节替换成了本NAL
单元的大小。只需要将前四个字节替换回去即可。使用
MP4GetTrackH264SeqPictHeaders
获取的SPS/PPS
信息都是没有0x00000001
前缀的,都需要加上此前缀。
其它
参考
版权信息
自由转载-非商用-非衍生-保持署名(知识共享 Attribution-NonCommercial-NoDerivatives 4.0 国际许可协议)