atitit.mp4 视频文件多媒体格式结构详解

atitit.mp4 视频文件多媒体格式结构详解

 

1一、基本概念1

2MP4文件概述2

3mp4是由一个个“box”组成的,2

4典型简化mp43

5Fragments5

6ref6

7具体列表6

8Ref29

 

MP4文件格式详解(ISO-14496-12/14

Author:Pirate Leo

Email:codeevoship@gmail.com

1. 一、基本概念

1 文件,由许多BoxFullBox组成。

2 Box,每个BoxHeaderData组成。

3 FullBox,是Box的扩展,Box结构的基础上在Header中增加8bits version24bits flags

4 Header,包含了整个Box的长度size和类型type。当size==0时,代表这是文件中最后一个Box;当size==1时,意味着Box长度需要更多bits来描述,在后面会定义一个64bitslargesize描述Box的长度;当typeuuid时,代表Box中的数据是用户自定义扩展类型。

5 Data,是Box的实际数据,可以是纯数据也可以是更多的子Boxes

6 当一个BoxData中是一系列子Box时,这个Box又可成为Container Box

 

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

 

二、MP4文件格式(ISO-14496-12/14

2. MP4文件概述

MP4文件就是由各式各样的Box组成的,下表中列出了所有必选或可选的Box类型,代表Box必选。

具体列表:

正式开始前先对文件的几个重要部分宏观介绍一下,以便诸位在后续学习时心中有数:

1  ftypbox,在文件的开始位置,描述的文件的版本、兼容协议等;

2  moovbox,这个box中不包含具体媒体数据,但包含本文件中所有媒体数据的宏观描述信息,moov box下有mvhdtrak box

        >>mvhd中记录了创建时间、修改时间、时间度量标尺、可播放时长等信息。

        >>trak中的一系列子box描述了每个媒体轨道的具体信息。

3  moofbox,这个box是视频分片的描述信息。并不是MP4文件必须的部分,但在我们常见的可在线播放的MP4格式文件中(例如Silverlight Smooth Streaming中的ismv文件)确是重中之重。

4  mdatbox,实际媒体数据。我们最终解码播放的数据都在这里面。

5  mfrabox,一般在文件末尾,媒体的索引文件,可通过查询直接定位所需时间点的媒体数据。

 

 

3.  mp4是由一个个“box”组成的,

大box中存放小box,一级嵌套一级来存放媒体信息。box的基本结构是:

  

  其中,size指明了整个box所占用的大小,包括header部分。如果box很大(例如存放具体视频数据的mdat box),超过了uint32的最大数值,size就被设置为1,并用接下来的8位uint64来存放大小。

4. 典型简化mp4

 

 一个mp4文件有可能包含非常多的box,在很大程度上增加了解析的复杂性,这个网页上http://mp4ra.org/atoms.html记录了一些当前注册过的box类型。看到这么多box,如果要全部支持,一个个解析,怕是头都要爆了。还好,大部分mp4文件没有那么多的box类型,下图就是一个简化了的,常见的mp4文件结构:

  

  一般来说,解析媒体文件,最关心的部分是视频文件的宽高、时长、码率、编码格式、帧列表、关键帧列表,以及所对应的时戳和在文件中的位置,这些信息,在mp4中,是以特定的算法分开存放在stbl box下属的几个box中的,需要解析stbl下面所有的box,来还原媒体信息。下表是对于以上几个重要的box存放信息的说明:

Ref  MP4文件格式的解析,以及MP4文件的分割算法 - haibindev - 博客园.htm

5. Fragments

 

 

附:Smooth Streamingismv文件结构,文件分为了多个Fragments,每个Fragment中包含moofmdat。这样的结构符合渐进式播放需求。(mdat及其描述信息逐步传输,收齐一个Fragment便可播放其中的mdat)。

 

6. ref

 

MP4文件格式详解——结构概述 胡同里的庇护所(Pirate Leo's Shelter) - 博客频道 - CSDN.NET.htm

 

7. 具体列表

 

ftyp

 

 

 

 

 

√ 

file type and compatibility

pdin

 

 

 

 

 

 

progressive download information

moov

 

 

 

 

 

√ 

container for all the metadata

 

mvhd

 

 

 

 

√ 

movie header, overall declarations

 

trak

 

 

 

 

√ 

container for an individual track or stream

 

 

tkhd

 

 

 

√ 

track header, overall information about the track

 

 

tref

 

 

 

 

track reference container

 

 

edts

 

 

 

 

edit list container

 

 

 

elst

 

 

 

an edit list

 

 

mdia

 

 

 

√ 

container for the media information in a track

 

 

 

mdhd

 

 

√ 

media header, overall information about the media

 

 

 

hdlr

 

 

√ 

handler, declares the media (handler) type

 

 

 

minf

 

 

√ 

media information container

 

 

 

 

vmhd

 

 

video media header, overall information (video track only)

 

 

 

 

smhd

 

 

sound media header, overall information (sound track only)

 

 

 

 

hmhd

 

 

hint media header, overall information (hint track only)

 

 

 

 

nmhd

 

 

Null media header, overall information (some tracks only)

 

 

 

 

dinf

 

√ 

data information box, container

 

 

 

 

 

dref

√ 

data reference box, declares source(s) of media data in track

 

 

 

 

stbl

 

√ 

sample table box, container for the time/space map

 

 

 

 

 

stsd

√ 

sample descriptions (codec types, initialization etc.)

 

 

 

 

 

stts

√  

(decoding) time-to-sample

 

 

 

 

 

ctts

 

(composition) time to sample

 

 

 

 

 

stsc

√ 

sample-to-chunk, partial data-offset

information

 

 

 

 

 

stsz

 

sample sizes (framing)

 

 

 

 

 

stz2

 

compact sample sizes (framing)

 

 

 

 

 

stco

√ 

chunk offset, partial data-offset information

 

 

 

 

 

co64

 

64-bit chunk offset

 

 

 

 

 

stss

 

sync sample table (random access points)

 

 

 

 

 

stsh

 

shadow sync sample table

 

 

 

 

 

padb

 

sample padding bits

 

 

 

 

 

stdp

 

sample degradation priority

 

 

 

 

 

sdtp

 

independent and disposable samples

 

 

 

 

 

sbgp

 

sample-to-group

 

 

 

 

 

sgpd

 

sample group description

 

 

 

 

 

subs

 

sub-sample information

 

mvex

 

 

 

 

 

movie extends box

 

 

mehd

 

 

 

 

movie extends header box

 

 

trex

 

 

 

√ 

track extends defaults

 

ipmc

 

 

 

 

 

IPMP Control Box

moof

 

 

 

 

 

 

movie fragment

 

mfhd

 

 

 

 

√ 

movie fragment header

 

traf

 

 

 

 

 

track fragment

 

 

tfhd

 

 

 

√ 

track fragment header

 

 

trun

 

 

 

 

track fragment run

 

 

sdtp

 

 

 

 

independent and disposable samples

 

 

sbgp

 

 

 

 

sample-to-group

 

 

subs

 

 

 

 

sub-sample information

mfra

 

 

 

 

 

 

movie fragment random access

 

tfra

 

 

 

 

 

track fragment random access

 

mfro

 

 

 

 

√ 

movie fragment random access offset

mdat

 

 

 

 

 

 

media data container

free

 

 

 

 

 

 

free space

skip

 

 

 

 

 

 

free space

 

udta

 

 

 

 

 

user-data

 

 

cprt

 

 

 

 

copyright etc.

meta

 

 

 

 

 

 

metadata

 

hdlr

 

 

 

 

√ 

handler, declares the metadata (handler) type

 

dinf

 

 

 

 

 

data information box, container

 

 

dref

 

 

 

 

data reference box, declares source(s) of metadata items

 

ipmc

 

 

 

 

 

IPMP Control Box

 

iloc

 

 

 

 

 

item location

 

ipro

 

 

 

 

 

item protection

 

 

sinf

 

 

 

 

protection scheme information box

 

 

 

frma

 

 

 

original format box

 

 

 

imif

 

 

 

IPMP Information box

 

 

 

schm

 

 

 

scheme type box

 

 

 

schi

 

 

 

scheme information box

 

iinf

 

 

 

 

 

item information

 

xml

 

 

 

 

 

XML container

 

bxml

 

 

 

 

 

binary XML container

 

pitm

 

 

 

 

 

primary item reference

 

fiin

 

 

 

 

 

file delivery item information

 

 

paen

 

 

 

 

partition entry

 

 

 

fpar

 

 

 

file partition

 

 

 

fecr

 

 

 

FEC reservoir

 

 

segr

 

 

 

 

file delivery session group

 

 

gitn

 

 

 

 

group id to name

 

 

tsel

 

 

 

 

track selection

meco

 

 

 

 

 

 

additional metadata container

 

mere

 

 

 

 

 

metabox relation

 

 

8. Ref2

视频文件头解析--MP4_意思_新浪博客.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MediaServer.exe是一个流媒体服务器程序,使用config.ini配置文件来定义服务器的一些参数和行为。下面是config.ini文件的详细解释: 1. [General]部分 这部分包含了服务器的一般设置,如服务器名称、监听的端口、超时时间等。 - Name:服务器的名称,用于标识服务器。 - Port:服务器监听的端口号。 - Timeout:连接超时时间,单位是毫秒。 - BufferSize:传输数据缓冲区的大小,单位是字节。 - MaxConnections:服务器最大连接数。 2. [Log]部分 这部分定义了服务器日志的一些设置,如日志文件名、日志级别等。 - Level:日志级别,分为Debug、Info、Warning、Error。 - File:日志文件名,可以使用绝对路径或相对路径。 - Size:单个日志文件的大小限制,单位是MB。 - Count:日志文件的最大数量。 3. [Authentication]部分 这部分定义了服务器的认证设置,如认证方式、用户名和密码等。 - Method:认证方式,可以是None、Basic、Digest。 - Realm:认证领域,用于标识需要认证的资源。 - User:认证用户名。 - Password:认证密码。 4. [RTSP]部分 这部分定义了RTSP协议的一些设置,如RTSP监听端口、RTP/RTCP端口范围等。 - Port:RTSP监听端口号。 - RTPPortRange:RTP端口范围,格式为“start-end”。 - RTCPPortRange:RTCP端口范围,格式为“start-end”。 5. [RTMP]部分 这部分定义了RTMP协议的一些设置,如RTMP监听端口、缓存区大小等。 - Port:RTMP监听端口号。 - BufferSize:RTMP数据缓冲区的大小,单位是字节。 6. [HLS]部分 这部分定义了HLS协议的一些设置,如HLS监听端口、HLS文件存放路径等。 - Port:HLS监听端口号。 - Path:HLS文件存放路径,可以使用绝对路径或相对路径。 7. [Live]部分 这部分定义了直播流的一些设置,如直播流的编码格式、码率等。 - Codec:直播流的编码格式,可以是H264、H265、AAC等。 - Bitrate:直播流的码率,单位是kbps。 8. [VOD]部分 这部分定义了点播流的一些设置,如点播流的编码格式、码率等。 - Codec:点播流的编码格式,可以是H264、H265、AAC等。 - Bitrate:点播流的码率,单位是kbps。 9. [Proxy]部分 这部分定义了代理服务器的一些设置,如代理服务器的地址、端口等。 - Address:代理服务器的地址。 - Port:代理服务器的端口号。 以上是MediaServer.exe配置文件config.ini的详细解释。根据实际情况,可以根据需要修改和配置config.ini文件,以实现不同的流媒体服务器功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值