3GP文件格式分析

1.?????概述
現在很多智能手機都支持多媒體功能,特別是音頻和視頻播放功能,而3GP文件格式是手機端普遍支持的視頻文件格式。
目前很多手機都支持h263視頻編碼格式的視頻文件播放,還有些手機支持h264。音頻文件格式普遍支持amr,有些手機還支持AAC音頻格式。
鑒于鳳凰衛視節目主要以新聞類為主,音頻壓縮采用AMR標準,視頻壓縮采用H263和H264標準。
編號
文件名
文件長度
時長
1
news_h263.3gp
1.38MB
01:21.90
2
zbc1217_h263.3gp
1.92MB
02:37.98
3
zbc1217_h264.3gp
2.44MB
02:37.98

2. 3GP文件結構分析示例
AtomicParsley是一個開源的多媒體文件結構分析器。
下面是用該程序分析的兩個3GP文件結構:
news_h263.3gp
Atom ftyp @ 0 of size: 28, ends @ 28
Atom mdat @ 28 of size: 65, ends @ 93
Atom mdat @ 93 of size: 130856, ends @ 130949
Atom mdat @ 130949 of size: 1312119, ends @ 1443068
Atom moov @ 1443068 of size: 7136, ends @ 1450204
???? Atom mvhd @ 1443076 of size: 108, ends @ 1443184
???? Atom trak @ 1443184 of size: 1546, ends @ 1444730
???????? Atom tkhd @ 1443192 of size: 92, ends @ 1443284
???????? Atom udta @ 1443284 of size: 48, ends @ 1443332
???????????? Atom uuid=484d496e-6354-7261-636b-496e666f2020 @ 1443292 of size: 40, ends @ 1443332
???????? Atom mdia @ 1443332 of size: 1398, ends @ 1444730
???????????? Atom mdhd @ 1443340 of size: 32, ends @ 1443372
???????????? Atom hdlr @ 1443372 of size: 37, ends @ 1443409
???????????? Atom minf @ 1443409 of size: 1321, ends @ 1444730
???????????????? Atom smhd @ 1443417 of size: 16, ends @ 1443433
???????????????? Atom dinf @ 1443433 of size: 36, ends @ 1443469
???????????????????? Atom dref @ 1443441 of size: 28, ends @ 1443469
???????????????? Atom stbl @ 1443469 of size: 1261, ends @ 1444730
???????????????????? Atom stts @ 1443477 of size: 24, ends @ 1443501
???????????????????? Atom stsd @ 1443501 of size: 69, ends @ 1443570
???????????????????????? Atom samr @ 1443517 of size: 53, ends @ 1443570
???????????????????????????? Atom damr @ 1443553 of size: 17, ends @ 1443570
???????????????????? Atom stsz @ 1443570 of size: 1112, ends @ 1444682
???????????????????? Atom stsc @ 1444682 of size: 28, ends @ 1444710
??????? ?????????????Atom stco @ 1444710 of size: 20, ends @ 1444730
???? Atom trak @ 1444730 of size: 5474, ends @ 1450204
???????? Atom tkhd @ 1444738 of size: 92, ends @ 1444830
???????? Atom tref @ 1444830 of size: 20, ends @ 1444850
???????????? Atom sync @ 1444838 of size: 12, ends @ 1444850
???????? Atom udta @ 1444850 of size: 48, ends @ 1444898
???????????? Atom uuid=484d496e-6354-7261-636b-496e666f2020 @ 1444858 of size: 40, ends @ 1444898
???????? Atom mdia @ 1444898 of size: 5306, ends @ 1450204
?????? ??????Atom mdhd @ 1444906 of size: 32, ends @ 1444938
???????????? Atom hdlr @ 1444938 of size: 37, ends @ 1444975
???????????? Atom minf @ 1444975 of size: 5229, ends @ 1450204
???????????????? Atom vmhd @ 1444983 of size: 20, ends @ 1445003
???????????? ????Atom dinf @ 1445003 of size: 36, ends @ 1445039
???????????????????? Atom dref @ 1445011 of size: 28, ends @ 1445039
???????????????? Atom stbl @ 1445039 of size: 5165, ends @ 1450204
???????????????????? Atom stts @ 1445047 of size: 24, ends @ 1445071
???????????????????? Atom stsd @ 1445071 of size: 117, ends @ 1445188
???????????????????????? Atom s263 @ 1445087 of size: 101, ends @ 1445188
???????????????????????????? Atom d263 @ 1445173 of size: 15, ends @ 1445188
???????????????????? Atom stsz @ 1445188 of size: 4920, ends @ 1450108
???????????????????? Atom stss @ 1450108 of size: 48, ends @ 1450156
???????????????????? Atom stsc @ 1450156 of size: 28, ends @ 1450184
???????????????????? Atom stco @ 1450184 of size: 20, ends @ 1450204
------------------------------------------------------
Total size: 1450204 bytes; 46 atoms total. AtomicParsley version: 0.9.0 (utf16)
Media data: 1442975 bytes; 7229 bytes all other atoms (0.498% atom overhead).
Total free atom space: 0 bytes; 0.000% waste.
------------------------------------------------------
Movie duration: 81.900 seconds (01:21.90) - 140.95* kbp/sec bitrate (*=approximate)
Low-level details. Total tracks: 2
Trk?Type?Handler??????????????????? Kind?Lang?Bytes
1??? soun?soun?????????????????? ????samr?eng?? 130848?? Encoder: NXTR
???? 12.78* kbp/s?81.900 sec?AMR Narrow-Band.Modes: 0, 1, 2, 3, 4, 5, 6, 7, 8. Encoder vendor code: NXTR
2??? vide?vide?????????????????????? s263?eng?? 1312111?? Encoder: NXTR
???? 128.41* kbp/s?81.748 sec?H.263 Baseline Profile, Level 10. Encoder vendor code: NXTR
?

