【多媒体封装格式详解】---MP4【3】

【多媒体文件格式】MP4、MPG、TS、3GP、3G2、3GPA MPEG2-PS主要应用于存储的具有固定时长的节目,如DVD电影,而MPEG-TS则主要应用于实时传送的节目,比如实时广播的电视节目。MPEG-1 Part 2 视频不容易获得,并且此扩展名(MPG 文件格式)通常指向在 MPEG-1 和 MPEG-2 中定义的 MPEG 程序流,或在 MPEG-2 中定义的 MPEG 传输流.其他扩展名,如 .m2ts 也存在指定准确的容器,在本例中为 MPEG-2 TS,但这与 MPEG-1 媒体几乎没有相关性。是包含 MP3 音频的文件的最常见扩展名。 阅读详情
2.2.2  Media Box
Box Type: ‘mdia’
mdia box 结构十分复杂。来个例子。

2.2.2.1 Media Header Box
Box Type: ‘mdhd’
aligned(8) class MediaHeaderBox extends FullBox(‘mdhd’, version, 0) {
if (version==1) {
unsigned int(64) creation_time;
unsigned int(64) modification_time;
unsigned int(32) timescale;
unsigned int(64) duration;
} else { // version==0
unsigned int(32) creation_time;
unsigned int(32) modification_time;
unsigned int(32) timescale;
unsigned int(32) duration;
}
bit(1) pad = 0;
unsigned int(5)[3] language; // ISO-639-2/T language code
unsigned int(16) pre_defined = 0;
}

Field

Type

Comment

box size

4

box大小

box type

4

box类型

version

1

box版本,0或1,一般为0。

creation time

4

创建时间(相对于UTC时间1904-01-01零点的秒数)

modification time

4

修改时间

time scale

4

文件媒体在1秒时间内的刻度值,可以理解为1秒长度的时间单元数

一般情况下视频的 都是90000

duration

4

该track的时间长度

language

2

媒体语言码

pre-defined

2


2.2.2.2 Handler Reference Box
Box Type: ‘hdlr’
从hdlr 这个box里面,我们可以获得这个track的类型信息。
aligned(8) class HandlerBox extends FullBox(‘hdlr’, version = 0, 0) {
unsigned int(32) pre_defined = 0;
unsigned int(32) handler_type;
const unsigned int(32)[3] reserved = 0;
string name;
}

Field

Type

Comment

box size

4

box大小

box type

4

box类型

version

1

box版本,0或1,一般为0。

flags

3

 

pre-defined

4

handler_type

4

‘vide’ Video track

‘soun’ Audio track

‘hint’ Hint track

reserved

12

0

name

string

字符串 track type name


例子 

 00 00 00 2168 64 6C 7200 00 00 00 00 00 00 00 ; ...!hdlr........

76 69 64 65 00 00 00 00 00 00 00 00 00 00 00 00 ; vide............

00
上面的例子 可知track 的类型是 ‘vide’ 这是个video track

2.2.2.3 Media Information Box

Box Type: ‘minf’

minf 里包含着一系列的box。里面是track有关的特征信息。
一般情况minf 包含:Media Information Header Boxes、Data Information Box(dinf)、Sample Table Box。
Media Information Header Boxes 根据类型分‘vmhd’, ‘smhd’, ’hmhd’, ‘nmhd’

2.2.2.3.1 Media Information Header Boxes

Box Types: ‘vmhd’, ‘smhd’, ’hmhd’, ‘nmhd’

Video Media Header Box(vmhd)
aligned(8) class VideoMediaHeaderBox
extends FullBox(‘vmhd’, version = 0, 1) {
template unsigned int(16) graphicsmode = 0; // copy, see below
template unsigned int(16)[3] opcolor = {0, 0, 0};
}

Field

Type

Comment

box size

4

box大小

box type

4

box类型

version

1

box版本,0或1,一般为0。

flags

3

flags

graphicsmode

2

specifies a composition mode for this video track, from the following enumerated set,

which may be extended by derived specifications:

copy = 0 copy over the existing image

opcolor

2*3

