传送门:MP4 文档 P29页
这个 Box 也比较简单,里面给出每个 Sample 的 Size 的大小。关于这个 Box 的作用,这是我们在文件读取和解析 Sample 的关键可以找到任意 Sample 对应在文件中的位置。
这里对应 Sample count 就是总的 Sample 数量,里面对应的是每一个 Sample size,Sample Count 从1开始。
其中该 Box 是 Full Box,后面有四字节的 version 和 flag 字段,其中 flag 默认值用0,这里分析略过,这里就直接解析 Data 的字段。
字段 | 大小 | 实际值(16进制) | 含义 |
---|---|---|---|
sample size | 4 | 00 00 00 00 | 0表示每一个sample大小不一样,不为0则每一个sample大小为当前值 |
sample count | 4 | 00 00 05 25 | 当前 Track 下有多少个 sample |
sample size | 4 | 对应每一个Sample的大小 |
// BaseBox.h
// ...
// 其他 Box 的定义
class TimeStszBox : public BaseBox {
public:
Timebyte version = 0;
Timebyte flags = 0;
unsigned int sample_size = 0; // 指定默认的sample大小,如果每个sample大小不相等,则这个字段值为0,每个sample大小存在下表中。
unsigned int sample_count = 0; // 该track中所有sample的数量
unsigned int entry_size = 0; // 每个sample的大小
TimeStszBox(BoxHeader h, Timebyte * d): BaseBox(h, d){};
};
实现
// TimeStszBox.cpp