·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]MP4文件元数据格式分析与介绍(2)

时间:2012-09-06 09:34CuPlayer
当播放一部电影或者一个track的时候,对应的media handler必须能够正确的解析数据流,对一定的时间获取对应的媒体数据。如果是视频媒体, media handler可能会解析多个atom,才能找到给定时间的sample的大小和位置

  当播放一部电影或者一个track的时候,对应的media handler必须能够正确的解析数据流,对一定的时间获取对应的媒体数据。如果是视频媒体, media handler可能会解析多个atom,才能找到给定时间的sample的大小和位置。具体步骤如下:

  1.确定时间,相对于媒体时间坐标系统

  2.检查time-to-sample atom来确定给定时间的sample序号。

  3.检查sample-to-chunk atom来发现对应该sample的chunk。

  4.从chunk offset atom中提取该trunk的偏移量。

  5.利用sample size atom找到sample在trunk内的偏移量和sample的大小。

  例如,如果要找第1秒的视频数据,过程如下:

  1. 第1秒的视频数据相对于此电影的时间为600

  2. 检查time-to-sample atom,得出每个sample的duration是40,从而得出需要寻找第600/40 = 15 + 1 = 16个sample

  3. 检查sample-to-chunk atom,得到该sample属于第5个chunk的第一个sample,该chunk共有4个sample

  4. 检查chunk offset atom找到第5个trunk的偏移量是20472

  5. 由于第16个sample是第5个trunk的第一个sample,所以不用检查sample size atom,trunk的偏移量即是该sample的偏移量20472。如果是这个trunk的第二个sample,则从sample size atom中找到该trunk的前一个sample的大小,然后加上偏移量即可得到实际位置。

  6. 得到位置后,即可取出相应数据进行解码,播放

  [mp4文件格式]获取mp4文件信息7 - 查找关键帧

  查找过程与查找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的大小

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器