wqyuwss的专栏

首页博文目录订阅
博 文

MP4文件结构的资料

(2007/9/25 14:38)
最近很忙,没有时间来这里,看到很多朋友留言说要MP4文件结构的资料,非常感谢大家来到我的博客看我写的东西。我已经把我翻译整理的部分上传到这里了,请需要的朋友仔细阅读。 如果对某一部分有问题,请留言,看到了我会回复的。而且我想即使我不能回答,也会有热心的朋友帮忙解答的。
Seeking主要是利用sample table box里面包含的子box来实现的,还需要考虑edit list的影响。 可以按照以下步骤seek某一个track到某个时间T,注意这个T是以movie header box里定义的time scale为单位的: 如果track有一个edit list,遍历所有的edit,找到T落在哪个edit里面。将Edit的开始时间变换为以movie time scale为单位,得到EST,T减去EST,得到T',就是在这个edit里面的duration,注意此时T'是以movi…
赫赫,很早就写完了这些文字,但是一直没有时间上传,今天终于把基本的文件格式传完了。 其实mp4的文件格式就是在quicktime的mov文件格式上演变出来的。原文可以参见http://developer.apple.com/documentation/QuickTime/QTFF/qtff.pdf 我只是把最重要的一些atom取出来,翻译了一部分,加上一部分自己的心得体会。还有一部分关于streaming的hint atom的格式,过两天再传上来。 很多地方翻译不好,就引用了…
查找过程与查找sample的过程非常类似,只是需要利用sync sample atom来确定key frame的sample序号 确定给定时间的sample序号 检查sync sample atom来发现这个sample序号之后的key frame 检查sample-to-chunk atom来发现对应该sample的chunk 从chunk offset atom中提取该trunk的偏移量 利用sample size atom找到sample在trunk内的偏移量和sample的大小
当播放一部电影或者一个track的时候,对应的media handler必须能够正确的解析数据流,对一定的时间获取对应的媒体数据。如果是视频媒体, media handler可能会解析多个atom,才能找到给定时间的sample的大小和位置。具体步骤如下: 1.确定时间,相对于媒体时间坐标系统 2.检查time-to-sample atom来确定给定时间的sample序号。 3.检查sample-to-chunk atom来发现对应该sample的chunk。 4.从chunk offse…
整部电影的尺寸除以长度,即是比特率,此电影的比特率为846623/70 = 12094 bps
首先计算出整部电影的duration,和帧的数目然后 帧率 = 整部电影的duration / 帧的数目
从tkhd – track header atom中找到宽度和高度即是。
从tkhd – track header atom中找出audio track的time scale即是声音的采样频率。
方法1 从mvhd - movie header atom中找到time scale和duration,duration除以time scale即是整部电影的长度。 time scale相当于定义了标准的1秒在这部电影里面的刻度是多少。 例如audio track的time scale = 8000, duration = 560128,所以总长度是70.016,video track的time scale = 600, duration = 42000,所以总长度是70 方法2 首先计算出共有多少个帧,也就是sample(从sample size atoms中得到),…
博 主
进入wqyuwss的首页
博客名称:leslie
日志总数:181
评论数量:480
访问次数:936289
建立时间:2006/12/27 23:03
导 航
公 告
评 论
链 接