?? 該3GP文件結構如下:

?

zbc1217_h263.3gp
Atom ftyp @ 0 of size: 24, ends @ 24
Atom mdat @ 24 of size: 1989236, ends @ 1989260
Atom moov @ 1989260 of size: 14951, ends @ 2004211
???? Atom mvhd @ 1989268 of size: 108, ends @ 1989376
???? Atom iods @ 1989376 of size: 33, ends @ 1989409
???? Atom udta @ 1989409 of size: 1069, ends @ 1990478
???????? Atom rtng [eng] @ 1989417 of size: 29, ends @ 1989446
???????? Atom uuid=f78caa0c-36be-4ce9-88d2-03c256dabeb2 @ 1989446 of size: 1032, ends @ 1990478
???? Atom trak @ 1990478 of size: 9978, ends @ 2000456
???????? Atom tkhd @ 1990486 of size: 92, ends @ 1990578
???????? Atom mdia @ 1990578 of size: 9842, ends @ 2000420
???????????? Atom mdhd @ 1990586 of size: 32, ends @ 1990618
???????????? Atom hdlr @ 1990618 of size: 33, ends @ 1990651
???????????? Atom minf @ 1990651 of size: 9769, ends @ 2000420
???????????????? Atom vmhd @ 1990659 of size: 20, ends @ 1990679
???????????????? Atom dinf @ 1990679 of size: 36, ends @ 1990715
???????????????????? Atom dref @ 1990687 of size: 28, ends @ 1990715
???????????????? Atom stbl @ 1990715 of size: 9705, ends @ 2000420
???????????????????? Atom stsd @ 1990723 of size: 117, ends @ 1990840
???????????????? ????????Atom s263 @ 1990739 of size: 101, ends @ 1990840
???????????????????????????? Atom d263 @ 1990825 of size: 15, ends @ 1990840
???????????????????? Atom stts @ 1990840 of size: 32, ends @ 1990872
???????????????????? Atom stsc @ 1990872 of size: 1900, ends @ 1992772
???????????????????? Atom stsz @ 1992772 of size: 6300, ends @ 1999072
???????????????????? Atom stco @ 1999072 of size: 644, ends @ 1999716
???????????????????? Atom stss @ 1999716 of size: 704, ends @ 2000420
???????? Atom udta @ 2000420 of size: 36, ends @ 2000456
???????????? Atom uuid=f78caa0c-36be-4ce9-87d2-03c256dabeb2 @ 2000428 of size: 28, ends @ 2000456
???? Atom trak @ 2000456 of size: 2934, ends @ 2003390
???????? Atom tkhd @ 2000464 of size: 92, ends @ 2000556
???????? Atom mdia @ 2000556 of size: 2798, ends @ 2003354
???????????? Atom mdhd @ 2000564 of size: 32, ends @ 2000596
???????????? Atom hdlr @ 2000596 of size: 33, ends @ 2000629
???????????? Atom minf @ 2000629 of size: 2725, ends @ 2003354
???????????????? Atom smhd @ 2000637 of size: 16, ends @ 2000653
???????????????? Atom dinf @ 2000653 of size: 36, ends @ 2000689
???????????????????? Atom dref @ 2000661 of size: 28, ends @ 2000689
???????????????? Atom stbl @ 2000689 of size: 2665, ends @ 2003354
????????????????? ???Atom stsd @ 2000697 of size: 69, ends @ 2000766
???????????????????????? Atom samr @ 2000713 of size: 53, ends @ 2000766
???????????????????????????? Atom damr @ 2000749 of size: 17, ends @ 2000766
???????????????????? Atom stts @ 2000766 of size: 24, ends @ 2000790
???????????????????? Atom stsc @ 2000790 of size: 1900, ends @ 2002690
???????????????????? Atom stsz @ 2002690 of size: 20, ends @ 2002710
???????????????????? Atom stco @ 2002710 of size: 644, ends @ 2003354
???????? Atom udta @ 2003354 of size: 36, ends @ 2003390
???????????? Atom uuid=f78caa0c-36be-4ce9-87d2-03c256dabeb2 @ 2003362 of size: 28, ends @ 2003390
???? Atom trak @ 2003390 of size: 420, ends @ 2003810
???????? Atom tkhd @ 2003398 of size: 92, ends @ 2003490
???????? Atom mdia @ 2003490 of size: 296, ends @ 2003786
???????????? Atom mdhd @ 2003498 of size: 32, ends @ 2003530
???????????? Atom hdlr @ 2003530 of size: 33, ends @ 2003563
???????????? Atom minf @ 2003563 of size: 223, ends @ 2003786
???????????????? Atom nmhd @ 2003571 of size: 12, ends @ 2003583
???????????????? Atom dinf @ 2003583 of size: 36, ends @ 2003619
???????????????????? Atom dref @ 2003591 of size: 28, ends @ 2003619
???????????????? Atom stbl @ 2003619 of size: 167, ends @ 2003786
???????????????????? Atom stsd @ 2003627 of size: 67, ends @ 2003694
???????????????????????? Atom mp4s @ 2003643 of size: 51, ends @ 2003694
???????????????????????????? Atom esds @ 2003659 of size: 35, ends @ 2003694
???????????????????? Atom stts @ 2003694 of size: 24, ends @ 2003718
???????????????????? Atom stsc @ 2003718 of size: 28, ends @ 2003746
???????????????????? Atom stsz @ 2003746 of size: 20, ends @ 2003766
???????????????????? Atom stco @ 2003766 of size: 20, ends @ 2003786
???????? Atom tref @ 2003786 of size: 24, ends @ 2003810
???????????? Atom mpod @ 2003794 of size: 16, ends @ 2003810
???? Atom trak @ 2003810 of size: 401, ends @ 2004211
???????? Atom tkhd @ 2003818 of size: 92, ends @ 2003910
???????? Atom mdia @ 2003910 of size: 301, ends @ 2004211
???????????? Atom mdhd @ 2003918 of size: 32, ends @ 2003950
???????????? Atom hdlr @ 2003950 of size: 33, ends @ 2003983
???????????? Atom minf @ 2003983 of size: 228, ends @ 2004211
???????????????? Atom nmhd @ 2003991 of size: 12, ends @ 2004003
???????????????? Atom dinf @ 2004003 of size: 36, ends @ 2004039
???????????????????? Atom dref @ 2004011 of size: 28, ends @ 2004039
???????????????? Atom stbl @ 2004039 of size: 172, ends @ 2004211
???????????????????? Atom stsd @ 2004047 of size: 72, ends @ 2004119
?????? ??????????????????Atom mp4s @ 2004063 of size: 56, ends @ 2004119
???????????????????????????? Atom esds @ 2004079 of size: 40, ends @ 2004119
???????????????????? Atom stts @ 2004119 of size: 24, ends @ 2004143
???????????????????? Atom stsc @ 2004143 of size: 28, ends @ 2004171
???????????????????? Atom stsz @ 2004171 of size: 20, ends @ 2004191
???????????????????? Atom stco @ 2004191 of size: 20, ends @ 2004211
------------------------------------------------------
Total size: 2004211 bytes; 82 atoms total. AtomicParsley version: 0.9.0 (utf16)
Media data: 1989236 bytes; 14975 bytes all other atoms (0.747% atom overhead).
Total free atom space: 0 bytes; 0.000% waste.
------------------------------------------------------
Movie duration: 156.980 seconds (02:36.98) - 101.38* kbp/sec bitrate (*=approximate)
Low-level details. Total tracks: 4
Trk?Type?Handler??????????????????? Kind?Lang?Bytes
1??? vide?[none listed]????????????? s263?und?? 1738018?? Encoder: ViVi
???? 88.58* kbp/s?156.960 sec?H.263 Baseline Profile, Level 20. Encoder vendor code: ViVi
2??? soun?[none listed]????????????? samr?und?? 251168?? Encoder: ViVi
???? 12.80* kbp/s?156.980 sec?AMR Narrow-Band. Modes: 7. Encoder vendor code: ViVi
3??? odsm?[none listed]????????????? mp4s?und?? 18
4??? sdsm?[none listed]????????????? mp4s?und?? 24
?
該3GP文件結構如下:
?
其實3GP文件就是一個對象(box)容器,對象還允許包含子對象。
對象格式如下:
struct
{
UINT32size;?????? //對象大小
chartype;????? //對象類型
void*data;????? //對象數據(屬性),大小為(size-8)
};

