ISO 协议族
- ISO/IEC-14496:MPEG-4 协议族,包括 ISO 容器格式、MPEG-4(H.264)视频压缩标准等。
- ISO/IEC-23008:MPEG-H 协议族,包括 H.265(HEVC)视频压缩标准等。
字段 | 类型 | 含义 |
---|---|---|
ISO/IEC-14496-1 | System | MPEG-4 的复用、同步等系统级特性 |
ISO/IEC-14496-2 | Video | 视频压缩标准 |
ISO/IEC-14496-3 | Audio | 音频压缩标准 |
ISO/IEC-14496-10 | Advanced Video Coding (AVC) | H.264/AVC 标准 |
ISO/IEC-14496-12 | ISO based media format | ISO 规定的基本文件封装容器的格式标准 |
ISO/IEC-14496-14 | MP4 file format | 定义 MP4 的封装格式 |
ISO/IEC-14496-15 | Advanced Video Coding (AVC) file format | 规定保存 H.264/AVC 标准的视频容器格式 |
MP4 封装格式
MP4 格式的文件是由一个个嵌套形式的“Box 结构”构成的。
Box 结构为一种由头结构(Box Header)和负载数据(Box Data)组成的能容纳特定信息的数据结构。
Box类型
MP4 协议中定义的 Box 类型超过 70 种,它们都定义在标准文档 ISO/IEC 14496-12 中。
字段名 | 上级容器 | 全称 | 含义 |
---|---|---|---|
ftyp | 文件 | file type | 文件类型 |
moov | 文件 | movie box | 音视频文件的媒体信息头结构 |
mdat | 文件 | media data | 媒体数据结构,保存实际的音视频数据 |
mvhd | moov | movie header | 视频头结构,保存文件的全局信息 |
trak | moov | media track | 音频轨或视频轨,表示音视频文件中的某一路媒体流结构 |
tkhd | trak | track header | 音频轨、视频轨头结构,表示当前流的总体信息,如图像宽、高 |
edts | trak | edit list container | 编辑列表容器,用于保存 elst |
elst | edts | edit list | 编辑列表,用于编辑流的播放时间轴 |
mdia | trak | media info | 媒体流中的详细参数信息 |
MP4 文件中保存的每一路媒体流的底层参数信息都保存在 mdia。
MP4文件结构
#mermaid-svg-5G5EKLQLaUps0nFs {font-family:”trebuchet ms”,verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5G5EKLQLaUps0nFs .error-icon{fill:#552222;}#mermaid-svg-5G5EKLQLaUps0nFs .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5G5EKLQLaUps0nFs .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-5G5EKLQLaUps0nFs .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5G5EKLQLaUps0nFs .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5G5EKLQLaUps0nFs .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5G5EKLQLaUps0nFs .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5G5EKLQLaUps0nFs .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5G5EKLQLaUps0nFs .marker.cross{stroke:#333333;}#mermaid-svg-5G5EKLQLaUps0nFs svg{font-family:”trebuchet ms”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5G5EKLQLaUps0nFs .label{font-family:”trebuchet ms”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-5G5EKLQLaUps0nFs .cluster-label text{fill:#333;}#mermaid-svg-5G5EKLQLaUps0nFs .cluster-label span{color:#333;}#mermaid-svg-5G5EKLQLaUps0nFs .label text,#mermaid-svg-5G5EKLQLaUps0nFs span{fill:#333;color:#333;}#mermaid-svg-5G5EKLQLaUps0nFs .node rect,#mermaid-svg-5G5EKLQLaUps0nFs .node circle,#mermaid-svg-5G5EKLQLaUps0nFs .node ellipse,#mermaid-svg-5G5EKLQLaUps0nFs .node polygon,#mermaid-svg-5G5EKLQLaUps0nFs .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5G5EKLQLaUps0nFs .node .label{text-align:center;}#mermaid-svg-5G5EKLQLaUps0nFs .node.clickable{cursor:pointer;}#mermaid-svg-5G5EKLQLaUps0nFs .arrowheadPath{fill:#333333;}#mermaid-svg-5G5EKLQLaUps0nFs .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5G5EKLQLaUps0nFs .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5G5EKLQLaUps0nFs .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-5G5EKLQLaUps0nFs .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-5G5EKLQLaUps0nFs .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5G5EKLQLaUps0nFs .cluster text{fill:#333;}#mermaid-svg-5G5EKLQLaUps0nFs .cluster span{color:#333;}#mermaid-svg-5G5EKLQLaUps0nFs div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:”trebuchet ms”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5G5EKLQLaUps0nFs :root{–mermaid-font-family:”trebuchet ms”,verdana,arial,sans-serif;}