seek to time in mp4

播放mp4文件时,需要支持seek功能。mp4的帧信息分别记录在不同的box中,本文简单介绍了一下,给定时间,找出对应帧在mp4文件中的位置的计算方法。

术语解释:

- sample表示帧。

- chunk表示组,里面有1个或多个sample。

- pts为Presentation Time Stamp的缩写,表示显示时间戳。

- stts、ctts、elst、stsc、stsz、stco分别为mp4文件中的box。

步骤如下:

一句话描述:由时间得到sample的索引,再由索引得到文件位置。
详细描述:

1. stts记录了每个sample对应的duration的信息,根据这个表可以计算出每个sample对应的pts。该pts需要使用ctts,elst中的信息进行修正。所以给定pts,即可得到其对应的帧索引。

2. stsc记录了每个chunk里面sample的数目,根据这个表可以计算出每个sample对应的chunk。

3. stsz记录了每个sample的大小,结合stsc的内容,可以得到每个sample在其对应的chunk中的相对位置。

4. stco记录了每个chunk在文件中的绝对位置。

5. 根据chunk在文件中的绝对位置及sample在chunk中的相对位置,即可计算出sample在文件中的绝对位置。

流程图如下:


seek to time in mp4_第1张图片
seek in mp4

在实际应用中,一般先根据mp4的头部信息,解析出各帧的属性并存储到表格中,方便后续使用。

你可能感兴趣的:(seek to time in mp4)