?

ISO base media file format》說明不同box對象的結構定義細節。

?

?

3. 3GP文件對象實例分析
l????????ftype
File Type(該對象僅有一個)
記錄該文件使用的規范和版本等信息。
?
屬性
大小
說明
size
4
0x0000001c = 28
ftyp
4
ftyp
major_brand
4
3gp4
主類型
minor_version
4
最小版本號
compatible_brands[]
string
3gp4 | 3gp5 | 3g2a
兼容類型
l????????mdat
Media Data
mdat 存放媒體數據(media data)。一般包括文字、音頻和視頻等。這些mdat的順序不固定。
?
當前mdat對象包含的是純文字。
大小
其他說明
size
4
0x00000041 = 65
mdat
4
string
這個box可以忽略。
l????????mdat
音頻數據塊
?
?
大小
其他說明
size
4
0x0001FF28 = 130856
mdat
4
32*N
3C打頭
每個音頻幀32字節
amr音頻數據以32字節一幀,每幀20毫秒。所以根據amr數據包大小就能估算出語音的時間長度。
(130856– 8) / 32 = 4089 * 20 = 81780 ms = 817.80 = 01:21.90
這個時間與播放器上顯示的時間基本相同。
注意:這里真實的視頻數據起始位置為0x000005D
在音頻trak里面的stso對象里面的chunk_offset記錄的就是這個值。
RFC3267中有如下描述:
The sampling frequency used in AMR is 8000 Hz and the speech encoding is
performed on 20 ms speech frames. Therefore, each encoded AMR speech
frame represents 160 samples of the original speech.
AMR語音采樣頻率為8Khz,每幀對應20ms
l????????mdat
視頻數據塊
?
?
大小
其他說明
size
4
0x004946F1 = 4802289
mdat
4
4
H263視頻數據
實際視頻數據大小:4802289 – 8 = 4802281
H263協議中文版》第8 5.1圖象層中描述:
每幀圖象的數據包含一個圖象頭,并緊跟著塊組數據,最后是一個end-of-sequence碼和填塞位。
圖象開始碼 (PSC) (22 bits)
PSC是一個22比特的字。它的值是0000 0000 0000 0000 1000 00-?00 00 80 00 …z
時域參考 (TR) (8 bits) ?00-00 000000-
類型信息 (PTYPE) (13 bits) ?00-10 0000 1000 000-0
6-8010表示圖像為QCIF
9:圖象編碼類型,“0” INTRA (I-picture)“1” INTER (P-picture)。關鍵幀標志位,0:關鍵幀,1p幀。
l????????moov
Movie Box
該對象保留了3GP視頻的metadata,即該3GP的全部描述信息。
這個對象一般在文件開始或者末尾。
下面詳細分析moov的各個子對象。
l????????mvhd
Movie Head Box
?
?
大小
其他說明
size
4
0x0000006C = 108
mvhd
4
version
1
0
flag
3
0
creation_time
4
modification_time
4
timescale
4
0x000003E8 = 1000
時間縮放因子
duration
4
0x00013FEC = 81900 = 81.9s
持續時間
rate
4
0x00010000 1.0(即全速播放)
播放比率
volume
2
0x0100?1.0 (音量)
音量
reserved
保留
reserved
保留
matrix
視頻轉換矩陣
pre_defined
預定義(0)
next_track_ID
4
0x000000CA = 202
下一個track_id
trak(音頻)
Track Box
?
l????????tkhd
Track Header Box
定義了該track的屬性。
?
?
大小
其他說明
size
4
0x0000005C = 92
tkhd
4
version
1
0
flag
3
1
creation_time
4
modification_time
4
track_id
4
0x00000065 = 101
reserved
4
0
duration
4
0x00013FEC = 81900 = 81.9s
音頻播放時間
reserved
8
layer
2
alternate_group
2
volume
2
0x0100
如果track是音頻則為0x0100,視頻則為0x0000
reserved
2
0
matrix
4 * 9
視頻轉換矩陣
width
4
0
音頻的wh0
height
4
0
注意:如果track是音頻volume則為0x0100,視頻volume則為0x0000
?
l????????mdhd
Media Header Box
?
?
大小
其他說明
size
4
32
mdhd
4
version
1
flag
3
creation_time
4
modification_time
4
timescale
4
0x00001F40 = 8000
時間縮放因子
duration
4
0x0009FF60 = 655200/8000=81.9
音頻播放時長
pad
1bit
language
15bit
0x15c7 ISO-639-2/T language code
pre_defined
2
?
l????????hdlr
Handler Reference Box
?
?
大小
其他說明
size
4
0x00000025 = 37
hdlr
4
version
1
flag
3
pre_defined
4
0
handler_type
4
soun
videVideo ?track
sounAudio ?track
reserved
4 * 3
0
handler_type
string
4+1
soun
’/0’結束
?
l????????stbl
Sample Table Box
?
?
l????????stts
Decoding Time to Sample Box
大小
其他說明
size
4
0x00000018 = 24
stts
4
version
1
flag
3
entry_count
4
1
sample_count
4
0x00000111 = 273
sample_delta
4
0x00000960 = 2400
說明:該amr音頻數據里面有273sample,每個sample的時間為2400,而音頻的時間因子為8000(見5.2.3.1 mdhdtimescale),所以每個sample的時長 = 2400 / 8000s = 0.3s
l????????stsd
Sample Description Box
大小
其他說明
size
4
0x00000045 = 69
stsd
4
version
1
flag
3
entry_count
4
1
AudioSampleEntry
l????????samr
amr音頻
size
4
0x35 = 53
samr
4
reserved
6
0
data_reference_index
2
0x0001
reserved
4 * 2
0
channelcount
2
0x0002 = 2
(1:單聲道 2:雙聲道)
samplesize
2
0x0010 = 16
pre_defined
2
0
reserved
2
0
samplerate
4
0x1F400000 = (14F0)<<16
0x1F40 = 8000
時間因子左移16位。
聲音采樣頻率(hz
size
4
0x11 = 17
damr
4
NXTR ...
9
l????????stsz
Sample Size Boxes
大小
其他說明
size
4
0x00000458 = 1112
stsz
4
version
1
flag
3
sample_size
4
0
sample_count
4
0x00000111 = 273
?
entry_size
4
0x000001E0 = 480
每個sample大小
4
0x000001E0 = 480
4
0x000001E0 = 480
...
說明:在(5.2.3.3.3.1 stts)中說明了有1001sample,這里的sample_count=1001,每個sample數據塊的大小為480,(480 / 32*20 = 15*20 = 0.3s
這里包含了每個sample的大小,都為480字節。
l????????stsc
Sample To Chunk Box
大小
其他說明
size
4
0x0000001C = 28
stsc
4
version
1
flag
3
entry_count
4
1
first_chunk
4
1
samples_per_chunk
4
0X0111 = 273
sample_description_index
4
1
l????????stco
Chunk Offset Box
大小
其他說明
size
4
0x00000014 = 20
stco
4
version
1
flag
3
entry_count
4
1
chunk_offset
4
0x65 = 101
trak(視頻)
Track Box
?
l????????tkhd
Track Header Box
定義了該track的屬性。
大小
其他說明
size
4
0x0000005C = 92
tkhd
4
version
1
0
flag
3
1
creation_time
4
modification_time
4
track_id
4
0x000000C9 = 201
reserved
4
0
duration
4
0x00013F54 = 81748 = 81.7s
視頻播放時間
reserved
8
layer
2
alternate_group
2
volume
2
0x0000
如果track是音頻則為0x0100,視頻則為0x0000
reserved
2
0
matrix
4 * 9
視頻轉換矩陣
width
4
0x01400000<<16 = 0x0140=320
height
4
0x00F00000<<16 = 0x00F0=240
l????????vmhd
Video Media Header Box
大小
其他說明
size
4
0x00000014 = 20
wmhd
4
version
1
flag
3
graphicsmode
2
0
opcolor
2 * 3
{0,0,0}
l?????????stts
Sync Sample Box
大小
其他說明
size
4
0x00000018 = 24
stts
4
version
1
flag
3
entry_count
4
1
sample_count
4
0x000004C9 = 1225
sample_delta
4
0x00001776 = 6006
說明:該H263視頻數據里面有1225sample,每個sample的時間為6006,而視頻的時間因子為90000(見5.3.3.1?mdhdtimescale),所以每個sample的時長 = 6006 / 90000s = 0.0667s
1225*6006 / 90000 = 1225*6006/90000 = 81.7s
l?????????stsd
Sample Description Box
大小
其他說明
size
4
0x00000075 = 117
stsd
4
stsd
version
1
0
flag
3
0
entry_count
4
1
VideoSampleEntry
l????????S263
263視頻
size
4
0x65 = 101
s263
4
reserved
6
data_reference_index
2
0x0001
pre_defined
2
0
reserved
2
0
pre_defined
4 * 3
width
2
0xb0 = 176
視頻寬度
height
2
0x90 = 144
視頻高度
horizresolution
4
0x00480000; // 72 dpi
vertresolution
4
0x00480000; // 72 dpi
reserved
4
frame_count
2
1
compressorname
32
string[32]
0
depth
2
0x0018
pre_defined
2
-1
size
4
15
d263
4
NXTR ...
7
l????????stsz
Sample Size Boxes
大小
其他說明
size
4
0x1338
stsz
4
version
1
flag
3
sample_size
4
0
sample_count
4
0x04C9 = 1225
?
entry_size
4
0x0000297 = 663
4
0x068C = 1676
4
0x028D = 653
...
說明:總共1225sample即有1225幀,sample_count后面緊跟的是每個視頻幀的數據大小,可以看出每個幀的大小都不一樣,這是因為視頻幀的類型不同,有些幀是I幀,有些是P幀,有些是B幀。
MPEG圖像編碼包含3個成分:I幀,P幀和B幀。MPEG編碼過程中,一些圖像壓縮成I幀,一些壓縮成P幀,另一些壓縮成B幀。I幀壓縮可以得到61的壓縮比而不產生任何可覺察的模糊現象。I幀壓縮的同時使用P幀壓縮,可以達到更高的壓縮比而無可覺察的模糊現象。B幀壓縮可以達到2001的壓縮比,其文件尺寸一般為I幀壓縮尺寸的15%,不到P幀壓縮尺寸的一半。I幀壓縮去掉圖像的空間冗余度,P幀和B幀去掉時間冗余度,下文將進一步解釋。
I壓縮采用基準幀模式,只提供幀內壓縮,即把幀圖像壓縮到I幀時,僅僅考慮了幀內的圖像。I幀壓縮不能除去幀間冗余度。幀內壓縮基于離散余弦變換(DCT),類似于JPEGH.261圖像中使用DCT的壓縮標準。
P采用預測編碼,利用相鄰幀的一般統計信息進行預測。也就是說,它考慮運動特性,提供幀間編碼。P幀預測當前幀與前面最近的I幀或P幀的差別。
B為雙向幀間編碼。它從前面和后面的I幀或P幀中提取數據。B幀基于當前幀與前一幀和后一幀圖像之間的差別進行壓縮。
MEPG數據流開始時對CCIR-601規定的SIF分辨率的未壓縮數字圖像進行抽樣。SIF分辨率,對于NTSC制,就是亮度信號為352240各像素,每個色度信號都為176120個象素。各信號都是每秒30幀。MPEG壓縮器決定了當前幀以I幀,P幀還是B幀。幀確定之后就采用DCT變換,對結果進行量化,舍入,行程編碼即變長編碼。編碼后的典型圖像幀序為:IBBPBBPBBPBBIBBPBBPBBPBBI
B幀和P幀要求計算機有更強的功能。有些壓縮器不能產生B幀或者連P幀也不能產生,則圖像的壓縮結果將有很明顯的間斷。
H263采用了與MPEG相似的技術。
l????????stco
Chunk Offset Box
?
?
大小
其他說明
size
4
0x00000014 = 20
stco
4
version
1
flag
3
entry_count
4
1
chunk_offset
4
0x0001FF8D
說明:chunk_offset定義的是視頻數據的起始位置。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454929.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454929.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454929.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql group concat_MySQL 的 GROUP_CONCAT 函數詳解

GROUP_CONCAT(expr) 函數會從 expr 中連接所有非 NULL 的字符串。如果沒有非 NULL 的字符串&#xff0c;那么它就會返回 NULL。語法如下&#xff1a;GROUP_CONCAT 語法規則它在遞歸查詢中用的比較多&#xff0c;但要使用好它并不容易。所以讓我們一起來看看吧&#xff1a;假設有…

ORACLE數據庫 常用命令和Sql常用語句

ORACLE 賬號相關 如何獲取表及權限 1.COPY表空間backup scottexp登錄管理員賬號system2.創建用戶 create user han identified(認證) by mima default tablespace users&#xff08;默認的表空間&#xff09; quota&#xff08;配額&#xff09;10M on users;創建賬號分配權限g…

光榮之路測試開發面試linux考題之四:性能命令

Hi,大家好我是tom,I am back.今天要給大家講講linux系統一些性能相關命令。 1.fdisk 磁盤管理 是一個強大的危險命令&#xff0c;所有涉及磁盤的操作都由該命令完成&#xff0c;包括&#xff1a;新增磁盤、增刪改磁盤分區等。 1.fdisk -l 查看磁盤分區情況 Disk /dev/sda: 27.8…

一起學并發編程 - 優雅關閉

Java中原來在Thread中提供了stop()方法來終止線程&#xff0c;但這個方法是不安全的&#xff0c;所以一般不建議使用。文本將介紹兩種可以優雅的終止線程的方式...<!-- more --> 第一種 在JAVA《Java多線程模式》中有一種叫Two-Phase Termination&#xff08;兩步終止&am…

mac安裝完mysql后關機特別慢_mysql-Mac終端下遇到的問題總結

為了方便啟動mysql服務&#xff0c;修改/etc/.bash_profile文件&#xff0c;如下alias mysql"/usr/local/mysql/bin/mysql"alias mysqladmin"/usr/local/mysql/bin/mysqladmin"或者alias mysqlstart"sudo /usr/local/mysql/support-files/mysql.serve…

sending data mysql slow Mysql查詢非常慢的可能原因

1.用explain看看mysql的執行情況,可以得知,task_id掃描了近20萬條數據,而且這個task_id不是索引 2.為這個task_id所在的表,將此字段添加索引后,查詢就變得很快了 轉載于:https://www.cnblogs.com/Skrillex/p/7365590.html

mybatis 添加語句返回對象_mybatis的insert語句插入數據時的返回值的實現

mybatis的insert語句插入數據時的返回值的實現,語句,返回值,那條,都是,站長站mybatis的insert語句插入數據時的返回值的實現易采站長站&#xff0c;站長之家為您整理了mybatis的insert語句插入數據時的返回值的實現的相關內容。mybatis的sql語句一般是配置在配置文件中&#xf…

打包上架

昨天寫的打包上架&#xff0c;分組到了文章&#xff0c;發現不便查看貼鏈接到這里&#xff1a; http://www.cnblogs.com/ITCoderW/articles/7597969.html 最近一個版本的審核的過程 當我們上傳到APP Store一個新的版本后 登錄ITunes Connect就可以看到相應的版本的審核的狀態 粗…

inet_pton函數和inet_ntop函數的用法及簡單實現

http://blog.csdn.net/eagle51/article/details/53157643?utm_sourceitdadao&utm_mediumreferral 這兩個函數是隨IPv6出現的新函數&#xff0c;對于IPv4地址和IPv6地址都適用。函數名中的p和n非別代表表達&#xff08;presentation&#xff09;和數值&#xff08;numeric&…

mysql 5.7 延遲同步_MySQL5.6升級5.7時出現主從延遲問題排查過程

最近在做zabbix的數據庫MySQL5.6升級5.7時&#xff0c;出現主從延遲問題&#xff0c;這個問題困擾了很久沒有解決&#xff0c;昨天終于解決了&#xff0c;整理了一下整個排查過程&#xff0c;分享給大家。環境說明&#xff1a;mysql主庫為5.6的版本&#xff0c;有四個從庫&…

架構設計--僅是軟件開發之第二大影響力?!

SDWest2006&#xff08;譯注1&#xff09;對我來說是個有趣的大會。我除了星期三之外&#xff08;當時我正飛往費城參加一個客戶會議 因此錯過了Jolt頒獎部分&#xff09;每天都在演講。我也參加了一些談話和會議&#xff1b;其中最引人關注的是Mike Cohn的計劃與估算的談話。…

WiFi密碼分享有妙招 不必口頭相傳

移動互聯網的迅速崛起&#xff0c;使得我們可以方便的使用手持移動設備進行上網。尤其是在家庭中&#xff0c;使用智能手機、平板電腦、筆記本電腦等移動設備進行上網和娛樂已經成為主流&#xff0c;臺式機上網正日漸式微。在家中時&#xff0c;我們通過無線路由器提供的WiFi網…

javaweb(二十一)——JavaWeb的兩種開發模式

一、JSPJavaBean開發模式 1.1、jspjavabean開發模式架構 jspjavabean開發模式的架構圖如下圖(圖1-1)所示 圖1-1 在jspjavabean架構中&#xff0c;JSP負責控制邏輯、表現邏輯、業務對象&#xff08;javabean&#xff09;的調用。 JSPJavaBean模式適合開發業務邏輯不太復雜的web應…

Redis基于客戶端分片的集群案例(待實踐)

說明&#xff1a; 下面的示例基本都是基于Linux去實現&#xff0c;目的是為了環境的統一&#xff0c;以便于把性能調整到最優。且基于Java。建議生產環境不要使用Windows/Mac OS這些。 在Java領域&#xff0c;基于客戶端進行分片最常用的庫應該是Jedis&#xff0c;下面基本是基…

mysql select 效能_MYSQL的聯合查詢最好是少用,效能差異巨大

同樣的功能,不同的寫法,時間和內存占用差了幾千倍,不廢話,直接上代碼第一種寫法:代碼如下:$RsDB::get($_ENV[DB],3,"SELECT * FROM _xiazhu WHERE uid IN(SELECT id FROM _user WHERE id<5000)");var_dump($Rs);內存和時間:內存使用:96514.53Kb 運行時間:1272.73m…

高效程序員應該養成的七個習慣

對于軟件工程師來說&#xff0c;工作也許意味著許多東西 -- 穩定的收入、做自己感興趣的項目、找一份更好工作的跳板&#xff0c;或者你只是喜歡與其他程序員共事。但說到“效率”&#xff0c;強調的是在一定時間內按質完成項目的能力。Phil Chu根據自己的經驗提出了高效程序員…

概率論與數理統計思維導圖知識框架_考研概率論與數理統計 綜合題型秘籍思維導圖① 隨機變量1~3章 [21考研上岸之旅]...

Hello World&#xff0c;我的朋友&#xff0c;這里是一顆小白蛋&#xff0c;大千世界&#xff0c;很高興以這樣的方式與你相遇前言在復習過程中發現概率論知識點很少且集中 所以沒有分開章節去整理王安式概率論輔導講義張宇概率論9講方浩強化班1800題 綜合題型秘籍在學習過程中…

關于軟件的架構設計

好的開始相當于成功一半 開始之初的架構設計決定著軟件產品的生死存亡。“好的開始相當于成功一半”。 開始的架構設計也是最難的&#xff0c;需要調研同類產品的情況以及技術特征&#xff0c;了解當前世界上對這種產品所能提供的理論支持和技術平臺支持。再結合自己項目的特…

[Oracle]快速構造大量數據的方法

[Oracle]快速構造大量數據的方法&#xff1a;create table tab001(id integer primary key, val varchar2(100));insert into tab001 select ij,rpad(to_char(ij),100,A) from ( with DATA2(j) as ( select 0 j from DUAL …

mysql用supervisor管理_Supervisor使用詳解

一、supervisor簡介Supervisor是用Python開發的一套通用的進程管理程序&#xff0c;能將一個普通的命令行進程變為后臺daemon&#xff0c;并監控進程狀態&#xff0c;異常退出時能自動重啟。它是通過fork/exec的方式把這些被管理的進程當作supervisor的子進程來啟動&#xff0c…