1
1
mirror of https://github.com/wader/fq.git synced 2024-11-26 10:33:53 +03:00

mp4: Add png mapping

Also support samples decode for tracks without hdlr box
This commit is contained in:
Mattias Wadman 2022-11-25 19:47:42 +01:00
parent a97d37ee42
commit ef2d5232ba
8 changed files with 1758 additions and 971 deletions

View File

@ -76,7 +76,7 @@
|[`mp3`](#mp3) |MP3&nbsp;file |<sub>`id3v2` `id3v1` `id3v11` `apev2` `mp3_frame`</sub>|
|`mp3_frame` |MPEG&nbsp;audio&nbsp;layer&nbsp;3&nbsp;frame |<sub>`mp3_frame_tags`</sub>|
|`mp3_frame_tags` |MP3&nbsp;frame&nbsp;info/xing&nbsp;tags |<sub></sub>|
|[`mp4`](#mp4) |ISOBMFF,&nbsp;QuickTime&nbsp;and&nbsp;similar |<sub>`aac_frame` `av1_ccr` `av1_frame` `avc_au` `avc_dcr` `flac_frame` `flac_metadatablocks` `hevc_au` `hevc_dcr` `icc_profile` `id3v2` `image` `jpeg` `mp3_frame` `mpeg_es` `mpeg_pes_packet` `opus_packet` `prores_frame` `protobuf_widevine` `pssh_playready` `vorbis_packet` `vp9_frame` `vpx_ccr`</sub>|
|[`mp4`](#mp4) |ISOBMFF,&nbsp;QuickTime&nbsp;and&nbsp;similar |<sub>`aac_frame` `av1_ccr` `av1_frame` `avc_au` `avc_dcr` `flac_frame` `flac_metadatablocks` `hevc_au` `hevc_dcr` `icc_profile` `id3v2` `image` `jpeg` `mp3_frame` `mpeg_es` `mpeg_pes_packet` `opus_packet` `png` `prores_frame` `protobuf_widevine` `pssh_playready` `vorbis_packet` `vp9_frame` `vpx_ccr`</sub>|
|`mpeg_asc` |MPEG-4&nbsp;Audio&nbsp;Specific&nbsp;Config |<sub></sub>|
|`mpeg_es` |MPEG&nbsp;Elementary&nbsp;Stream |<sub>`mpeg_asc` `vorbis_packet`</sub>|
|`mpeg_pes` |MPEG&nbsp;Packetized&nbsp;elementary&nbsp;stream |<sub>`mpeg_pes_packet` `mpeg_spu`</sub>|

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 138 KiB

View File

@ -494,6 +494,7 @@ func init() {
d.FieldUTF8NullFixedLen("component_name", int(d.BitsLeft()/8))
if t := ctx.currentTrack(); t != nil {
t.seenHdlr = true
// component_type seems to be all zero sometimes so can't look for "mhlr"
switch subType {
case "vide", "soun":
@ -535,7 +536,20 @@ func init() {
t.sampleDescriptions = append(t.sampleDescriptions, sampleDescription{
dataFormat: dataFormat,
})
subType = t.subType
if t.seenHdlr {
subType = t.subType
} else {
// TODO: seems to be ffmpeg mov.c, where is this documented in specs?
// no hdlr box found, guess using dataFormat
// ex PNG samples but there is no hdlr box saying it's video, but the esds says MPEGObjectTypePNG
switch dataFormat {
case "mp4v":
subType = "vide"
case "mp4a":
subType = "soun"
}
}
}
d.FramedFn(int64(size-8)*8, func(d *decode.D) {
@ -633,7 +647,7 @@ func init() {
})
},
"avcC": func(ctx *decodeContext, d *decode.D) {
dv, v := d.FieldFormat("descriptor", mpegAVCDCRFormat, nil)
dv, v := d.FieldFormat("descriptor", avcDCRFormat, nil)
avcDcrOut, ok := v.(format.AvcDcrOut)
if dv != nil && !ok {
panic(fmt.Sprintf("expected AvcDcrOut got %#+v", v))
@ -643,7 +657,7 @@ func init() {
}
},
"hvcC": func(ctx *decodeContext, d *decode.D) {
dv, v := d.FieldFormat("descriptor", mpegHEVCDCRFrameFormat, nil)
dv, v := d.FieldFormat("descriptor", hevcCDCRFormat, nil)
hevcDcrOut, ok := v.(format.HevcDcrOut)
if dv != nil && !ok {
panic(fmt.Sprintf("expected HevcDcrOut got %#+v", v))

View File

@ -32,20 +32,21 @@ var mp4FS embed.FS
var aacFrameFormat decode.Group
var av1CCRFormat decode.Group
var av1FrameFormat decode.Group
var avcAUFormat decode.Group
var avcDCRFormat decode.Group
var flacFrameFormat decode.Group
var flacMetadatablocksFormat decode.Group
var hevcAUFormat decode.Group
var hevcCDCRFormat decode.Group
var iccProfileFormat decode.Group
var id3v2Format decode.Group
var imageFormat decode.Group
var jpegFormat decode.Group
var mp3FrameFormat decode.Group
var mpegAVCAUFormat decode.Group
var mpegAVCDCRFormat decode.Group
var mpegESFormat decode.Group
var mpegHEVCDCRFrameFormat decode.Group
var mpegHEVCSampleFormat decode.Group
var mpegPESPacketSampleFormat decode.Group
var opusPacketFrameFormat decode.Group
var pngFormat decode.Group
var proResFrameFormat decode.Group
var protoBufWidevineFormat decode.Group
var psshPlayreadyFormat decode.Group
@ -70,12 +71,12 @@ func init() {
{Names: []string{format.AAC_FRAME}, Group: &aacFrameFormat},
{Names: []string{format.AV1_CCR}, Group: &av1CCRFormat},
{Names: []string{format.AV1_FRAME}, Group: &av1FrameFormat},
{Names: []string{format.AVC_AU}, Group: &mpegAVCAUFormat},
{Names: []string{format.AVC_DCR}, Group: &mpegAVCDCRFormat},
{Names: []string{format.AVC_AU}, Group: &avcAUFormat},
{Names: []string{format.AVC_DCR}, Group: &avcDCRFormat},
{Names: []string{format.FLAC_FRAME}, Group: &flacFrameFormat},
{Names: []string{format.FLAC_METADATABLOCKS}, Group: &flacMetadatablocksFormat},
{Names: []string{format.HEVC_AU}, Group: &mpegHEVCSampleFormat},
{Names: []string{format.HEVC_DCR}, Group: &mpegHEVCDCRFrameFormat},
{Names: []string{format.HEVC_AU}, Group: &hevcAUFormat},
{Names: []string{format.HEVC_DCR}, Group: &hevcCDCRFormat},
{Names: []string{format.ICC_PROFILE}, Group: &iccProfileFormat},
{Names: []string{format.ID3V2}, Group: &id3v2Format},
{Names: []string{format.IMAGE}, Group: &imageFormat},
@ -84,6 +85,7 @@ func init() {
{Names: []string{format.MPEG_ES}, Group: &mpegESFormat},
{Names: []string{format.MPEG_PES_PACKET}, Group: &mpegPESPacketSampleFormat},
{Names: []string{format.OPUS_PACKET}, Group: &opusPacketFrameFormat},
{Names: []string{format.PNG}, Group: &pngFormat},
{Names: []string{format.PRORES_FRAME}, Group: &proResFrameFormat},
{Names: []string{format.PROTOBUF_WIDEVINE}, Group: &protoBufWidevineFormat},
{Names: []string{format.PSSH_PLAYREADY}, Group: &psshPlayreadyFormat},
@ -129,6 +131,7 @@ type stsz struct {
}
type track struct {
seenHdlr bool
id int
sampleDescriptions []sampleDescription
subType string
@ -229,10 +232,10 @@ func mp4Tracks(d *decode.D, ctx *decodeContext) {
case dataFormat == "vp09":
d.FieldFormatLen(name, nBits, vp9FrameFormat, inArg)
case dataFormat == "avc1":
d.FieldFormatLen(name, nBits, mpegAVCAUFormat, inArg)
d.FieldFormatLen(name, nBits, avcAUFormat, inArg)
case dataFormat == "hev1",
dataFormat == "hvc1":
d.FieldFormatLen(name, nBits, mpegHEVCSampleFormat, inArg)
d.FieldFormatLen(name, nBits, hevcAUFormat, inArg)
case dataFormat == "av01":
d.FieldFormatLen(name, nBits, av1FrameFormat, inArg)
case dataFormat == "mp4a" && t.objectType == format.MPEGObjectTypeMP3:
@ -245,6 +248,8 @@ func mp4Tracks(d *decode.D, ctx *decodeContext) {
d.FieldFormatLen(name, nBits, mpegPESPacketSampleFormat, inArg)
case dataFormat == "mp4v" && t.objectType == format.MPEGObjectTypeMJPEG:
d.FieldFormatLen(name, nBits, jpegFormat, inArg)
case dataFormat == "mp4v" && t.objectType == format.MPEGObjectTypePNG:
d.FieldFormatLen(name, nBits, pngFormat, inArg)
case dataFormat == "jpeg":
d.FieldFormatLen(name, nBits, jpegFormat, inArg)
case dataFormat == "apch",

BIN
format/mp4/testdata/png.mp4 vendored Normal file

Binary file not shown.

404
format/mp4/testdata/png.mp4.fqtest vendored Normal file
View File

@ -0,0 +1,404 @@
# ffmpeg -f lavfi -i testsrc=size=2x2 -c:v png -t 10ms png.mp4
$ fq dv png.mp4
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: png.mp4 (mp4) 0x0-0x39f.7 (928)
| | | boxes[0:4]: 0x0-0x39f.7 (928)
| | | [0]{}: box 0x0-0x1b.7 (28)
0x000|00 00 00 1c |.... | size: 28 0x0-0x3.7 (4)
0x000| 66 74 79 70 | ftyp | type: "ftyp" (File type and compatibility) 0x4-0x7.7 (4)
0x000| 69 73 6f 6d | isom | major_brand: "isom" 0x8-0xb.7 (4)
0x000| 00 00 02 00| ....| minor_version: 512 0xc-0xf.7 (4)
| | | brands[0:3]: 0x10-0x1b.7 (12)
0x010|69 73 6f 6d |isom | [0]: "isom" brand (All files based on the ISO Base Media File Format) 0x10-0x13.7 (4)
0x010| 69 73 6f 32 | iso2 | [1]: "iso2" brand (All files based on the 2004 edition of the ISO file format) 0x14-0x17.7 (4)
0x010| 6d 70 34 31 | mp41 | [2]: "mp41" brand (MP4 version 1) 0x18-0x1b.7 (4)
| | | [1]{}: box 0x1c-0x23.7 (8)
0x010| 00 00 00 08| ....| size: 8 0x1c-0x1f.7 (4)
0x020|66 72 65 65 |free | type: "free" (Free space) 0x20-0x23.7 (4)
| | | data: raw bits 0x24-NA (0)
| | | [2]{}: box 0x24-0x88.7 (101)
0x020| 00 00 00 65 | ...e | size: 101 0x24-0x27.7 (4)
0x020| 6d 64 61 74 | mdat | type: "mdat" (Media data container) 0x28-0x2b.7 (4)
0x020| 89 50 4e 47| .PNG| data: raw bits 0x2c-0x88.7 (93)
0x030|0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 00 02|........IHDR....|
* |until 0x88.7 (93) | |
| | | [3]{}: box 0x89-0x39f.7 (791)
0x080| 00 00 03 17 | .... | size: 791 0x89-0x8c.7 (4)
0x080| 6d 6f 6f| moo| type: "moov" (Container for all the meta-data) 0x8d-0x90.7 (4)
0x090|76 |v |
| | | boxes[0:3]: 0x91-0x39f.7 (783)
| | | [0]{}: box 0x91-0xfc.7 (108)
0x090| 00 00 00 6c | ...l | size: 108 0x91-0x94.7 (4)
0x090| 6d 76 68 64 | mvhd | type: "mvhd" (Movie header, overall declarations) 0x95-0x98.7 (4)
0x090| 00 | . | version: 0 0x99-0x99.7 (1)
0x090| 00 00 00 | ... | flags: 0 0x9a-0x9c.7 (3)
0x090| 00 00 00| ...| creation_time: 0 (1904-01-04T00:00:00Z) 0x9d-0xa0.7 (4)
0x0a0|00 |. |
0x0a0| 00 00 00 00 | .... | modification_time: 0 (1904-01-04T00:00:00Z) 0xa1-0xa4.7 (4)
0x0a0| 00 00 03 e8 | .... | time_scale: 1000 0xa5-0xa8.7 (4)
0x0a0| 00 00 00 28 | ...( | duration: 40 0xa9-0xac.7 (4)
0x0a0| 00 01 00| ...| preferred_rate: 1 0xad-0xb0.7 (4)
0x0b0|00 |. |
0x0b0| 01 00 | .. | preferred_volume: 1 0xb1-0xb2.7 (2)
0x0b0| 00 00 00 00 00 00 00 00 00 00 | .......... | reserved: "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" 0xb3-0xbc.7 (10)
| | | matrix_structure{}: 0xbd-0xe0.7 (36)
0x0b0| 00 01 00| ...| a: 1 0xbd-0xc0.7 (4)
0x0c0|00 |. |
0x0c0| 00 00 00 00 | .... | b: 0 0xc1-0xc4.7 (4)
0x0c0| 00 00 00 00 | .... | u: 0 0xc5-0xc8.7 (4)
0x0c0| 00 00 00 00 | .... | c: 0 0xc9-0xcc.7 (4)
0x0c0| 00 01 00| ...| d: 1 0xcd-0xd0.7 (4)
0x0d0|00 |. |
0x0d0| 00 00 00 00 | .... | v: 0 0xd1-0xd4.7 (4)
0x0d0| 00 00 00 00 | .... | x: 0 0xd5-0xd8.7 (4)
0x0d0| 00 00 00 00 | .... | y: 0 0xd9-0xdc.7 (4)
0x0d0| 40 00 00| @..| w: 1 0xdd-0xe0.7 (4)
0x0e0|00 |. |
0x0e0| 00 00 00 00 | .... | preview_time: 0 0xe1-0xe4.7 (4)
0x0e0| 00 00 00 00 | .... | preview_duration: 0 0xe5-0xe8.7 (4)
0x0e0| 00 00 00 00 | .... | poster_time: 0 0xe9-0xec.7 (4)
0x0e0| 00 00 00| ...| selection_time: 0 0xed-0xf0.7 (4)
0x0f0|00 |. |
0x0f0| 00 00 00 00 | .... | selection_duration: 0 0xf1-0xf4.7 (4)
0x0f0| 00 00 00 00 | .... | current_time: 0 0xf5-0xf8.7 (4)
0x0f0| 00 00 00 02 | .... | next_track_id: 2 0xf9-0xfc.7 (4)
| | | [1]{}: box 0xfd-0x33d.7 (577)
0x0f0| 00 00 02| ...| size: 577 0xfd-0x100.7 (4)
0x100|41 |A |
0x100| 74 72 61 6b | trak | type: "trak" (Container for an individual track or stream) 0x101-0x104.7 (4)
| | | boxes[0:3]: 0x105-0x33d.7 (569)
| | | [0]{}: box 0x105-0x160.7 (92)
0x100| 00 00 00 5c | ...\ | size: 92 0x105-0x108.7 (4)
0x100| 74 6b 68 64 | tkhd | type: "tkhd" (Track header, overall information about the track) 0x109-0x10c.7 (4)
0x100| 00 | . | version: 0 0x10d-0x10d.7 (1)
0x100| 00 00| ..| flags: 3 0x10e-0x110.7 (3)
0x110|03 |. |
0x110| 00 00 00 00 | .... | creation_time: 0 (1904-01-04T00:00:00Z) 0x111-0x114.7 (4)
0x110| 00 00 00 00 | .... | modification_time: 0 (1904-01-04T00:00:00Z) 0x115-0x118.7 (4)
0x110| 00 00 00 01 | .... | track_id: 1 0x119-0x11c.7 (4)
0x110| 00 00 00| ...| reserved1: 0 0x11d-0x120.7 (4)
0x120|00 |. |
0x120| 00 00 00 28 | ...( | duration: 40 0x121-0x124.7 (4)
0x120| 00 00 00 00 00 00 00 00 | ........ | reserved2: raw bits 0x125-0x12c.7 (8)
0x120| 00 00 | .. | layer: 0 0x12d-0x12e.7 (2)
0x120| 00| .| alternate_group: 0 0x12f-0x130.7 (2)
0x130|00 |. |
0x130| 00 00 | .. | volume: 0 0x131-0x132.7 (2)
0x130| 00 00 | .. | reserved3: 0 0x133-0x134.7 (2)
| | | matrix_structure{}: 0x135-0x158.7 (36)
0x130| 00 01 00 00 | .... | a: 1 0x135-0x138.7 (4)
0x130| 00 00 00 00 | .... | b: 0 0x139-0x13c.7 (4)
0x130| 00 00 00| ...| u: 0 0x13d-0x140.7 (4)
0x140|00 |. |
0x140| 00 00 00 00 | .... | c: 0 0x141-0x144.7 (4)
0x140| 00 01 00 00 | .... | d: 1 0x145-0x148.7 (4)
0x140| 00 00 00 00 | .... | v: 0 0x149-0x14c.7 (4)
0x140| 00 00 00| ...| x: 0 0x14d-0x150.7 (4)
0x150|00 |. |
0x150| 00 00 00 00 | .... | y: 0 0x151-0x154.7 (4)
0x150| 40 00 00 00 | @... | w: 1 0x155-0x158.7 (4)
0x150| 00 02 00 00 | .... | track_width: 2 0x159-0x15c.7 (4)
0x150| 00 02 00| ...| track_height: 2 0x15d-0x160.7 (4)
0x160|00 |. |
| | | [1]{}: box 0x161-0x184.7 (36)
0x160| 00 00 00 24 | ...$ | size: 36 0x161-0x164.7 (4)
0x160| 65 64 74 73 | edts | type: "edts" (Edit list container) 0x165-0x168.7 (4)
| | | boxes[0:1]: 0x169-0x184.7 (28)
| | | [0]{}: box 0x169-0x184.7 (28)
0x160| 00 00 00 1c | .... | size: 28 0x169-0x16c.7 (4)
0x160| 65 6c 73| els| type: "elst" (An edit list) 0x16d-0x170.7 (4)
0x170|74 |t |
0x170| 00 | . | version: 0 0x171-0x171.7 (1)
0x170| 00 00 00 | ... | flags: 0 0x172-0x174.7 (3)
0x170| 00 00 00 01 | .... | entry_count: 1 0x175-0x178.7 (4)
| | | entries[0:1]: 0x179-0x184.7 (12)
| | | [0]{}: entry 0x179-0x184.7 (12)
0x170| 00 00 00 28 | ...( | segment_duration: 40 0x179-0x17c.7 (4)
0x170| 00 00 00| ...| media_time: 0 0x17d-0x180.7 (4)
0x180|00 |. |
0x180| 00 01 00 00 | .... | media_rate: 1 0x181-0x184.7 (4)
| | | [2]{}: box 0x185-0x33d.7 (441)
0x180| 00 00 01 b9 | .... | size: 441 0x185-0x188.7 (4)
0x180| 6d 64 69 61 | mdia | type: "mdia" (Container for the media information in a track) 0x189-0x18c.7 (4)
| | | boxes[0:3]: 0x18d-0x33d.7 (433)
| | | [0]{}: box 0x18d-0x1ac.7 (32)
0x180| 00 00 00| ...| size: 32 0x18d-0x190.7 (4)
0x190|20 | |
0x190| 6d 64 68 64 | mdhd | type: "mdhd" (Media header, overall information about the media) 0x191-0x194.7 (4)
0x190| 00 | . | version: 0 0x195-0x195.7 (1)
0x190| 00 00 00 | ... | flags: 0 0x196-0x198.7 (3)
0x190| 00 00 00 00 | .... | creation_time: 0 (1904-01-04T00:00:00Z) 0x199-0x19c.7 (4)
0x190| 00 00 00| ...| modification_time: 0 (1904-01-04T00:00:00Z) 0x19d-0x1a0.7 (4)
0x1a0|00 |. |
0x1a0| 00 00 32 00 | ..2. | time_scale: 12800 0x1a1-0x1a4.7 (4)
0x1a0| 00 00 02 00 | .... | duration: 512 0x1a5-0x1a8.7 (4)
0x1a0| 55 c4 | U. | language: "und" 0x1a9-0x1aa.7 (2)
0x1a0| 00 00 | .. | quality: 0 0x1ab-0x1ac.7 (2)
| | | [1]{}: box 0x1ad-0x1d9.7 (45)
0x1a0| 00 00 00| ...| size: 45 0x1ad-0x1b0.7 (4)
0x1b0|2d |- |
0x1b0| 68 64 6c 72 | hdlr | type: "hdlr" (Handler, declares the media (handler) type) 0x1b1-0x1b4.7 (4)
0x1b0| 00 | . | version: 0 0x1b5-0x1b5.7 (1)
0x1b0| 00 00 00 | ... | flags: 0 0x1b6-0x1b8.7 (3)
0x1b0| 00 00 00 00 | .... | component_type: "" 0x1b9-0x1bc.7 (4)
0x1b0| 76 69 64| vid| component_subtype: "vide" (Video Track) 0x1bd-0x1c0.7 (4)
0x1c0|65 |e |
0x1c0| 00 00 00 00 | .... | component_manufacturer: "" 0x1c1-0x1c4.7 (4)
0x1c0| 00 00 00 00 | .... | component_flags: 0 0x1c5-0x1c8.7 (4)
0x1c0| 00 00 00 00 | .... | component_flags_mask: 0 0x1c9-0x1cc.7 (4)
0x1c0| 56 69 64| Vid| component_name: "VideoHandler" 0x1cd-0x1d9.7 (13)
0x1d0|65 6f 48 61 6e 64 6c 65 72 00 |eoHandler. |
| | | [2]{}: box 0x1da-0x33d.7 (356)
0x1d0| 00 00 01 64 | ...d | size: 356 0x1da-0x1dd.7 (4)
0x1d0| 6d 69| mi| type: "minf" (Media information container) 0x1de-0x1e1.7 (4)
0x1e0|6e 66 |nf |
| | | boxes[0:3]: 0x1e2-0x33d.7 (348)
| | | [0]{}: box 0x1e2-0x1f5.7 (20)
0x1e0| 00 00 00 14 | .... | size: 20 0x1e2-0x1e5.7 (4)
0x1e0| 76 6d 68 64 | vmhd | type: "vmhd" (Video media header, overall information (video track only)) 0x1e6-0x1e9.7 (4)
0x1e0| 00 | . | version: 0 0x1ea-0x1ea.7 (1)
0x1e0| 00 00 01 | ... | flags: 1 0x1eb-0x1ed.7 (3)
0x1e0| 00 00| ..| graphicsmode: 0 0x1ee-0x1ef.7 (2)
| | | opcolor[0:3]: 0x1f0-0x1f5.7 (6)
0x1f0|00 00 |.. | [0]: 0 value 0x1f0-0x1f1.7 (2)
0x1f0| 00 00 | .. | [1]: 0 value 0x1f2-0x1f3.7 (2)
0x1f0| 00 00 | .. | [2]: 0 value 0x1f4-0x1f5.7 (2)
| | | [1]{}: box 0x1f6-0x219.7 (36)
0x1f0| 00 00 00 24 | ...$ | size: 36 0x1f6-0x1f9.7 (4)
0x1f0| 64 69 6e 66 | dinf | type: "dinf" (Data information box, container) 0x1fa-0x1fd.7 (4)
| | | boxes[0:1]: 0x1fe-0x219.7 (28)
| | | [0]{}: box 0x1fe-0x219.7 (28)
0x1f0| 00 00| ..| size: 28 0x1fe-0x201.7 (4)
0x200|00 1c |.. |
0x200| 64 72 65 66 | dref | type: "dref" (Data reference box, declares source(s) of media data in track) 0x202-0x205.7 (4)
0x200| 00 | . | version: 0 0x206-0x206.7 (1)
0x200| 00 00 00 | ... | flags: 0 0x207-0x209.7 (3)
0x200| 00 00 00 01 | .... | entry_count: 1 0x20a-0x20d.7 (4)
| | | boxes[0:1]: 0x20e-0x219.7 (12)
| | | [0]{}: box 0x20e-0x219.7 (12)
0x200| 00 00| ..| size: 12 0x20e-0x211.7 (4)
0x210|00 0c |.. |
0x210| 75 72 6c 20 | url | type: "url " 0x212-0x215.7 (4)
0x210| 00 | . | version: 0 0x216-0x216.7 (1)
0x210| 00 00 01 | ... | flags: 1 0x217-0x219.7 (3)
| | | data: raw bits 0x21a-NA (0)
| | | [2]{}: box 0x21a-0x33d.7 (292)
0x210| 00 00 01 24 | ...$ | size: 292 0x21a-0x21d.7 (4)
0x210| 73 74| st| type: "stbl" (Sample table box, container for the time/space map) 0x21e-0x221.7 (4)
0x220|62 6c |bl |
| | | boxes[0:5]: 0x222-0x33d.7 (284)
| | | [0]{}: box 0x222-0x2e1.7 (192)
0x220| 00 00 00 c0 | .... | size: 192 0x222-0x225.7 (4)
0x220| 73 74 73 64 | stsd | type: "stsd" (Sample descriptions (codec types, initialization etc.)) 0x226-0x229.7 (4)
0x220| 00 | . | version: 0 0x22a-0x22a.7 (1)
0x220| 00 00 00 | ... | flags: 0 0x22b-0x22d.7 (3)
0x220| 00 00| ..| entry_count: 1 0x22e-0x231.7 (4)
0x230|00 01 |.. |
| | | boxes[0:1]: 0x232-0x2e1.7 (176)
| | | [0]{}: box 0x232-0x2e1.7 (176)
0x230| 00 00 00 b0 | .... | size: 176 0x232-0x235.7 (4)
0x230| 6d 70 34 76 | mp4v | type: "mp4v" (MPEG-4 Visual) 0x236-0x239.7 (4)
0x230| 00 00 00 00 00 00| ......| reserved: raw bits 0x23a-0x23f.7 (6)
0x240|00 01 |.. | data_reference_index: 1 0x240-0x241.7 (2)
0x240| 00 00 | .. | version: 0 0x242-0x243.7 (2)
0x240| 00 00 | .. | revision_level: 0 0x244-0x245.7 (2)
0x240| 00 00 00 00 | .... | max_packet_size: 0 0x246-0x249.7 (4)
0x240| 00 00 00 00 | .... | temporal_quality: 0 0x24a-0x24d.7 (4)
0x240| 00 00| ..| spatial_quality: 0 0x24e-0x251.7 (4)
0x250|00 00 |.. |
0x250| 00 02 | .. | width: 2 0x252-0x253.7 (2)
0x250| 00 02 | .. | height: 2 0x254-0x255.7 (2)
0x250| 00 48 00 00 | .H.. | horizontal_resolution: 72 0x256-0x259.7 (4)
0x250| 00 48 00 00 | .H.. | vertical_resolution: 72 0x25a-0x25d.7 (4)
0x250| 00 00| ..| data_size: 0 0x25e-0x261.7 (4)
0x260|00 00 |.. |
0x260| 00 01 | .. | frame_count: 1 0x262-0x263.7 (2)
0x260| 11 4c 61 76 63 35 39 2e 33 37 2e 31| .Lavc59.37.1| compressor_name: "Lavc59.37.100 png" 0x264-0x283.7 (32)
0x270|30 30 20 70 6e 67 00 00 00 00 00 00 00 00 00 00|00 png..........|
0x280|00 00 00 00 |.... |
0x280| 00 18 | .. | depth: 24 0x284-0x285.7 (2)
0x280| ff ff | .. | color_table_id: -1 0x286-0x287.7 (2)
| | | boxes[0:4]: 0x288-0x2e1.7 (90)
| | | [0]{}: box 0x288-0x2b3.7 (44)
0x280| 00 00 00 2c | ..., | size: 44 0x288-0x28b.7 (4)
0x280| 65 73 64 73| esds| type: "esds" (Elementary stream descriptor) 0x28c-0x28f.7 (4)
0x290|00 00 00 00 |.... | version: 0 0x290-0x293.7 (4)
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| descriptor{}: (mpeg_es) 0x294-0x2b3.7 (32)
0x290| 03 | . | tag_id: "ES_DescrTag" (3) 0x294-0x294.7 (1)
0x290| 80 80 80 1b | .... | length: 27 0x295-0x298.7 (4)
0x290| 00 01 | .. | es_id: 1 0x299-0x29a.7 (2)
0x290| 00 | . | stream_dependency_flag: false 0x29b-0x29b (0.1)
0x290| 00 | . | url_flag: false 0x29b.1-0x29b.1 (0.1)
0x290| 00 | . | ocr_stream_flag: false 0x29b.2-0x29b.2 (0.1)
0x290| 00 | . | stream_priority: 0 0x29b.3-0x29b.7 (0.5)
| | | dec_config_descr{}: 0x29c-0x2ad.7 (18)
0x290| 04 | . | tag_id: "DecoderConfigDescrTag" (4) 0x29c-0x29c.7 (1)
0x290| 80 80 80| ...| length: 13 0x29d-0x2a0.7 (4)
0x2a0|0d |. |
0x2a0| 6d | m | object_type_indication: "MPEGObjectTypePNG" (109) 0x2a1-0x2a1.7 (1)
0x2a0| 11 | . | stream_type: "VisualStream" (4) 0x2a2-0x2a2.5 (0.6)
0x2a0| 11 | . | upstream: false 0x2a2.6-0x2a2.6 (0.1)
0x2a0| 11 | . | specific_info_flag: true 0x2a2.7-0x2a2.7 (0.1)
0x2a0| 00 00 00 | ... | buffer_size_db: 0 0x2a3-0x2a5.7 (3)
0x2a0| 00 03 0d 40 | ...@ | max_bit_rate: 200000 0x2a6-0x2a9.7 (4)
0x2a0| 00 00 48 a8 | ..H. | avg_bit_rate: 18600 0x2aa-0x2ad.7 (4)
| | | sl_config_descr{}: 0x2ae-0x2b3.7 (6)
0x2a0| 06 | . | tag_id: "SLConfigDescrTag" (6) 0x2ae-0x2ae.7 (1)
0x2a0| 80| .| length: 1 0x2af-0x2b2.7 (4)
0x2b0|80 80 01 |... |
0x2b0| 02 | . | data: raw bits 0x2b3-0x2b3.7 (1)
| | | [1]{}: box 0x2b4-0x2bd.7 (10)
0x2b0| 00 00 00 0a | .... | size: 10 0x2b4-0x2b7.7 (4)
0x2b0| 66 69 65 6c | fiel | type: "fiel" (Video field order) 0x2b8-0x2bb.7 (4)
0x2b0| 01 00 | .. | data: raw bits 0x2bc-0x2bd.7 (2)
| | | [2]{}: box 0x2be-0x2cd.7 (16)
0x2b0| 00 00| ..| size: 16 0x2be-0x2c1.7 (4)
0x2c0|00 10 |.. |
0x2c0| 70 61 73 70 | pasp | type: "pasp" (Pixel aspect ratio) 0x2c2-0x2c5.7 (4)
0x2c0| 00 00 00 01 | .... | h_spacing: 1 0x2c6-0x2c9.7 (4)
0x2c0| 00 00 00 01 | .... | v_spacing: 1 0x2ca-0x2cd.7 (4)
| | | [3]{}: box 0x2ce-0x2e1.7 (20)
0x2c0| 00 00| ..| size: 20 0x2ce-0x2d1.7 (4)
0x2d0|00 14 |.. |
0x2d0| 62 74 72 74 | btrt | type: "btrt" (Bitrate) 0x2d2-0x2d5.7 (4)
0x2d0| 00 00 00 00 | .... | decoding_buffer_size: 0 0x2d6-0x2d9.7 (4)
0x2d0| 00 03 0d 40 | ...@ | max_bitrate: 200000 0x2da-0x2dd.7 (4)
0x2d0| 00 00| ..| avg_bitrate: 18600 0x2de-0x2e1.7 (4)
0x2e0|48 a8 |H. |
| | | [1]{}: box 0x2e2-0x2f9.7 (24)
0x2e0| 00 00 00 18 | .... | size: 24 0x2e2-0x2e5.7 (4)
0x2e0| 73 74 74 73 | stts | type: "stts" (Sample time-to-sample) 0x2e6-0x2e9.7 (4)
0x2e0| 00 | . | version: 0 0x2ea-0x2ea.7 (1)
0x2e0| 00 00 00 | ... | flags: 0 0x2eb-0x2ed.7 (3)
0x2e0| 00 00| ..| entry_count: 1 0x2ee-0x2f1.7 (4)
0x2f0|00 01 |.. |
| | | entries[0:1]: 0x2f2-0x2f9.7 (8)
| | | [0]{}: entry 0x2f2-0x2f9.7 (8)
0x2f0| 00 00 00 01 | .... | count: 1 0x2f2-0x2f5.7 (4)
0x2f0| 00 00 02 00 | .... | delta: 512 0x2f6-0x2f9.7 (4)
| | | [2]{}: box 0x2fa-0x315.7 (28)
0x2f0| 00 00 00 1c | .... | size: 28 0x2fa-0x2fd.7 (4)
0x2f0| 73 74| st| type: "stsc" (Sample-to-chunk, partial data-offset information) 0x2fe-0x301.7 (4)
0x300|73 63 |sc |
0x300| 00 | . | version: 0 0x302-0x302.7 (1)
0x300| 00 00 00 | ... | flags: 0 0x303-0x305.7 (3)
0x300| 00 00 00 01 | .... | entry_count: 1 0x306-0x309.7 (4)
| | | entries[0:1]: 0x30a-0x315.7 (12)
| | | [0]{}: entry 0x30a-0x315.7 (12)
0x300| 00 00 00 01 | .... | first_chunk: 1 0x30a-0x30d.7 (4)
0x300| 00 00| ..| samples_per_chunk: 1 0x30e-0x311.7 (4)
0x310|00 01 |.. |
0x310| 00 00 00 01 | .... | sample_description_id: 1 0x312-0x315.7 (4)
| | | [3]{}: box 0x316-0x329.7 (20)
0x310| 00 00 00 14 | .... | size: 20 0x316-0x319.7 (4)
0x310| 73 74 73 7a | stsz | type: "stsz" (Sample sizes (framing)) 0x31a-0x31d.7 (4)
0x310| 00 | . | version: 0 0x31e-0x31e.7 (1)
0x310| 00| .| flags: 0 0x31f-0x321.7 (3)
0x320|00 00 |.. |
0x320| 00 00 00 5d | ...] | sample_size: 93 0x322-0x325.7 (4)
0x320| 00 00 00 01 | .... | entry_count: 1 0x326-0x329.7 (4)
| | | [4]{}: box 0x32a-0x33d.7 (20)
0x320| 00 00 00 14 | .... | size: 20 0x32a-0x32d.7 (4)
0x320| 73 74| st| type: "stco" (Chunk offset, partial data-offset information) 0x32e-0x331.7 (4)
0x330|63 6f |co |
0x330| 00 | . | version: 0 0x332-0x332.7 (1)
0x330| 00 00 00 | ... | flags: 0 0x333-0x335.7 (3)
0x330| 00 00 00 01 | .... | entry_count: 1 0x336-0x339.7 (4)
| | | entries[0:1]: 0x33a-0x33d.7 (4)
0x330| 00 00 00 2c | ..., | [0]: 44 chunk_offset 0x33a-0x33d.7 (4)
| | | [2]{}: box 0x33e-0x39f.7 (98)
0x330| 00 00| ..| size: 98 0x33e-0x341.7 (4)
0x340|00 62 |.b |
0x340| 75 64 74 61 | udta | type: "udta" (User-data) 0x342-0x345.7 (4)
| | | boxes[0:1]: 0x346-0x39f.7 (90)
| | | [0]{}: box 0x346-0x39f.7 (90)
0x340| 00 00 00 5a | ...Z | size: 90 0x346-0x349.7 (4)
0x340| 6d 65 74 61 | meta | type: "meta" (Metadata container) 0x34a-0x34d.7 (4)
0x340| 00 00| ..| maybe_flags: 0 0x34e-0x351.7 (4)
0x350|00 00 |.. |
| | | boxes[0:2]: 0x352-0x39f.7 (78)
| | | [0]{}: box 0x352-0x372.7 (33)
0x350| 00 00 00 21 | ...! | size: 33 0x352-0x355.7 (4)
0x350| 68 64 6c 72 | hdlr | type: "hdlr" (Handler, declares the media (handler) type) 0x356-0x359.7 (4)
0x350| 00 | . | version: 0 0x35a-0x35a.7 (1)
0x350| 00 00 00 | ... | flags: 0 0x35b-0x35d.7 (3)
0x350| 00 00| ..| component_type: "" 0x35e-0x361.7 (4)
0x360|00 00 |.. |
0x360| 6d 64 69 72 | mdir | component_subtype: "mdir" (Metadata) 0x362-0x365.7 (4)
0x360| 61 70 70 6c | appl | component_manufacturer: "appl" 0x366-0x369.7 (4)
0x360| 00 00 00 00 | .... | component_flags: 0 0x36a-0x36d.7 (4)
0x360| 00 00| ..| component_flags_mask: 0 0x36e-0x371.7 (4)
0x370|00 00 |.. |
0x370| 00 | . | component_name: "" 0x372-0x372.7 (1)
| | | [1]{}: box 0x373-0x39f.7 (45)
0x370| 00 00 00 2d | ...- | size: 45 0x373-0x376.7 (4)
0x370| 69 6c 73 74 | ilst | type: "ilst" 0x377-0x37a.7 (4)
| | | boxes[0:1]: 0x37b-0x39f.7 (37)
| | | [0]{}: box 0x37b-0x39f.7 (37)
0x370| 00 00 00 25 | ...% | size: 37 0x37b-0x37e.7 (4)
0x370| a9| .| type: "<22>too" 0x37f-0x382.7 (4)
0x380|74 6f 6f |too |
| | | boxes[0:1]: 0x383-0x39f.7 (29)
| | | [0]{}: box 0x383-0x39f.7 (29)
0x380| 00 00 00 1d | .... | size: 29 0x383-0x386.7 (4)
0x380| 64 61 74 61 | data | type: "data" 0x387-0x38a.7 (4)
0x380| 00 | . | version: 0 0x38b-0x38b.7 (1)
0x380| 00 00 01 | ... | flags: 1 0x38c-0x38e.7 (3)
0x380| 00| .| reserved: 0 0x38f-0x392.7 (4)
0x390|00 00 00 |... |
0x390| 4c 61 76 66 35 39 2e 32 37 2e 31 30 30| Lavf59.27.100| data: "Lavf59.27.100" 0x393-0x39f.7 (13)
| | | tracks[0:1]: 0x2c-0x39f.7 (884)
| | | [0]{}: track 0x2c-0x39f.7 (884)
| | | samples[0:1]: 0x2c-0x88.7 (93)
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| [0]{}: sample (png) 0x2c-0x88.7 (93)
0x020| 89 50 4e 47| .PNG| signature: raw bits (valid) 0x2c-0x33.7 (8)
0x030|0d 0a 1a 0a |.... |
| | | chunks[0:4]: 0x34-0x88.7 (85)
| | | [0]{}: chunk 0x34-0x4c.7 (25)
0x030| 00 00 00 0d | .... | length: 13 0x34-0x37.7 (4)
0x030| 49 48 44 52 | IHDR | type: "IHDR" 0x38-0x3b.7 (4)
0x030| 49 | I | ancillary: false 0x38.3-0x38.3 (0.1)
0x030| 48 | H | private: false 0x39.3-0x39.3 (0.1)
0x030| 44 | D | reserved: false 0x3a.3-0x3a.3 (0.1)
0x030| 52 | R | safe_to_copy: true 0x3b.3-0x3b.3 (0.1)
0x030| 00 00 00 02| ....| width: 2 0x3c-0x3f.7 (4)
0x040|00 00 00 02 |.... | height: 2 0x40-0x43.7 (4)
0x040| 08 | . | bit_depth: 8 0x44-0x44.7 (1)
0x040| 02 | . | color_type: "rgb" (2) 0x45-0x45.7 (1)
0x040| 00 | . | compression_method: "deflate" (0) 0x46-0x46.7 (1)
0x040| 00 | . | filter_method: "adaptive_filtering" (0) 0x47-0x47.7 (1)
0x040| 00 | . | interlace_method: "none" (0) 0x48-0x48.7 (1)
0x040| fd d4 9a 73 | ...s | crc: 0xfdd49a73 (valid) 0x49-0x4c.7 (4)
| | | [1]{}: chunk 0x4d-0x61.7 (21)
0x040| 00 00 00| ...| length: 9 0x4d-0x50.7 (4)
0x050|09 |. |
0x050| 70 48 59 73 | pHYs | type: "pHYs" 0x51-0x54.7 (4)
0x050| 70 | p | ancillary: true 0x51.3-0x51.3 (0.1)
0x050| 48 | H | private: false 0x52.3-0x52.3 (0.1)
0x050| 59 | Y | reserved: true 0x53.3-0x53.3 (0.1)
0x050| 73 | s | safe_to_copy: true 0x54.3-0x54.3 (0.1)
0x050| 00 00 00 01 | .... | x_pixels_per_unit: 1 0x55-0x58.7 (4)
0x050| 00 00 00 01 | .... | y_pixels_per_unit: 1 0x59-0x5c.7 (4)
0x050| 00 | . | unit: 0 0x5d-0x5d.7 (1)
0x050| 4f 25| O%| crc: 0x4f25c4d6 (valid) 0x5e-0x61.7 (4)
0x060|c4 d6 |.. |
| | | [2]{}: chunk 0x62-0x7c.7 (27)
0x060| 00 00 00 0f | .... | length: 15 0x62-0x65.7 (4)
0x060| 49 44 41 54 | IDAT | type: "IDAT" 0x66-0x69.7 (4)
0x060| 49 | I | ancillary: false 0x66.3-0x66.3 (0.1)
0x060| 44 | D | private: false 0x67.3-0x67.3 (0.1)
0x060| 41 | A | reserved: false 0x68.3-0x68.3 (0.1)
0x060| 54 | T | safe_to_copy: true 0x69.3-0x69.3 (0.1)
0x060| 78 9c 63 60 60 60| x.c```| data: raw bits 0x6a-0x78.7 (15)
0x070|f8 0f c3 ff 01 12 fb 03 fd |......... |
0x070| 59 a8 83 f3 | Y... | crc: 0x59a883f3 (valid) 0x79-0x7c.7 (4)
| | | [3]{}: chunk 0x7d-0x88.7 (12)
0x070| 00 00 00| ...| length: 0 0x7d-0x80.7 (4)
0x080|00 |. |
0x080| 49 45 4e 44 | IEND | type: "IEND" 0x81-0x84.7 (4)
0x080| 49 | I | ancillary: false 0x81.3-0x81.3 (0.1)
0x080| 45 | E | private: false 0x82.3-0x82.3 (0.1)
0x080| 4e | N | reserved: false 0x83.3-0x83.3 (0.1)
0x080| 44 | D | safe_to_copy: false 0x84.3-0x84.3 (0.1)
0x080| ae 42 60 82 | .B`. | crc: 0xae426082 (valid) 0x85-0x88.7 (4)
| | | id: 1 0x3a0-NA (0)
| | | data_format: "mp4v" (MPEG-4 Visual) 0x3a0-NA (0)

BIN
format/mp4/testdata/png_no_hdlr.mp4 vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,356 @@
# inspired by https://github.com/corkami/pocs/blob/master/mini/mp4.mp4
# ffmpeg -f lavfi -i testsrc=size=2x2 -c:v png -t 10ms png.mp4
# mp4edit --remove 'moov[0]/trak[0]/mdia[0]/hdlr[0]' png.mp4 png_no_hdlr.mp4
$ fq dv png_no_hdlr.mp4
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: png_no_hdlr.mp4 (mp4) 0x0-0x372.7 (883)
| | | boxes[0:4]: 0x0-0x372.7 (883)
| | | [0]{}: box 0x0-0x1b.7 (28)
0x000|00 00 00 1c |.... | size: 28 0x0-0x3.7 (4)
0x000| 66 74 79 70 | ftyp | type: "ftyp" (File type and compatibility) 0x4-0x7.7 (4)
0x000| 69 73 6f 6d | isom | major_brand: "isom" 0x8-0xb.7 (4)
0x000| 00 00 02 00| ....| minor_version: 512 0xc-0xf.7 (4)
| | | brands[0:3]: 0x10-0x1b.7 (12)
0x010|69 73 6f 6d |isom | [0]: "isom" brand (All files based on the ISO Base Media File Format) 0x10-0x13.7 (4)
0x010| 69 73 6f 32 | iso2 | [1]: "iso2" brand (All files based on the 2004 edition of the ISO file format) 0x14-0x17.7 (4)
0x010| 6d 70 34 31 | mp41 | [2]: "mp41" brand (MP4 version 1) 0x18-0x1b.7 (4)
| | | [1]{}: box 0x1c-0x23.7 (8)
0x010| 00 00 00 08| ....| size: 8 0x1c-0x1f.7 (4)
0x020|66 72 65 65 |free | type: "free" (Free space) 0x20-0x23.7 (4)
| | | data: raw bits 0x24-NA (0)
| | | [2]{}: box 0x24-0x30d.7 (746)
0x020| 00 00 02 ea | .... | size: 746 0x24-0x27.7 (4)
0x020| 6d 6f 6f 76 | moov | type: "moov" (Container for all the meta-data) 0x28-0x2b.7 (4)
| | | boxes[0:3]: 0x2c-0x30d.7 (738)
| | | [0]{}: box 0x2c-0x97.7 (108)
0x020| 00 00 00 6c| ...l| size: 108 0x2c-0x2f.7 (4)
0x030|6d 76 68 64 |mvhd | type: "mvhd" (Movie header, overall declarations) 0x30-0x33.7 (4)
0x030| 00 | . | version: 0 0x34-0x34.7 (1)
0x030| 00 00 00 | ... | flags: 0 0x35-0x37.7 (3)
0x030| 00 00 00 00 | .... | creation_time: 0 (1904-01-04T00:00:00Z) 0x38-0x3b.7 (4)
0x030| 00 00 00 00| ....| modification_time: 0 (1904-01-04T00:00:00Z) 0x3c-0x3f.7 (4)
0x040|00 00 03 e8 |.... | time_scale: 1000 0x40-0x43.7 (4)
0x040| 00 00 00 28 | ...( | duration: 40 0x44-0x47.7 (4)
0x040| 00 01 00 00 | .... | preferred_rate: 1 0x48-0x4b.7 (4)
0x040| 01 00 | .. | preferred_volume: 1 0x4c-0x4d.7 (2)
0x040| 00 00| ..| reserved: "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" 0x4e-0x57.7 (10)
0x050|00 00 00 00 00 00 00 00 |........ |
| | | matrix_structure{}: 0x58-0x7b.7 (36)
0x050| 00 01 00 00 | .... | a: 1 0x58-0x5b.7 (4)
0x050| 00 00 00 00| ....| b: 0 0x5c-0x5f.7 (4)
0x060|00 00 00 00 |.... | u: 0 0x60-0x63.7 (4)
0x060| 00 00 00 00 | .... | c: 0 0x64-0x67.7 (4)
0x060| 00 01 00 00 | .... | d: 1 0x68-0x6b.7 (4)
0x060| 00 00 00 00| ....| v: 0 0x6c-0x6f.7 (4)
0x070|00 00 00 00 |.... | x: 0 0x70-0x73.7 (4)
0x070| 00 00 00 00 | .... | y: 0 0x74-0x77.7 (4)
0x070| 40 00 00 00 | @... | w: 1 0x78-0x7b.7 (4)
0x070| 00 00 00 00| ....| preview_time: 0 0x7c-0x7f.7 (4)
0x080|00 00 00 00 |.... | preview_duration: 0 0x80-0x83.7 (4)
0x080| 00 00 00 00 | .... | poster_time: 0 0x84-0x87.7 (4)
0x080| 00 00 00 00 | .... | selection_time: 0 0x88-0x8b.7 (4)
0x080| 00 00 00 00| ....| selection_duration: 0 0x8c-0x8f.7 (4)
0x090|00 00 00 00 |.... | current_time: 0 0x90-0x93.7 (4)
0x090| 00 00 00 02 | .... | next_track_id: 2 0x94-0x97.7 (4)
| | | [1]{}: box 0x98-0x2ab.7 (532)
0x090| 00 00 02 14 | .... | size: 532 0x98-0x9b.7 (4)
0x090| 74 72 61 6b| trak| type: "trak" (Container for an individual track or stream) 0x9c-0x9f.7 (4)
| | | boxes[0:3]: 0xa0-0x2ab.7 (524)
| | | [0]{}: box 0xa0-0xfb.7 (92)
0x0a0|00 00 00 5c |...\ | size: 92 0xa0-0xa3.7 (4)
0x0a0| 74 6b 68 64 | tkhd | type: "tkhd" (Track header, overall information about the track) 0xa4-0xa7.7 (4)
0x0a0| 00 | . | version: 0 0xa8-0xa8.7 (1)
0x0a0| 00 00 03 | ... | flags: 3 0xa9-0xab.7 (3)
0x0a0| 00 00 00 00| ....| creation_time: 0 (1904-01-04T00:00:00Z) 0xac-0xaf.7 (4)
0x0b0|00 00 00 00 |.... | modification_time: 0 (1904-01-04T00:00:00Z) 0xb0-0xb3.7 (4)
0x0b0| 00 00 00 01 | .... | track_id: 1 0xb4-0xb7.7 (4)
0x0b0| 00 00 00 00 | .... | reserved1: 0 0xb8-0xbb.7 (4)
0x0b0| 00 00 00 28| ...(| duration: 40 0xbc-0xbf.7 (4)
0x0c0|00 00 00 00 00 00 00 00 |........ | reserved2: raw bits 0xc0-0xc7.7 (8)
0x0c0| 00 00 | .. | layer: 0 0xc8-0xc9.7 (2)
0x0c0| 00 00 | .. | alternate_group: 0 0xca-0xcb.7 (2)
0x0c0| 00 00 | .. | volume: 0 0xcc-0xcd.7 (2)
0x0c0| 00 00| ..| reserved3: 0 0xce-0xcf.7 (2)
| | | matrix_structure{}: 0xd0-0xf3.7 (36)
0x0d0|00 01 00 00 |.... | a: 1 0xd0-0xd3.7 (4)
0x0d0| 00 00 00 00 | .... | b: 0 0xd4-0xd7.7 (4)
0x0d0| 00 00 00 00 | .... | u: 0 0xd8-0xdb.7 (4)
0x0d0| 00 00 00 00| ....| c: 0 0xdc-0xdf.7 (4)
0x0e0|00 01 00 00 |.... | d: 1 0xe0-0xe3.7 (4)
0x0e0| 00 00 00 00 | .... | v: 0 0xe4-0xe7.7 (4)
0x0e0| 00 00 00 00 | .... | x: 0 0xe8-0xeb.7 (4)
0x0e0| 00 00 00 00| ....| y: 0 0xec-0xef.7 (4)
0x0f0|40 00 00 00 |@... | w: 1 0xf0-0xf3.7 (4)
0x0f0| 00 02 00 00 | .... | track_width: 2 0xf4-0xf7.7 (4)
0x0f0| 00 02 00 00 | .... | track_height: 2 0xf8-0xfb.7 (4)
| | | [1]{}: box 0xfc-0x11f.7 (36)
0x0f0| 00 00 00 24| ...$| size: 36 0xfc-0xff.7 (4)
0x100|65 64 74 73 |edts | type: "edts" (Edit list container) 0x100-0x103.7 (4)
| | | boxes[0:1]: 0x104-0x11f.7 (28)
| | | [0]{}: box 0x104-0x11f.7 (28)
0x100| 00 00 00 1c | .... | size: 28 0x104-0x107.7 (4)
0x100| 65 6c 73 74 | elst | type: "elst" (An edit list) 0x108-0x10b.7 (4)
0x100| 00 | . | version: 0 0x10c-0x10c.7 (1)
0x100| 00 00 00| ...| flags: 0 0x10d-0x10f.7 (3)
0x110|00 00 00 01 |.... | entry_count: 1 0x110-0x113.7 (4)
| | | entries[0:1]: 0x114-0x11f.7 (12)
| | | [0]{}: entry 0x114-0x11f.7 (12)
0x110| 00 00 00 28 | ...( | segment_duration: 40 0x114-0x117.7 (4)
0x110| 00 00 00 00 | .... | media_time: 0 0x118-0x11b.7 (4)
0x110| 00 01 00 00| ....| media_rate: 1 0x11c-0x11f.7 (4)
| | | [2]{}: box 0x120-0x2ab.7 (396)
0x120|00 00 01 8c |.... | size: 396 0x120-0x123.7 (4)
0x120| 6d 64 69 61 | mdia | type: "mdia" (Container for the media information in a track) 0x124-0x127.7 (4)
| | | boxes[0:2]: 0x128-0x2ab.7 (388)
| | | [0]{}: box 0x128-0x147.7 (32)
0x120| 00 00 00 20 | ... | size: 32 0x128-0x12b.7 (4)
0x120| 6d 64 68 64| mdhd| type: "mdhd" (Media header, overall information about the media) 0x12c-0x12f.7 (4)
0x130|00 |. | version: 0 0x130-0x130.7 (1)
0x130| 00 00 00 | ... | flags: 0 0x131-0x133.7 (3)
0x130| 00 00 00 00 | .... | creation_time: 0 (1904-01-04T00:00:00Z) 0x134-0x137.7 (4)
0x130| 00 00 00 00 | .... | modification_time: 0 (1904-01-04T00:00:00Z) 0x138-0x13b.7 (4)
0x130| 00 00 32 00| ..2.| time_scale: 12800 0x13c-0x13f.7 (4)
0x140|00 00 02 00 |.... | duration: 512 0x140-0x143.7 (4)
0x140| 55 c4 | U. | language: "und" 0x144-0x145.7 (2)
0x140| 00 00 | .. | quality: 0 0x146-0x147.7 (2)
| | | [1]{}: box 0x148-0x2ab.7 (356)
0x140| 00 00 01 64 | ...d | size: 356 0x148-0x14b.7 (4)
0x140| 6d 69 6e 66| minf| type: "minf" (Media information container) 0x14c-0x14f.7 (4)
| | | boxes[0:3]: 0x150-0x2ab.7 (348)
| | | [0]{}: box 0x150-0x163.7 (20)
0x150|00 00 00 14 |.... | size: 20 0x150-0x153.7 (4)
0x150| 76 6d 68 64 | vmhd | type: "vmhd" (Video media header, overall information (video track only)) 0x154-0x157.7 (4)
0x150| 00 | . | version: 0 0x158-0x158.7 (1)
0x150| 00 00 01 | ... | flags: 1 0x159-0x15b.7 (3)
0x150| 00 00 | .. | graphicsmode: 0 0x15c-0x15d.7 (2)
| | | opcolor[0:3]: 0x15e-0x163.7 (6)
0x150| 00 00| ..| [0]: 0 value 0x15e-0x15f.7 (2)
0x160|00 00 |.. | [1]: 0 value 0x160-0x161.7 (2)
0x160| 00 00 | .. | [2]: 0 value 0x162-0x163.7 (2)
| | | [1]{}: box 0x164-0x187.7 (36)
0x160| 00 00 00 24 | ...$ | size: 36 0x164-0x167.7 (4)
0x160| 64 69 6e 66 | dinf | type: "dinf" (Data information box, container) 0x168-0x16b.7 (4)
| | | boxes[0:1]: 0x16c-0x187.7 (28)
| | | [0]{}: box 0x16c-0x187.7 (28)
0x160| 00 00 00 1c| ....| size: 28 0x16c-0x16f.7 (4)
0x170|64 72 65 66 |dref | type: "dref" (Data reference box, declares source(s) of media data in track) 0x170-0x173.7 (4)
0x170| 00 | . | version: 0 0x174-0x174.7 (1)
0x170| 00 00 00 | ... | flags: 0 0x175-0x177.7 (3)
0x170| 00 00 00 01 | .... | entry_count: 1 0x178-0x17b.7 (4)
| | | boxes[0:1]: 0x17c-0x187.7 (12)
| | | [0]{}: box 0x17c-0x187.7 (12)
0x170| 00 00 00 0c| ....| size: 12 0x17c-0x17f.7 (4)
0x180|75 72 6c 20 |url | type: "url " 0x180-0x183.7 (4)
0x180| 00 | . | version: 0 0x184-0x184.7 (1)
0x180| 00 00 01 | ... | flags: 1 0x185-0x187.7 (3)
| | | data: raw bits 0x188-NA (0)
| | | [2]{}: box 0x188-0x2ab.7 (292)
0x180| 00 00 01 24 | ...$ | size: 292 0x188-0x18b.7 (4)
0x180| 73 74 62 6c| stbl| type: "stbl" (Sample table box, container for the time/space map) 0x18c-0x18f.7 (4)
| | | boxes[0:5]: 0x190-0x2ab.7 (284)
| | | [0]{}: box 0x190-0x24f.7 (192)
0x190|00 00 00 c0 |.... | size: 192 0x190-0x193.7 (4)
0x190| 73 74 73 64 | stsd | type: "stsd" (Sample descriptions (codec types, initialization etc.)) 0x194-0x197.7 (4)
0x190| 00 | . | version: 0 0x198-0x198.7 (1)
0x190| 00 00 00 | ... | flags: 0 0x199-0x19b.7 (3)
0x190| 00 00 00 01| ....| entry_count: 1 0x19c-0x19f.7 (4)
| | | boxes[0:1]: 0x1a0-0x24f.7 (176)
| | | [0]{}: box 0x1a0-0x24f.7 (176)
0x1a0|00 00 00 b0 |.... | size: 176 0x1a0-0x1a3.7 (4)
0x1a0| 6d 70 34 76 | mp4v | type: "mp4v" (MPEG-4 Visual) 0x1a4-0x1a7.7 (4)
0x1a0| 00 00 00 00 00 00 | ...... | reserved: raw bits 0x1a8-0x1ad.7 (6)
0x1a0| 00 01| ..| data_reference_index: 1 0x1ae-0x1af.7 (2)
0x1b0|00 00 |.. | version: 0 0x1b0-0x1b1.7 (2)
0x1b0| 00 00 | .. | revision_level: 0 0x1b2-0x1b3.7 (2)
0x1b0| 00 00 00 00 | .... | max_packet_size: 0 0x1b4-0x1b7.7 (4)
0x1b0| 00 00 00 00 | .... | temporal_quality: 0 0x1b8-0x1bb.7 (4)
0x1b0| 00 00 00 00| ....| spatial_quality: 0 0x1bc-0x1bf.7 (4)
0x1c0|00 02 |.. | width: 2 0x1c0-0x1c1.7 (2)
0x1c0| 00 02 | .. | height: 2 0x1c2-0x1c3.7 (2)
0x1c0| 00 48 00 00 | .H.. | horizontal_resolution: 72 0x1c4-0x1c7.7 (4)
0x1c0| 00 48 00 00 | .H.. | vertical_resolution: 72 0x1c8-0x1cb.7 (4)
0x1c0| 00 00 00 00| ....| data_size: 0 0x1cc-0x1cf.7 (4)
0x1d0|00 01 |.. | frame_count: 1 0x1d0-0x1d1.7 (2)
0x1d0| 11 4c 61 76 63 35 39 2e 33 37 2e 31 30 30| .Lavc59.37.100| compressor_name: "Lavc59.37.100 png" 0x1d2-0x1f1.7 (32)
0x1e0|20 70 6e 67 00 00 00 00 00 00 00 00 00 00 00 00| png............|
0x1f0|00 00 |.. |
0x1f0| 00 18 | .. | depth: 24 0x1f2-0x1f3.7 (2)
0x1f0| ff ff | .. | color_table_id: -1 0x1f4-0x1f5.7 (2)
| | | boxes[0:4]: 0x1f6-0x24f.7 (90)
| | | [0]{}: box 0x1f6-0x221.7 (44)
0x1f0| 00 00 00 2c | ..., | size: 44 0x1f6-0x1f9.7 (4)
0x1f0| 65 73 64 73 | esds | type: "esds" (Elementary stream descriptor) 0x1fa-0x1fd.7 (4)
0x1f0| 00 00| ..| version: 0 0x1fe-0x201.7 (4)
0x200|00 00 |.. |
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| descriptor{}: (mpeg_es) 0x202-0x221.7 (32)
0x200| 03 | . | tag_id: "ES_DescrTag" (3) 0x202-0x202.7 (1)
0x200| 80 80 80 1b | .... | length: 27 0x203-0x206.7 (4)
0x200| 00 01 | .. | es_id: 1 0x207-0x208.7 (2)
0x200| 00 | . | stream_dependency_flag: false 0x209-0x209 (0.1)
0x200| 00 | . | url_flag: false 0x209.1-0x209.1 (0.1)
0x200| 00 | . | ocr_stream_flag: false 0x209.2-0x209.2 (0.1)
0x200| 00 | . | stream_priority: 0 0x209.3-0x209.7 (0.5)
| | | dec_config_descr{}: 0x20a-0x21b.7 (18)
0x200| 04 | . | tag_id: "DecoderConfigDescrTag" (4) 0x20a-0x20a.7 (1)
0x200| 80 80 80 0d | .... | length: 13 0x20b-0x20e.7 (4)
0x200| 6d| m| object_type_indication: "MPEGObjectTypePNG" (109) 0x20f-0x20f.7 (1)
0x210|11 |. | stream_type: "VisualStream" (4) 0x210-0x210.5 (0.6)
0x210|11 |. | upstream: false 0x210.6-0x210.6 (0.1)
0x210|11 |. | specific_info_flag: true 0x210.7-0x210.7 (0.1)
0x210| 00 00 00 | ... | buffer_size_db: 0 0x211-0x213.7 (3)
0x210| 00 03 0d 40 | ...@ | max_bit_rate: 200000 0x214-0x217.7 (4)
0x210| 00 00 48 a8 | ..H. | avg_bit_rate: 18600 0x218-0x21b.7 (4)
| | | sl_config_descr{}: 0x21c-0x221.7 (6)
0x210| 06 | . | tag_id: "SLConfigDescrTag" (6) 0x21c-0x21c.7 (1)
0x210| 80 80 80| ...| length: 1 0x21d-0x220.7 (4)
0x220|01 |. |
0x220| 02 | . | data: raw bits 0x221-0x221.7 (1)
| | | [1]{}: box 0x222-0x22b.7 (10)
0x220| 00 00 00 0a | .... | size: 10 0x222-0x225.7 (4)
0x220| 66 69 65 6c | fiel | type: "fiel" (Video field order) 0x226-0x229.7 (4)
0x220| 01 00 | .. | data: raw bits 0x22a-0x22b.7 (2)
| | | [2]{}: box 0x22c-0x23b.7 (16)
0x220| 00 00 00 10| ....| size: 16 0x22c-0x22f.7 (4)
0x230|70 61 73 70 |pasp | type: "pasp" (Pixel aspect ratio) 0x230-0x233.7 (4)
0x230| 00 00 00 01 | .... | h_spacing: 1 0x234-0x237.7 (4)
0x230| 00 00 00 01 | .... | v_spacing: 1 0x238-0x23b.7 (4)
| | | [3]{}: box 0x23c-0x24f.7 (20)
0x230| 00 00 00 14| ....| size: 20 0x23c-0x23f.7 (4)
0x240|62 74 72 74 |btrt | type: "btrt" (Bitrate) 0x240-0x243.7 (4)
0x240| 00 00 00 00 | .... | decoding_buffer_size: 0 0x244-0x247.7 (4)
0x240| 00 03 0d 40 | ...@ | max_bitrate: 200000 0x248-0x24b.7 (4)
0x240| 00 00 48 a8| ..H.| avg_bitrate: 18600 0x24c-0x24f.7 (4)
| | | [1]{}: box 0x250-0x267.7 (24)
0x250|00 00 00 18 |.... | size: 24 0x250-0x253.7 (4)
0x250| 73 74 74 73 | stts | type: "stts" (Sample time-to-sample) 0x254-0x257.7 (4)
0x250| 00 | . | version: 0 0x258-0x258.7 (1)
0x250| 00 00 00 | ... | flags: 0 0x259-0x25b.7 (3)
0x250| 00 00 00 01| ....| entry_count: 1 0x25c-0x25f.7 (4)
| | | entries[0:1]: 0x260-0x267.7 (8)
| | | [0]{}: entry 0x260-0x267.7 (8)
0x260|00 00 00 01 |.... | count: 1 0x260-0x263.7 (4)
0x260| 00 00 02 00 | .... | delta: 512 0x264-0x267.7 (4)
| | | [2]{}: box 0x268-0x283.7 (28)
0x260| 00 00 00 1c | .... | size: 28 0x268-0x26b.7 (4)
0x260| 73 74 73 63| stsc| type: "stsc" (Sample-to-chunk, partial data-offset information) 0x26c-0x26f.7 (4)
0x270|00 |. | version: 0 0x270-0x270.7 (1)
0x270| 00 00 00 | ... | flags: 0 0x271-0x273.7 (3)
0x270| 00 00 00 01 | .... | entry_count: 1 0x274-0x277.7 (4)
| | | entries[0:1]: 0x278-0x283.7 (12)
| | | [0]{}: entry 0x278-0x283.7 (12)
0x270| 00 00 00 01 | .... | first_chunk: 1 0x278-0x27b.7 (4)
0x270| 00 00 00 01| ....| samples_per_chunk: 1 0x27c-0x27f.7 (4)
0x280|00 00 00 01 |.... | sample_description_id: 1 0x280-0x283.7 (4)
| | | [3]{}: box 0x284-0x297.7 (20)
0x280| 00 00 00 14 | .... | size: 20 0x284-0x287.7 (4)
0x280| 73 74 73 7a | stsz | type: "stsz" (Sample sizes (framing)) 0x288-0x28b.7 (4)
0x280| 00 | . | version: 0 0x28c-0x28c.7 (1)
0x280| 00 00 00| ...| flags: 0 0x28d-0x28f.7 (3)
0x290|00 00 00 5d |...] | sample_size: 93 0x290-0x293.7 (4)
0x290| 00 00 00 01 | .... | entry_count: 1 0x294-0x297.7 (4)
| | | [4]{}: box 0x298-0x2ab.7 (20)
0x290| 00 00 00 14 | .... | size: 20 0x298-0x29b.7 (4)
0x290| 73 74 63 6f| stco| type: "stco" (Chunk offset, partial data-offset information) 0x29c-0x29f.7 (4)
0x2a0|00 |. | version: 0 0x2a0-0x2a0.7 (1)
0x2a0| 00 00 00 | ... | flags: 0 0x2a1-0x2a3.7 (3)
0x2a0| 00 00 00 01 | .... | entry_count: 1 0x2a4-0x2a7.7 (4)
| | | entries[0:1]: 0x2a8-0x2ab.7 (4)
0x2a0| 00 00 03 16 | .... | [0]: 790 chunk_offset 0x2a8-0x2ab.7 (4)
| | | [2]{}: box 0x2ac-0x30d.7 (98)
0x2a0| 00 00 00 62| ...b| size: 98 0x2ac-0x2af.7 (4)
0x2b0|75 64 74 61 |udta | type: "udta" (User-data) 0x2b0-0x2b3.7 (4)
| | | boxes[0:1]: 0x2b4-0x30d.7 (90)
| | | [0]{}: box 0x2b4-0x30d.7 (90)
0x2b0| 00 00 00 5a | ...Z | size: 90 0x2b4-0x2b7.7 (4)
0x2b0| 6d 65 74 61 | meta | type: "meta" (Metadata container) 0x2b8-0x2bb.7 (4)
0x2b0| 00 00 00 00| ....| maybe_flags: 0 0x2bc-0x2bf.7 (4)
| | | boxes[0:2]: 0x2c0-0x30d.7 (78)
| | | [0]{}: box 0x2c0-0x2e0.7 (33)
0x2c0|00 00 00 21 |...! | size: 33 0x2c0-0x2c3.7 (4)
0x2c0| 68 64 6c 72 | hdlr | type: "hdlr" (Handler, declares the media (handler) type) 0x2c4-0x2c7.7 (4)
0x2c0| 00 | . | version: 0 0x2c8-0x2c8.7 (1)
0x2c0| 00 00 00 | ... | flags: 0 0x2c9-0x2cb.7 (3)
0x2c0| 00 00 00 00| ....| component_type: "" 0x2cc-0x2cf.7 (4)
0x2d0|6d 64 69 72 |mdir | component_subtype: "mdir" (Metadata) 0x2d0-0x2d3.7 (4)
0x2d0| 61 70 70 6c | appl | component_manufacturer: "appl" 0x2d4-0x2d7.7 (4)
0x2d0| 00 00 00 00 | .... | component_flags: 0 0x2d8-0x2db.7 (4)
0x2d0| 00 00 00 00| ....| component_flags_mask: 0 0x2dc-0x2df.7 (4)
0x2e0|00 |. | component_name: "" 0x2e0-0x2e0.7 (1)
| | | [1]{}: box 0x2e1-0x30d.7 (45)
0x2e0| 00 00 00 2d | ...- | size: 45 0x2e1-0x2e4.7 (4)
0x2e0| 69 6c 73 74 | ilst | type: "ilst" 0x2e5-0x2e8.7 (4)
| | | boxes[0:1]: 0x2e9-0x30d.7 (37)
| | | [0]{}: box 0x2e9-0x30d.7 (37)
0x2e0| 00 00 00 25 | ...% | size: 37 0x2e9-0x2ec.7 (4)
0x2e0| a9 74 6f| .to| type: "<22>too" 0x2ed-0x2f0.7 (4)
0x2f0|6f |o |
| | | boxes[0:1]: 0x2f1-0x30d.7 (29)
| | | [0]{}: box 0x2f1-0x30d.7 (29)
0x2f0| 00 00 00 1d | .... | size: 29 0x2f1-0x2f4.7 (4)
0x2f0| 64 61 74 61 | data | type: "data" 0x2f5-0x2f8.7 (4)
0x2f0| 00 | . | version: 0 0x2f9-0x2f9.7 (1)
0x2f0| 00 00 01 | ... | flags: 1 0x2fa-0x2fc.7 (3)
0x2f0| 00 00 00| ...| reserved: 0 0x2fd-0x300.7 (4)
0x300|00 |. |
0x300| 4c 61 76 66 35 39 2e 32 37 2e 31 30 30 | Lavf59.27.100 | data: "Lavf59.27.100" 0x301-0x30d.7 (13)
| | | [3]{}: box 0x30e-0x372.7 (101)
0x300| 00 00| ..| size: 101 0x30e-0x311.7 (4)
0x310|00 65 |.e |
0x310| 6d 64 61 74 | mdat | type: "mdat" (Media data container) 0x312-0x315.7 (4)
0x310| 89 50 4e 47 0d 0a 1a 0a 00 00| .PNG......| data: raw bits 0x316-0x372.7 (93)
0x320|00 0d 49 48 44 52 00 00 00 02 00 00 00 02 08 02|..IHDR..........|
* |until 0x372.7 (end) (93) | |
| | | tracks[0:1]: 0x316-0x372.7 (93)
| | | [0]{}: track 0x316-0x372.7 (93)
| | | samples[0:1]: 0x316-0x372.7 (93)
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| [0]{}: sample (png) 0x316-0x372.7 (93)
0x310| 89 50 4e 47 0d 0a 1a 0a | .PNG.... | signature: raw bits (valid) 0x316-0x31d.7 (8)
| | | chunks[0:4]: 0x31e-0x372.7 (85)
| | | [0]{}: chunk 0x31e-0x336.7 (25)
0x310| 00 00| ..| length: 13 0x31e-0x321.7 (4)
0x320|00 0d |.. |
0x320| 49 48 44 52 | IHDR | type: "IHDR" 0x322-0x325.7 (4)
0x320| 49 | I | ancillary: false 0x322.3-0x322.3 (0.1)
0x320| 48 | H | private: false 0x323.3-0x323.3 (0.1)
0x320| 44 | D | reserved: false 0x324.3-0x324.3 (0.1)
0x320| 52 | R | safe_to_copy: true 0x325.3-0x325.3 (0.1)
0x320| 00 00 00 02 | .... | width: 2 0x326-0x329.7 (4)
0x320| 00 00 00 02 | .... | height: 2 0x32a-0x32d.7 (4)
0x320| 08 | . | bit_depth: 8 0x32e-0x32e.7 (1)
0x320| 02| .| color_type: "rgb" (2) 0x32f-0x32f.7 (1)
0x330|00 |. | compression_method: "deflate" (0) 0x330-0x330.7 (1)
0x330| 00 | . | filter_method: "adaptive_filtering" (0) 0x331-0x331.7 (1)
0x330| 00 | . | interlace_method: "none" (0) 0x332-0x332.7 (1)
0x330| fd d4 9a 73 | ...s | crc: 0xfdd49a73 (valid) 0x333-0x336.7 (4)
| | | [1]{}: chunk 0x337-0x34b.7 (21)
0x330| 00 00 00 09 | .... | length: 9 0x337-0x33a.7 (4)
0x330| 70 48 59 73 | pHYs | type: "pHYs" 0x33b-0x33e.7 (4)
0x330| 70 | p | ancillary: true 0x33b.3-0x33b.3 (0.1)
0x330| 48 | H | private: false 0x33c.3-0x33c.3 (0.1)
0x330| 59 | Y | reserved: true 0x33d.3-0x33d.3 (0.1)
0x330| 73 | s | safe_to_copy: true 0x33e.3-0x33e.3 (0.1)
0x330| 00| .| x_pixels_per_unit: 1 0x33f-0x342.7 (4)
0x340|00 00 01 |... |
0x340| 00 00 00 01 | .... | y_pixels_per_unit: 1 0x343-0x346.7 (4)
0x340| 00 | . | unit: 0 0x347-0x347.7 (1)
0x340| 4f 25 c4 d6 | O%.. | crc: 0x4f25c4d6 (valid) 0x348-0x34b.7 (4)
| | | [2]{}: chunk 0x34c-0x366.7 (27)
0x340| 00 00 00 0f| ....| length: 15 0x34c-0x34f.7 (4)
0x350|49 44 41 54 |IDAT | type: "IDAT" 0x350-0x353.7 (4)
0x350|49 |I | ancillary: false 0x350.3-0x350.3 (0.1)
0x350| 44 | D | private: false 0x351.3-0x351.3 (0.1)
0x350| 41 | A | reserved: false 0x352.3-0x352.3 (0.1)
0x350| 54 | T | safe_to_copy: true 0x353.3-0x353.3 (0.1)
0x350| 78 9c 63 60 60 60 f8 0f c3 ff 01 12| x.c```......| data: raw bits 0x354-0x362.7 (15)
0x360|fb 03 fd |... |
0x360| 59 a8 83 f3 | Y... | crc: 0x59a883f3 (valid) 0x363-0x366.7 (4)
| | | [3]{}: chunk 0x367-0x372.7 (12)
0x360| 00 00 00 00 | .... | length: 0 0x367-0x36a.7 (4)
0x360| 49 45 4e 44 | IEND | type: "IEND" 0x36b-0x36e.7 (4)
0x360| 49 | I | ancillary: false 0x36b.3-0x36b.3 (0.1)
0x360| 45 | E | private: false 0x36c.3-0x36c.3 (0.1)
0x360| 4e | N | reserved: false 0x36d.3-0x36d.3 (0.1)
0x360| 44 | D | safe_to_copy: false 0x36e.3-0x36e.3 (0.1)
0x360| ae| .| crc: 0xae426082 (valid) 0x36f-0x372.7 (4)
0x370|42 60 82| |B`.| |
| | | id: 1 0x373-NA (0)
| | | data_format: "mp4v" (MPEG-4 Visual) 0x373-NA (0)