码迷,mamicode.com
首页 > 其他好文 > 详细

MP4之sample信息

时间:2019-05-04 09:38:41      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:开始   smp   col   pos   size   文件中   sample   时间   意思   

时间戳

sample的时间戳信息分散在moov/trak/mdia/minf/stbl/stts和moov/trak/mdia/minf/stbl/ctts中。
技术图片

decode time(DT)可以通过stts计算得到,DT(n)=sample_delta(0)+sample_delta(1)+...+sample_delta(n-1)

技术图片
ctts中保存DT和CT(composition time)之间的offset,CT(n)=DT(n)+ctts(n),ctts可以没有,没有ctts时,DT和CT相同。

offset

sample offset的计算比较复杂,需要综合moov/trak/mdia/minf/stbl/stco,moov/trak/mdia/minf/stbl/stsc和moov/trak/mdia/minf/stbl/stsz才能得到。
stco是chunk offset box,从中可以知道chunk的数量以及每一个chunk在整个文件的offset。
技术图片
entry_count就是文件中chunk的总量。
stsc是sample to chunk box,从中可以知道sample对应的chunk是哪个。
技术图片
这个数据代表的意思是从first_chunk开始的每个chunk包含smples_per_chunk个sample,这样的chunk总共有多少个呢?用下一个entry的first_chunk减去当前entry的first_chunk就得到chunk的数量。最后一个entry表示从first_chunk到最后一个chunk,这里就需要用到上面从stco得到的chunk的总量。

stsz是sample size box,从中可以知道每个sample的size。
技术图片

sample_size是默认的sample大小,如果sample_size不等于0,表示所有的sample有相同的大小,都是sample_size。否则需要从后面的entry table读取每一个sample的大小。

这样我们就知道了所有chunk的offset,每一个chunk包含多少sample,以及所有sample的size,就可以计算sample的offset了。用sample所在的chunk的offset,加上该chunk内该sample之前的所有sample的size之和,就可以得到sample的offset。

MP4之sample信息

标签:开始   smp   col   pos   size   文件中   sample   时间   意思   

原文地址:https://blog.51cto.com/readingcoding/2388596

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!