1. audio的track
主要描述在文件:ISO14496-12中
1.1 audio的track如下图所示
2.audio的track
2.1trak-->tkhd
-
60f2fc0: 00 070a 1074 7261 6b00 .....trak.
-
60f2fd0: 0000 5c74 6b68 6400 0000 0f7c 25b0 807c ..\tkhd....|%..|
60f2fe0: 25b0 8000 0000 0200 0000 0000 1469 9500 %............i..
60f2ff0: 0000 0000 0000 0000 0000 0001 0000 0000 ................
60f3000: 0100 0000 0000 0000 0000 0000 0000 0000 ................
60f3010: 0100 0000 0000 0000 0000 0000 0000 0040 ...............@
60f3020: 0000 0000 0000 0000 0000 00 ...........
-
-
00 070a 1074 7261 6b -->trak的长度=0x70a10,type=trak
-
00 0000 5c74 6b68 64 -->tkhd的长度=0x5c,type=tkhd
-
00 0000 0f -->tkhd的type与version
-
7c 25b0 807c 25b0 80 -->create_time与modify_time
-
00 0000 02 -->trak_id=2
-
00 0000 00 -->reserved
-
00 1469 95
-
00 0000 00 -->reserved
-
00 0000 00 -->reserved
-
00 0000 00 -->layer group
-
01 0000 00 -->volume=0x100
-
感觉剩下的没有用
2.2mdia-->mdhd
-->hdlr
-
60f3020: 00 0709 ac6d ....m
-
60f3030: 6469 6100 0000 206d 6468 6400 0000 007c dia... mdhd....|
-
60f3040: 25b0 807c 25b0 8000 00ac 4403 8430 0015 %..|%.....D..0..
-
60f3050: c700 0000 0000 2d68 646c 7200 0000 0000 ......-hdlr.....
-
60f3060: 0000 0073 6f75 6e00 0000 0000 0000 0000 ...soun.........
-
60f3070: 0000 0053 6f75 6e64 4861 6e64 6c65 7200 ...SoundHandler.
-
00 0709 ac6d 6469 61 -->mdia的长度=0x0709ac,type=mdia
-
00 0000 206d 6468 64 -->mdhd的长度=0x20,type=mdhd
-
00 0000 00 -->mdhd的version与flag
-
7c 25b0 807c 25b0 80 -->create_time与modify_time
-
00 00ac 44 -->timescale=0xac44=44100
-
03 8430 00 -->duration=0x3843000=58994688
-
15 c7 -->language
-
00 0000 2d68 646c 72 -->hdlr的长度=0x20,type=hdlr
-
00 0000 00 -->hdlr的version与flag
-
00 0000 00 -->ctype
-
73 6f75 6e -->type=soun ::ffmpeg根据这个得出:st->codec->codec_type=AVMEDIA_TYPE_AUDIO;
-
00 0000 00 -->manu 没有用
-
00 0000 00 -->flags 没有用
-
00 0000 00 -->flag_mask 没有用
-
53 6f75 6e64 4861 6e64 6c65 7200 -->SoundHandler\0
2.3 minf-->smhd
-->dinf-->dref
-
60f3080: 0007 0957 6d69 6e66 0000 0010 736d 6864 ...Wminf....smhd
-
60f3090: 0000 0000 0000 0000 0000 0024 6469 6e66 ...........$dinf
-
60f30a0: 0000 001c 6472 6566 0000 0000 0000 0001 ....dref........
-
60f30b0: 0000 000c 7572 6c20 0000 0001 0007 ....url ....
-
0007 0957 6d69 6e66 -->minf的长度=0x70957,type=minf
-
0000 0010 736d 6864 -->smhd的长度=0x10,type=smhd
-
0000 0024 6469 6e66 -->dinf的长度=0x24,type=dinf
-
0000 001c 6472 6566 -->dref的长度=0x1c,type=dref
-
0000 0000 -->dref的version与flag
-
0000 0001 -->dref的entriy=1
-
0000 000c -->dref的size=0xc
-
7572 6c20 0000 0001 -->type=url,url的version与flag
2.4
stbl-->stsd-->esds
-->stts
-->stsc
-->stsz
-
60f30b0: 0007 091b ....
-
60f30c0: 7374 626c 0000 005b 7374 7364 0000 0000 stbl...[stsd....
-
60f30d0: 0000 0001 0000 004b 6d70 3461 0000 0000 .......Kmp4a....
-
60f30e0: 0000 0001 0000 0000 0000 0000 0002 0010 ................
-
60f30f0: 0000 0000 ac44 0000 0000 0027 6573 6473 .....D.....'esds
-
60f3100: 0000 0000 0319 0002 0004 1140 1500 0000 ...........@....
-
60f3110: 0001 f400 0000 0000 0502 1210 0601 0200 ................
-
60f3120: 0000 1873 7474 7300 0000 0000 0000 0100 ...stts.........
-
60f3130: 00e1 0c00 0004 0000 0000 1c73 7473 6300 ...........stsc.
-
60f3140: 0000 0000 0000 0100 0000 0100 0000 0100 ................
-
60f3150: 0000 0100 0384 4473 7473 7a00 0000 0000 ......Dstsz.....
-
60f3160: 0000 0000 00e1 0c00 0000 1a00 0000 0900 ................
-
60f3170: 0000 0900 0000 a100 0000 c900 0000 d400 ................
-
0007 091b 7374 626c -->stbl的长度=0x7091b,type=stbl
-
0000 005b 7374 7364 -->stsd的长度=0x5b,type=stsd
-
0000 0000 -->stsd的version与flag
-
0000 0001 -->stsd的entries=0x01
-
0000 004b -->stsd的size=0x4b
-
6d70 3461 -->stsd的data_format=mp4a ::ffmpeg根据这个得出:st->codec->codec_id
-
0000 0000 -->reserved
-
0000 0001 -->reserved16,dref_id=0x01
-
0000 0000 0000 0000 -->version,version_level,vendor
-
0002 -->audio的channels=0x02 ;;双声道
-
0010 -->bits_per_coded_sample=0x10=16,16位的采样率
-
0000 0027 6573 6473 -->esds的长度=0x27,type=esds
-
0000 0000 -->esds的version与flag
-
下面是esds的descr
-
00 0000 1873 7474 73 -->stts的长度=0x18,type=stts
-
00 0000 00 -->stts的version与flag
-
00 0000 01 -->entries=0x01
-
00 00e1 0c -->sample_count=0xe10c=67612
-
00 0004 00 -->sample_duration=0x400
-
00 0000 1c73 7473 63 -->stsc的长度=0x1c,type=stsc
-
00 0000 00 -->stsc的version与flag
-
00 0000 01 -->stsc的entry
-
00 0000 01 -->stsc的frist
-
00 0000 01 -->stsc的count
-
00 0000 01 -->stsc的id
-
00 0384 4473 7473 7a -->stsz的长度=0x38444,type=stsz
-
00 0000 00 -->stsz的version与flag
-
00 0000 00 -->stsc的sample_size=0x0
-
00 00e1 0c -->stsc的sample_count=0xe10c
-
00 0000 1a -->sc->sample_sizes[0]=0x1a
-
00 0000 09 -->sc->sample_sizes[1]=0x09
-
00 0000 09 -->sc->sample_sizes[2]=0x09
这儿是audio的stsz,里面的内容是sample_sizes,即每个音频sample在文件中的长度
与下面的stco一起看就知道怎么用了。
2.5 stco
-
612b590: 0000 0900 0000 0900 0384 4073 7463 6f00 ..........@stco.
-
612b5a0: 0000 0000 00e1 0c00 0013 6300 0022 ec00 ..........c.."..
-
612b5b0: 0022 f500 0022 fe00 0023 9f00 0024 6800 ."..."...#...$h.
-
612b5c0: 002e cd00 002f 9900 0030 6e00 003a ee00 ...../...0n..:..
-
612b5d0: 003b c700 0045 8b00 0046 7300 0047 5c00 .;...E...Fs..G\.
-
612b5e0: 0048 4500 005e 2e00 005f 2200 0067 c600 .HE..^..._"..g..
-
00 0384 4073 7463 6f -->stco的长度=0x18,type=stts
-
00 0000 00 -->stco的version与flag
-
00 00e1 0c -->entries=0xe10c
-
00 0013 63 -->chunk_offsets[0]=0x1363
-
00 0022 ec -->chunk_offsets[1]=0x22ec
-
...
这儿是audio的stco,里面的内容是chunk_offsets,即每个音频sample在文件中的偏移
例如:chunk_offsets[0]=0x1363,长度通过stsz中的sample_sizes[0]=0x1a确定。
也就是说从san.mp4这个文件的0x1363处读取0x1a个字节的数据,就是音频的第0个sample的数据。
阅读(2030) | 评论(0) | 转发(0) |