ZigZag Sin
登 陆
上一篇:hdlr Box 下一篇:vmhd smhd Box

minf Box

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

具体 Box 分析

Minf Box

官方介绍定义

image-20211220173100111

传送门:MP4 文档 P21页

介绍

这个 Box 官方也是比较简单的定义了,这个 Box 简单,该 Box 是Container Box,所以重点是在它的子 Box 里面,这个Box 就简单理解为是一个分隔符。

字段分析:

名称大小(byte)意义说明
Box length4Box 整体的大小包含 Header 和 Data部分
Box type4”minf”的ASCII码,表明是 minfboxbox 属性值,通常是固定值
Data

这个 Box 比较简单,这里就不分析,直接看代码定义,后面重点分析它的子 box。

image-20211220173536153

代码定义

在 Box Type 添加对应子 Box 的枚举和 BoxHeader中添加 GetType 获取对应 Box

// BaseBox.h  

enum BOX_TYPE{
    FTYP,
    MOOV,
        MVHD,
        TRAK,
        LODS,
            TKHD,
            MDIA,
                MDHD,
                HDLR,
                MINF,
    				// 添加4个新的Box类型
                    VMHD,
                    SMHD,
                    DINF,
                    STBL,
    UUID,
    MDAT,
    ERROR
};

// BoxHeader 的就不在这里添加了  按照以往的格式添加便可

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

class TimeMinfBox : public BaseBox {
public:
    TimeMinfBox(BoxHeader h);
    TimeMinfBox(BoxHeader h, Timebyte * d): BaseBox(h, d){};
    void AnalyzeBoxHeader(BoxHeader header, size_t offset) override;
};

实现

// TimeMinfBox.cpp

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


void TimeMinfBox::AnalyzeBoxHeader(BoxHeader header, size_t offset) {
    if (header.GetType() == VMHD) {
 		// 后面解析添加
    }
    if (header.GetType() == DINF) {
		// 后面解析添加
    }
    if (header.GetType() == STBL) {
		// 后面解析添加
    }
}
上一篇:hdlr Box 下一篇:vmhd smhd Box
给我买个键盘吧。。。求打赏。。。
欢迎加群,一起交流~~~