国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
MPEG2 TS基本概念和數(shù)據(jù)結(jié)構(gòu)(轉(zhuǎn))
MPEG2 TS基本概念和數(shù)據(jù)結(jié)構(gòu)(轉(zhuǎn)) 2009-03-17 09:14
分類:視頻編解碼
字號:大 中 小
(1)ES- Elementary Streams (原始流),對視頻、音頻信號及其他數(shù)據(jù)進行編碼壓縮后的數(shù)據(jù)流稱為原始流。原始流包括訪問單元,比如視頻原始流的訪問單元就是一副圖像的編碼數(shù)據(jù)。
(2) PES- Packetized Elementary Streams (分組的原始流),原始流形成的分組稱為PES分組,是用來傳遞原始流的一種數(shù)據(jù)結(jié)構(gòu)
(3)節(jié)目是節(jié)目元素的集合。節(jié)目元素可能是原始流,這些原始流有共同的時間基點,用來做同步顯示。
(4)傳輸流和節(jié)目流TS-Transport Stream 翻譯為“傳輸流”PS-Program Stream  翻譯為“節(jié)目流”PS用來傳輸和保存一道節(jié)目的編碼數(shù)據(jù)或其他數(shù)據(jù)。PS的組成單位是PES分組。TS用來傳輸和保存多道節(jié)目的編碼數(shù)據(jù)或其他數(shù)據(jù),TS的組成單位是節(jié)目。PS適用于不容易發(fā)生錯誤的環(huán)境,以及涉及到軟件處理的應(yīng)用,典型應(yīng)用如DVD光盤的文件存儲TS適用于容易發(fā)生錯誤的環(huán)境,典型應(yīng)用就是數(shù)字電視信號的傳輸。TS和PS是可以互相轉(zhuǎn)換的,比如從TS中抽取一道節(jié)目的內(nèi)容并產(chǎn)生有效的PS是可能。
(5)傳輸流分組和PES分組原始流分成很多PES分組,保持串行順序,一個PES分組只包含一個原始流的編碼數(shù)據(jù)。PES分組長度很大,最大可為64K字節(jié)。PES分組分為“分組首部(header)”和“有效負載(payload)”。“有效負載”指跟隨在首部字節(jié)之后的字節(jié)。首部的前4個字節(jié)構(gòu)成分組的起始碼,標(biāo)識了該分組所屬原始流的類型和ID號。TS分組也就是傳輸流數(shù)據(jù)形成的數(shù)據(jù)包。每個TS分組長度為188字節(jié),包括“分組首部”和“有效負載,前4個字節(jié)是分組首部,包含了這個分組的一些信息。有些情況下需要更多的信息時,需在后面添加“調(diào)整字段(adaption field)”。兩者之間的關(guān)系:PES分組是插入到TS分組中的,每個PES分組首部的第一字節(jié)就是TS分組有效負載的第一字節(jié)。一個PID值的TS分組只帶有來自一個原始流的數(shù)據(jù)。
(6)PSI 全稱Program Specific Information,意為節(jié)目專用信息。傳輸流中是多路節(jié)目復(fù)用的,那么,怎么知道這些節(jié)目在傳輸流中的位置,區(qū)分屬于不同節(jié)目呢?所以就還需要一些附加信息,這就是PSI。PSI也是插入到TS分組中的,它們的PID是特定值。MPEG-2中規(guī)定了4個PSI,包括PAT(節(jié)目關(guān)聯(lián)表),CAT(條件訪問表),PMT(節(jié)目映射表),NIT(網(wǎng)絡(luò)信息表),這些PSI包含了進行多路解調(diào)和顯示節(jié)目的必要的和足夠的信息。應(yīng)用中可能包括更多的信息,比如DVB-T中定義了SDT(服務(wù)描述表),EIT(環(huán)境信息表),BAT(節(jié)目組相關(guān)表),TDT(時間日期表)等,統(tǒng)稱為DVB-SI(服務(wù)信息)。 PSI的PID是特定的,含PSI的數(shù)據(jù)包必須周期性的出現(xiàn)在傳輸流中。
PMT (Program Map Table )節(jié)目映射表PMT所在分組的PID由PAT指定,所以要先解出PAT,再解PMT。PMT中包含了屬于同一節(jié)目的視頻、音頻和數(shù)據(jù)原始流的PID。找到了PMT,解多路復(fù)用器就可找到一道節(jié)目對應(yīng)的每個原始流的PID,再根據(jù)原始流PID,去獲取原始流。
PAT (Program Association Table )節(jié)目關(guān)聯(lián)表PAT所在分組的PID=0 PAT中列出了傳輸流中存在的節(jié)目流PAT指定了傳輸流中每個節(jié)目對應(yīng)PMT所在分組的PIDPAT的第一條數(shù)據(jù)指定了NIT所在分組的PID ,其他數(shù)據(jù)指定了PMT所在分組的PID。
CAT (Conditional Access Table )條件訪問表CAT所在分組的PID=1CAT中列出了條件控制信息(ECM)和條件管理信息(EMM)所在分組的PID。CAT用于節(jié)目的加密和解密 NIT( Network Information Table)網(wǎng)絡(luò)信息表NIT所在分組的PID由PAT指定NIT提供一組傳輸流的相關(guān)信息,以及于網(wǎng)絡(luò)自身特性相關(guān)的信息,比如網(wǎng)絡(luò)名稱,傳輸參數(shù)(如頻率,調(diào)制方式等)。NIT一般是解碼器內(nèi)部使用的數(shù)據(jù),當(dāng)然也可以做為EPG的一個顯示數(shù)據(jù)提供給用戶做為參考。幾種PSI之間的關(guān)系,如下圖所示:首先PAT中指定了傳輸流中所存在的節(jié)目,及每個節(jié)目對應(yīng)的PMT的PID號。 比如Program 1對應(yīng)的PMT 的PID=22,然后找到PID=22的TS分組,解出PMT,得到這個節(jié)目中包含的原始流的PID,再根據(jù)原始流的PID去找相應(yīng)的TS分組,獲取原始流的數(shù)據(jù),然后就可以送入解碼器解碼了。
數(shù)據(jù)結(jié)構(gòu)(1)TS分組前面提到,TS分組由188個字節(jié)構(gòu)成,其結(jié)構(gòu)如下:
transport_packet(){
sync_byte                                                                    // 8
transport_error_indicator                                          //1
payload_unit_start_indicator                                    //1
transport_priority                                                      //1  PID                                                                            //13
transport_scrambling_control                                  // 2
adaptation_field_control                                            //2
continuity_counter                                                      //4
if(adaptation_field_control=='10'  || adaptation_field_control=='11'){
adaptation_field()
}
if(adaptation_field_control=='01' || adaptation_field_control=='11') {
for (i=0;i<N;i++){
data_byte                                                                   //8
}
}
}
前面32bit的數(shù)據(jù)即TS分組首部,它指出了這個分組的屬性。
sync_byte  同步字節(jié),固定為0x47 ,表示后面的是一個TS分組,當(dāng)然,后面包中的數(shù)據(jù)是不會出現(xiàn)0x47的
transport_error_indicator 傳輸錯誤標(biāo)志位,一般傳輸錯誤的話就不會處理這個包了
payload_unit_start_indicator 這個位功能有點復(fù)雜,字面意思是有效負載的開始標(biāo)志,根據(jù)后面有效負載的內(nèi)容不同功能也不同,后面用到的時候再說。
transport_priority  傳輸優(yōu)先級位,1表示高優(yōu)先級,傳輸機制可能用到,解碼好像用不著。
PID  這個比較重要,指出了這個包的有效負載數(shù)據(jù)的類型,告訴我們這個包傳輸?shù)氖鞘裁磧?nèi)容。前面已經(jīng)敘述過。
transport_scrambling_control 加密標(biāo)志位,表示TS分組有效負載的加密模式。TS分組首部(也就是前面這32bit)是不應(yīng)被加密的,00表示未加密。
adaption_field_control  翻譯為“調(diào)整字段控制”,表示TS分組首部后面是否跟隨有調(diào)整字段和有效負載。01僅含有效負載,10僅含調(diào)整字段,11含有調(diào)整字段和有效負載。為00的話解碼器不進行處理。空分組沒有調(diào)整字段
continuity_counter   一個4bit的計數(shù)器,范圍0-15,具有相同的PID的TS分組傳輸時每次加1,到15后清0。不過,有些情況下是不計數(shù)的。如下:(1)TS分組無有效負載(2)復(fù)制的TS分組和原分組這個值一樣(3)后面講到的一個標(biāo)志discontinuity_indicator為1時
adaptation_field() 調(diào)整字段的處理
data_byte 有效負載的剩余部分,可能為PES分組,PSI,或一些自定義的數(shù)據(jù)。
(2)  PAT數(shù)據(jù)結(jié)構(gòu)如下:
program_association_section() {
table_id                                // 8
section_syntax_indicator                // 1
'0'                                     // 1
reserved                                // 2
section_length                          // 12
transport_stream_id                     // 16
reserved                                // 2
version_number                          // 5
current_next_indicator                  // 1
section_number                          // 8
last_section_number                     // 8
for (i=0; i<N;i++) {
program_number                         // 16
reserved                               // 3
if(program_number == '0') {
network_PID                           // 13
}
else {
program_map_PID                       // 13
}
}
CRC_32                                  //  32
}
table_id  固定為0x00 ,標(biāo)志是該表是PAT
section_syntax_indicator 段語法標(biāo)志位,固定為1
section_length         表示這個字節(jié)后面有用的字節(jié)數(shù),包括CRC32。假如后面的字節(jié)加上前面的字節(jié)數(shù)少于188,后面會用0XFF填充。假如這個數(shù)值比較大,則PAT會分成幾部分來傳輸。
transport_stream_id    該傳輸流的ID,區(qū)別于一個網(wǎng)絡(luò)中其它多路復(fù)用的流。
version_number范圍0-31,表示PAT的版本號,標(biāo)注當(dāng)前節(jié)目的版本.這是個非常有用的參數(shù),當(dāng)檢測到這個字段改變時,說明TS流中的節(jié)目已經(jīng)變化了,程序必須重新搜索節(jié)目.
current_next_indicator 表示發(fā)送的PAT是當(dāng)前有效還是下一個PAT有效。
section_number分段的號碼。PAT可能分為多段傳輸,第一段為00,以后每個分段加1,最多可能有256個分段
last_section_number 最后一個分段的號碼
program_number 節(jié)目號
network_PID 網(wǎng)絡(luò)信息表(NIT)的PID,網(wǎng)絡(luò)信息表提供了該物理網(wǎng)絡(luò)的一些信息,和電視臺相關(guān)的。節(jié)目號為0時對應(yīng)的PID為network_PID
program_map_PID 節(jié)目映射表的PID,節(jié)目號大于0時對應(yīng)的PID,每個節(jié)目對應(yīng)一個
CRC_32   CRC32校驗碼
上面program_number,network_PID,program_map_PID 是循環(huán)出現(xiàn)的。program_number等于0時對應(yīng)network_PID,program_number等于其它值時對應(yīng)program_map_PID。
(3)PMT   PMT數(shù)據(jù)結(jié)構(gòu)如下:
TS_program_map_section() {
table_id                               // 8
section_syntax_indicator              //  1
'0'                                   //  1
reserved                              //  2
section_length                        //  12
program_number                        //  16
reserved                              //  2
version_number                        //  5
current_next_indicator                //  1
section_number                        //  8
last_section_number                   //  8
reserved                              //  3
PCR_PID                               //  13
reserved 4
program_info_length                   //  12
for (i=0; i<N; i++) {
descriptor()
}
for (i=0;i<N1;i++) {
stream_type                           //  8
reserved                              //  3
elementary_PID                        //  13
reserved                              //  4
ES_info_length                        //  12
for (i=0; i<N2; i++) {
descriptor()
}
}
CRC_32                                 //  32
}
table_id  固定為0x02 ,標(biāo)志是該表是PMT。
section_syntax_indicator section_length      version_number       current_next_indicator 以上四個字段意思和PAT相同,可參考上面解釋
section_number   last_section_number 以上兩個字段意思和PAT相同,不過值都固定為0x00,我覺得這樣的原因可能是因為PMT不需要有先后順序,因為先定義哪個節(jié)目都是無所謂。
program_number 節(jié)目號,表示該PMT對應(yīng)的節(jié)目
PCR_PID PCR(節(jié)目時鐘參考)所在TS分組的PID,根據(jù)PID可以去搜索相應(yīng)的TS分組,解出PCR信息。
program_info_length 該節(jié)目的信息長度,在此字段之后可能會有一些字節(jié)描述該節(jié)目的信息
stream_type 指示了PID為elementary_PID的PES分組中原始流的類型,比如視頻流,音頻流等,見后面的表
elementary_PID 該節(jié)目中包括的視頻流,音頻流等對應(yīng)的TS分組的PID
ES_info_length 該節(jié)目相關(guān)原始流的描述符的信息長度。stream_type對應(yīng)的類型:
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Transport Stream碼流解
TS數(shù)據(jù)結(jié)構(gòu)分析
一、TS流概述
常見視頻封裝格式(2)
TS流分析
Program Specific Information
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服