is a set of 3 colour values (red, green, blue) available for use by graphics modes


例子:

00 00 00 14 76 6D 68 640000 00 01 00 00 00 00 ; ....vmhd........

00 00 00 00                                     ; ....



Sound Media Header Box(smhd)
aligned(8) class SoundMediaHeaderBox
extends FullBox(‘smhd’, version = 0, 0) {
template int(16) balance = 0;
const unsigned int(16) reserved = 0;
}

Field

Type

Comment

box size

4

box大小

box type

4

box类型

version

1

box版本,0或1,一般为0。

flags

3

flags

balance

2

立体声平衡,[8.8]格式值,一般为0,-1.0表示全部左声道,1.0表示全部右声道

reserved

2

0


例子:

 00 00 00 10 73 6D 68 64 00 00 00 0000 0000 00 ; ....smhd........


Hint Media Header Box(hmhd)
aligned(8) class HintMediaHeaderBox
extends FullBox(‘hmhd’, version = 0, 0) {
unsigned int(16) maxPDUsize;
unsigned int(16) avgPDUsize;
unsigned int(32) maxbitrate;
unsigned int(32) avgbitrate;
unsigned int(32) reserved = 0;
}


2.2.2.3.2 Data Information Box

Box Type: ‘dinf’

dinf 里面包含的是Data Reference Box 可能的类型:‘url ‘, ‘urn ‘, ‘dref’
aligned(8) class DataEntryUrlBox (bit(24) flags)
extends FullBox(‘url ’, version = 0, flags) {
string location;
}
aligned(8) class DataEntryUrnBox (bit(24) flags)
extends FullBox(‘urn ’, version = 0, flags) {
string name;
string location;
}
aligned(8) class DataReferenceBox
extends FullBox(‘dref’, version = 0, 0) {
unsigned int(32) entry_count;
for (i=1; i • entry_count; i++) {
DataEntryBox(entry_version, entry_flags) data_entry;
}
}


未完待续。。。。。
接下来要把里面的真实数据流搞出来。








mp4文件格式解析 mp4或称,是一种多媒体容器格式,扩展名为.mp4。2001年,apple的QuickTime格式,.qt和.mov的后缀名。2001年,MPEG-4Part1,把基于QuickTime的box布局的容器格式添加到了MPEG-4标准。2004年,标准文档把编码和容器格式的说明分开。MPEG-4Part12,定义了容器格式通用的box结构,即ISO媒体文件格式(ISObasemediafileformat,ISOBMFF)。基于.mp4格式。20152018ftyp。... 阅读详情

相关推荐

MP4基础

MP4是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定,第一版在1998年10月通过,第二版在1999年12月通过。MPEG-4格式的主要用途在于网上流、光盘、语音发送(视频电话),以及电视广播。

嵌入式开发,ARM Linux开发 2773

【多媒体封装格式详解】---MP4【1】

MP4(MPEG-4 Part 14)是一种常见的多媒体容器格式,它是在“ISO/IEC 14496-14”标准文件中定义的。 1.最小组成单元 BOX 像FLV的tag、MKV的EBML、ASF文件中的 ASF object.mp4 是由一系列的box组成,他的最小组成单元就是box. size;指明了整个box所占用的大小,包括header部分. type;表示

tx3344 1万+

视频格式转换通 V3.1 全功能使用指南与技术解析

回头看,“视频格式转换通 V3.1”早已超越了一个普通转换工具的范畴。它是一套完整的多媒体处理平台,具备:✅ 模块化架构✅ 高性能编解码✅ 跨协议支持✅ 智能参数推荐✅ 安全合规体系无论是个人用户日常转换,还是企业级批量处理,它都能稳稳接住。而这一切的背后,是无数工程师对每一个细节的执着打磨——从一行 SAD 计算,到一次内存复用,再到一个崩溃日志的生成。这才是真正的硬核技术力 💪。

weixin_30598047的博客 1056

【多媒体封装格式详解】---MP4【4】

