MP4Cutter

Общие сведения о MP4

Структура файла MP4

file.mp4    
└─ftyp
    ├─mdat
    └─moov
        ├─mvhd
        ├─trak
        │    ├─tkhd
        │    └─mdia
        │        ├─mdhd
        │        ├─hdlr
        │        └─minf
        │            ├─vmhd
        │            ├─dinf
        │            │    └─dref
        │            │        └─alis
        │            │
        │            └─stbl
        │                ├─stsc
        │                ├─stts
        │                ├─stsd
        │                │    └─avc1
        │                │        └─avcC
        │                │
        │                ├─stss
        │                ├─stco
        │                └─stsz
        │
        └─trak
            ├─tkhd
            └─mdia
                ├─mdhd
                ├─hdlr
                └─minf
                    ├─smhd
                    ├─dinf
                    │    └─dref
                    │        └─url
                    │
                    └─stbl
                        ├─stsd
                        │    └─mp4a
                        │        └─esds
                        │
                        ├─stts
                        ├─stsc
                        ├─stsz
                        └─stco

Описание атомов

Общие

ftyp (file type) — содержит тип файла и его совместимость. [копируем]
mdat (media data) — содержит медиа данные. В видео треках, этот атом содержал бы кадры видео. Количество mdat атомов может быть от нуля и более. [парсим]
moov (movie box) — содержит все метаданные по работе с mdat.
mvhd (movie header) — определяет общие параметры (timescale, длительность наибольшего трека и т.д.).

Для видео

trak (track) — содержит один трек презентации. Презентация может содержать один или более треков.
tkhd (track header) — описаны характеристики одного трека (timescale, длительность конкретного трека и т.д.). В одном треке может находится только один tkhd атом.
mdia (media) — контейнер медиа описаний хранящий все объекты, которые имеют информацию о медиа данных принадлежащих треку.
mdhd (media header) — содержит параметры трека (timescale, длительность конкретного трека и т.д.).
hdlr (handler reference) — описывает процесс проигрывания медиа-данных трека. [копируем]
minf (media information) — контейнер, хранящий один определенный media header, data information и sample table.
vmhd (video media header) — содержит общую информацию о презентации видео данных. [копируем]
dinf (data information) — содержит объекты, которые объявляют место хранения медиа информации в треке. [копируем]
dref (data reference) — содержит таблицу ссылок. Позволяет иметь треку одновременно несколько источников. [не используем]
alis (???) — ???. [не используем]
stbl (sample table) — содержит таблицу с индексацией по времени и данным медиа сэмплов в треке. Используя находящиеся здесь таблицы можно определить их тип, размер, контейнер и оффсет (смещение) данных в mdat.
stsc (sample to chunk) — сэмплы внутри медиа данных сгруппированы в чанки. Чанки могут различный размер, и сэмплы внутри чанков тоже могут отличаться размером. Эта таблица может быть использована для поиска чанков, в которых хранятся сэмплы, их позицию и связанное с конкретным сэмплом описание.
stts (decoding time to sample) — содержит компактную версию таблицы, которая позволяет проводить индексацию по дельте и количеству сэмплов.
stsd (sample description) — дает подробное описание типа использованного кодирования и информацию об инициализации необходимой для данной кодировки. [копируем]
avc1 (AVC) — обозначает совместимость с расширениями AVC. [не используем]
avcC (???) — ??? [не используем]
stss (sync sample) — хранит ключевые кадры.
stco (chunk offset) — хранит сдвиг каждого чанка относительно начала файла. Существует два типа оффсетов: 32 битный и 64 битный.
stsz (sample size) — содержит число сэмплов и таблицу с размерами каждого сэмпла в байтах.

Для аудио

trak («—») — «—».
tkhd («—») — «—».
mdia («—») — «—».
mdhd («—») — «—».
hdlr («—») — «—». [копируем]
minf («—») — «—».
smhd (sound media header) — содержит общую информацию об аудио данных. [копируем]
dinf («—») — «—». [копируем]
dref («—») — «—». [не используем]
url (url) — ссылка на местоположение медиа-данных используемых в презентации. [не используем]
stbl («—») — «—».
stsd («—») — «—». [копируем]
mp4a (mp4) — обозначает, что файл имеет незащищенный формат.
esds (???) — ???
stts («—») — «—».
stsc («—») — «—».
stsz («—») — «—».
stco («—») — «—».

Параметры

ftyp

  • Start offset
  • Box size
  • Box type

mdat

  • Start offset
  • Box size
  • Box type
  • Samples
    • No.
    • Sample delta
    • Size
    • Chunk num
    • Chunk offset
    • i-Frame
    • Sample offset

moov

  • Start offset
  • Box size
  • Box type

mvhd

  • Start offset
  • Box size
  • Box type
  • Version
  • Flags
  • Creation time (UTC)
  • Modification time (UTC)
  • Time scale
  • Duration
  • Duration (ms)
  • Next track id
  • Volume
  • Rate

trak

  • Start offset
  • Box size
  • Box type

tkhd

  • Start offset
  • Box size
  • Box type
  • Version
  • Flags
  • Creation time (UTC)
  • Modification time (UTC)
  • Track id
  • Duration
  • Width
  • Height

mdia

  • Start offset
  • Box size
  • Box type

mdhd

  • Start offset
  • Box size
  • Box type
  • Version
  • Flags
  • Creation time (UTC)
  • Modification time (UTC)
  • Time scale
  • Duration
  • Language

hdlr

  • Start offset
  • Box size
  • Box type
  • Version
  • Flags
  • Handler type
  • Name

minf

  • Start offset
  • Box size
  • Box type

vmhd

  • Start offset
  • Box size
  • Box type
  • Version
  • Flags

smhd

  • Start offset
  • Box size
  • Box type
  • Version
  • Flags

dinf

  • Start offset
  • Box size
  • Box type

dref

  • Start offset
  • Box size
  • Box type
  • Version
  • Flags
  • Enty count

alis

  • Start offset
  • Box size
  • Box type

url

  • Start offset
  • Box size
  • Box type
  • Version
  • Flags
  • Location

stbl

  • Start offset
  • Box size
  • Box type

stsc

  • Start offset
  • Box size
  • Box type
  • Version
  • Flags
  • Entry count
  • List
    • No.
    • First chunk
    • Samples per chunk
    • Samples description index

stts

  • Start offset
  • Box size
  • Box type
  • Version
  • Flags
  • Entry count
  • List
    • No.
    • Sample count
    • Sample delta

stsd

  • Start offset
  • Box size
  • Box type
  • Version
  • Flags

avc1

  • Start offset
  • Box size
  • Box type
  • Width
  • Height
  • Horiz resolution
  • Ver resolution
  • Compression name

avcC

  • Start offset
  • Box size
  • Box type
  • Configuration version
  • AVC profile indication
  • AVC profile compatibility
  • AVC level indication
  • NAL Unit length size
  • Num sequence parameter sets
  • Sequence parameter set (0)
  • Num picture parameter sets
  • Picture parameter set (0)

mp4a

  • Start offset
  • Box size
  • Box type

stss

  • Start offset
  • Box size
  • Box type
  • Version
  • Flags
  • Entry count
  • List
    • No.
    • Sample number

stco

  • Start offset
  • Box size
  • Box type
  • Version
  • Flags
  • Entry count
  • List
    • No.
    • Chunk offset

stsz

  • Start offset
  • Box size
  • Box type
  • Version
  • Flags
  • Sample size
  • Sample count
  • List
    • No.
    • Sample size