一:介绍

MP4(MPEG-4 Part 14)是一种常见的多媒体容器格式,它是在“ISO/IEC 14496-14”标准文件中定义的,属于MPEG-4的一部分,是“ISO/IEC 14496-12(MPEG-4 Part 12 ISO base media file format)”标准中所定义的媒体格式的一种实现,后者定义了一种通用的媒体文件结构标准。MP4是一种描述较为全面的容器格式,被认为可以在其中嵌入任何形式的数据,各种编码的视频、音频等都不在话下,不过我们常见的大部分的MP4文件存放的AVC(H.264)MPEG-4(Part 2)编码的视频和AAC编码的音频。MP4格式的官方文件后缀名是“.mp4”,还有其他的以mp4为基础进行的扩展或者是缩水版本的格式,包括:M4V,  3GPF4V等。


二:BOX结构

mp4是由一个个“box”组成的,大box中存放小box,一级嵌套一级来存放媒体信息。box的基本结构是:



三:BOX类型

MP4的Box种类繁多,以下为参照(√为必须包含的Box):

MP4 Format
Box Type Option Description
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           primary item reference
  pitm           primary item reference
  fiin           file delivery item information
    paen         partition entry
      fpar       FEC reservoir
      fecr       FEC reservoir
    segr         file delivery session group
    gitn         group id to name
    tsel         track selection
meco             additional metadata container
  mere           metabox relation


四:示例




补充:具体的各种Box结构需另外参考。

参考:

http://blog.163.com/niuxiangshan@126/blog/static/1705965952012102011316978/
http://blog.csdn.net/pirateleo/article/details/7061452
http://www.cnblogs.com/haibindev/archive/2011/10/17/2214518.html
http://www.xuebuyuan.com/1799539.html

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