ZigZag Sin
登 陆
上一篇:stbl Box 下一篇:avcC mp4a Box

stsd Box

Time
2022-2-21 11:39 阅读 391

具体 Box 分析

Stsd Box

官方介绍定义

image-20211223143848549

传送门:MP4 文档 P27-29页

介绍

​ 该 Box 存储了编码类型和初始化解码器需要的信息,与特定的 Track Type 有关,根于不同的 Track 使用不一样的编码标准。

​ box header 和 version 字段后会有一个 entry count 字段,根据 entry 的个数,每个 entry 会有 type 信息,如“ vide”、“sund” 等,根据 type 不同 sample description 会提供不同的信息,例如对于 video track,会有 “VisualSampleEntry” 类型信息,对于 audio track 会有 “AudioSampleEntry” 类型信息。视频的编码类型、宽高、长度,音频的声道、采样等信息都会出现在这个box中。

​ 这个 Box 也是 Full Box,对于 Video Track 里面而言,H264 的 SPS PPS 就存在该 Box 里面,对于解码非常重要。

字段分析:

名称大小(byte)意义说明
Box length4Box 整体的大小包含 Header 和 Data部分
Box type4”stsd”的ASCII码,表明是 stsdboxbox 属性值,通常是固定值
version1box版本一般为0
flags3该 Box 该字段填充0
entry count4sample description 数目

工具分析

image-20211223144515232

这里我们看到 stsd box 下面还有对应的子 Box,下面子 Box 里面存放的就是对当前 Track 编解码的信息。

下面用 16 进制软件查看

Video Track

image-20211223144938786

Audio Track

image-20211223145245307

具体值(Video Track):

名称实际值(16进制)具体值(10进制 / ASCII)字段位置
Box length00 00 00 95149Header
Box type73 74 73 64"stsd"Header
version00 Header
flags00 00 00 Header
entry count00 00 00 011Data

这里我们看到 entry count 的值为1,说明后面有一个关于这个 Track 的编解码信息 Box,也正如上面的软件分析出来的一样,对应 Video Track 编码类型是 H264 数据则有一个 Avc1 box,Audio Track 下面有一个 Mp4a box。

代码定义

// BaseBox.h  

// ...
// 其他 Box 的定义

class TimeStsdBox : public BaseBox {
public:
    Timebyte version = 0;
    Timebyte flags = 0;
    unsigned int sample_description_entry_count = 0;

    TimeStsdBox(BoxHeader h);
    TimeStsdBox(BoxHeader h, Timebyte * d): BaseBox(h, d){};
    size_t GetDataOffset() const override {return 8;};
    void AnalyzeBoxHeader(BoxHeader header, size_t offset) override;
};

实现

// TimeStsdBox.cpp

TimeStsdBox::TimeStsdBox(BoxHeader h) : BaseBox(h) {
    if (h.GetDataSize()) {
        data = new Timebyte[h.GetDataSize()];
    }
}

void TimeStsdBox::AnalyzeBoxHeader(BoxHeader header, size_t offset) {
    if (header.GetType() == AVC1) {

    }

    /*===============音频===============*/
    if (header.GetType() == MP4A) {

    }

}

上一篇:stbl Box 下一篇:avcC mp4a Box
给我买个键盘吧。。。求打赏。。。
欢迎加群,一起交流~~~