前面介绍过的几种格式flv、mkv、asf等。他们音视频的数据包一般都是按照文件的顺序交叉安放。你解析完头部信息后。剩下的一般就按照文件顺序一个数据包一个数据包的解析就行了。但是MP4完全不是这种概念。他的媒体信息和数据是分开存放的。就是你想获得数据之前必须要解析出每个帧数据所有的位置。mp4存放这个帧信息的是放在stbl这个box里。而真实的数据放在mdat中。接下来就讲讲stbl与mdat的对

tx3344 9316

掌握FFmpeg实现MP4视频封装

FFmpeg是一个开源项目,旨在提供一个强大的框架,用于处理音视频数据流。其名称来源于“fast forward MPEG”,最初设计用于MPEG格式,但随着其演进,FFmpeg已经能够处理几乎所有现存的音视频格式。FFmpeg广泛应用于多媒体转码、流媒体处理、以及音视频文件的封装和解封装。

weixin_32661831的博客 1117

Mac和VScode配置fortran

macOS系统 vscode fortran gfortran 终端

weixin_43047707的博客 2410

【多媒体封装格式详解】---MP4【2】

1.File Type Box Box Type: `ftyp’ 这种box一般情况下都会出现在mp4文件的开头,它可以作为mp4容器格式的可表示信息。就像flv头‘F’ 'L' 'V' 3字节,MKV头部的1A 45 DF A3 、ASF_Header_Object 可以作为ASF容器格式的可辨识信息一样。 ftyp box内容结构如下 aligned(8) class FileTy

tx3344 5980

解决Keil uVision许可证管理中Unknown Product错误

嵌入式开发中,IDE工具的许可证管理是确保开发环境正常运行的关键环节。Keil uVision作为ARM架构的主流开发工具,其许可证系统采用加密验证机制,通过产品版本识别实现授权控制。当出现Unknown Product错误时,通常源于版本兼容性问题或区域发行版差异,这直接影响开发工具链的可用性。特别是在维护历史项目或使用中国特供版时,开发者常会遇到此类问题。通过分析许可证类型、调整安装配置或建立虚拟化开发环境等工程实践方案,可以有效解决这类授权验证故障,保障嵌入式项目的持续集成与交付效率。

weixin_33743248的博客 363

mp4文件格式解析(三)

4.2.2.3.1 Media Information Header Box(vmhd、smhd、hmhd、nmhd) Video Media Header Box(vmhd)  字段 字节数 意义 box size 4 box大小 box type 4 box类型

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 668

使用Avalonia跨Linux平台

Avalonia类似使用WPF的技术方法来开发,所以,需要会使用WPF,其中的一些语法和写法与WPF有所区别,但是他们相差不大,会WPF的话,基本上可以看看文档后,完全掌握Avalonia的使用,从而达到跨平台开发的任务。其实写法有些不一样,可以参考官网的说明,进行修改。2. 安装完成后,重启VS2022,我们可以看到1和2,其中1是使用MVVM模式开发,2是普通模式开发,我们选择2,建立项目。9.直接双击粉红色的文件,进行安装,输入密码,但是美中不足的是,好像没有图标,图标似乎需要单独去设置。

故里2130 1万+

易灵思FPGA-软件Efinity和Modelsim联仿设置

文章目录前言一、modelsim破解过程二、使用步骤1.引入库2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智

qq_35221855的博客 5363

hk pic.net forum.php,HC-SR04 problem with pic18f24k22.

2021/03/26 00:11:57proestpaHello, I have a problem with HCSR04 ultrasonic distance sensor. I wrote a code that works perfectly in proteus simulator but when I uplode it in real mikrochip it stop worki...

weixin_32136203的博客 39万+

Air780E模组AT指令实战:5分钟搞定MQTT连接EMQX服务器(附完整代码)

本文详细介绍了如何使用Air780E 4G模组通过AT指令快速连接MQTT服务器。从硬件接线、网络注册到MQTT连接配置,提供了完整的实战步骤和代码示例,帮助开发者快速实现物联网设备的数据上报与远程通信。

wdx012345的博客 743

MP4 封装格式详解

MP4 封装格式详解

ProgramNovice的博客 4825

多期DID实战指南:从CSDID原理到分组加权策略

本文深入解析多期DID(CSDID方法)在政策评估中的实战应用,从核心思想到分组加权策略全面讲解。通过电商扶贫等案例,详细演示如何正确处理分批实施政策的数据分析,包括分组拆解、子模块DID操作及加权平均选择,帮助研究者规避常见误区,提升政策评估的准确性。

weixin_26833503的博客 524

CAPL控制程控电源

汽车电子测试过程中,除了实车测试,还有台架测试,在进行台架测试时,都需要通过电源来模拟汽车电瓶给ECU供电,如果要进一步进行比较高效的压力测试或自动化测试,就需要用到程控电源,所以本章主要介绍CAPL是如何来控制程控电源的。

测试领域技术分享 4389

MP4封装格式详解

是容器box,定义了MP4文件的元数据信息,在文件中有且仅有一个,moov里面包含的子box作为描述媒体数据的信息的容器。多媒体实际数据,如音频或视频数据,则在moov box中被引用,但不包含在其中。moov至少包含以下3种box中的一种,也可以包含其他(这里不做介绍)mvhd:Movie Header Box,存放多媒体信息头的容器。cmov:CompressMovie box,压缩过的电影信息容器。rmra:Reference Movie box,参考电影信息容器。

Garllic的博客 3202

基于 InceptionNeXt 模块增强的 YOLOv8 模型:针对多尺度目标检测的改进与实现

modules.py。

know_F0727的博客 206

MP4格式详解

一、MP4概念 MP4是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定。MPEG-4格式的主要用途在于网上流、光盘、语音发送(视频电话),以及电视广播,是一种常见的多媒体封装格式。 二、MP4文件物理结构(常见) (注:该图摘自https://blo...

DONGHONGBAI的专栏 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

视频封装格式:MP4格式详解

视频封装格式:MP4格式详解

m0_60259116的博客 5366

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

MP4封装格式简介

视频封装格式是指视频数据如何存储的,视频编码格式是指原始视频数据如何编码为二进制数据码流。编码后的视频数据最终通过视频封装格式存储为视频文件。 本文对视频封装格式MP4做一些介绍...

sdsszk的博客 6471

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

常见视频封装格式(3) — MP4

1 概述 日常生活中,看到的视频文件的后缀名如 .mp4、.avi、.rmvb 都是属于视频文件的封装格式。所谓封装格式,就是以怎样的方式将视频轨、音频轨、字幕轨等信息组合在一起。说得通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗或者一个锅,是用来盛放饭菜的容器。 视频文件的封装格式并不影响视频的画质,影响视频画面质量的是视频的编码格式。 下面介绍常见的视频封装格式 - MP4 ...

岁月斑驳7的博客 4560

封装格式之MP4

MP4文件格式即ISO/IEC 14496-14:2003,是冲QuickTime文件格式发展而来,是ISO/IEC 14496-12:2004(ISO Base Media File format)的一个具体实例。MP4的实现有两个版本:第一个版本是ISO/IEC 14496-1:2001(MPEG-4 Part 1 (Systems), First edition),发布于2001年;

梦的灰色边沿... 2800

一口气搞懂MP4文件格式

1个box由两部分组成:box header、box body。box header:box的元数据,比如box type、box size。box body:box的数据部分,实际存储的内容跟box类型有关,比如mdat中body部分存储的媒体数据。box header中,只有type、size是必选字段。当size==0时,存在largesize字段。在部分box中,还存在version、flags字段,这样的box叫做Full Box。

多媒体开发者 9841

封装格式 -- MP4

MP4前言发展历史MP4在线分析工具MPEG-4MP4解析重要概念BoxTrackSampleChunkBOX详解STBLStsd(sample description)Stts(Decompressing time to sample):Ctts(composition time to sample):Stss(sync sample):Stsz(sample size):Stsc(sample to chunk):Stco(chunk offset)关键参数的计算确定trak box类型计算片源播放时长

Ritchie_Lin的博客 1919
上一篇: 【多媒体封装格式详解】---MP4【2】
下一篇: 【玩转VLC】--- ubuntu下编译vlc
tx3344
博客等级 码龄18年 362粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值