Android Stagefright MPEG4Writer分析

基础知识:MP4文件格式详解http://download.csdn.net/detail/liwendovo/4970682

系统:Android4.2.1

工具:mp4info,winhex,QTAtomViewer

MPEG4Writer路径:Android4.2/frameworks/av/media/libstagefright/MPEG4Writer.cpp

MPEG4Writer是Android stagefright媒体框架下一个的封装类,我们平常录制视频调用的MediaRecorder接口类其视频录制的底层封装实现就是通过MPEG4Writer完成的。

以视频为例,MPEG4Writer是视频录制的最后一环。

MPEG4Writer遵守 ISO 14496-12标准进行封装,MP4、3gp、ismv等我们常见的媒体封装格式都是以这种基础文件格式为基础衍生的。

首先看一下MPEG4Writer封装好的视频的格式:

可以看到,存放音视频数据的mdat box是位于第二位的,而负责检索音视频的moov box是位于最后的,这与通常的MP4封装的排列顺序不同,当然这是为了符合录制而产生的结果。因为 moov的大小是随着 mdat 变化的,而我们录制视频的时间预先是不知道的,所以需要先将mdat 数据写入,最后再写入moov,完成封装。

而MPEG4Writer的封装主要由两种线程完成,一种是WriterThead,一种是TrackThread。

TrackThread是以Sample为单位获取数据流,然后将每个Sample中的信息提取汇总存储,再将Sample打包进Chunk供WriterThead写入封装文件。TrackThread一般有两个一个是视频track,一个音频track。上图两个trak box中的信息就是通过这两个线程提出整理的。 TrackThread在有Chunk准备好后就马上写入封装文件,音视频的chunk位于同一mdat 中,按时间顺序排列。

WriterThead 是以Chunk为单位封装文件,WriterThead只有一个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值