青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

elva

精解PSI-SI(一)

Packet的概念

 (1)TS流是基于Packet的位流格式,每個(gè)包是188字節(jié)或者204字節(jié)(一般是188字節(jié),204字節(jié)的格式僅僅是在188字節(jié)的Packet后部加上16字節(jié)的CRC數(shù)據(jù),其他格式是一樣的),整個(gè)TS流組成如下所示:    

  Packet     Packet    ......    Packet n

在實(shí)際使用中,因?yàn)門S流已經(jīng)內(nèi)部具有很強(qiáng)的錯(cuò)誤處理能力,所以一般使用較多的是188字節(jié)一個(gè)包的格式,204字節(jié)一個(gè)包的格式據(jù)說(shuō)一般在高清節(jié)目中使用較多.

 所有的Packet格式都是統(tǒng)一的,包括一個(gè)Packet header和Packet datas.其中Packet header包含了同步字節(jié)(該字節(jié)固定是0x47,表示這個(gè)包的數(shù)據(jù)開始是正確的),該P(yáng)acket的唯一號(hào)碼(即PID)和其他一些信息.格式如下(用C格式表示)

typedef struct

{

 unsigned sync_byte:8;

 unsigned transport_error_indicator:1;

 unsigned payload_unit_start_indicator:1;

 unsigned transport_priority:1;

 unsigned PID:13;

 unsigned transport_scrambling_control:2;

 unsigned adaptation_field_control:2;

 unsigned continuity_counter:4;

}PACKET_HEADER;

以上結(jié)構(gòu)剛好占用32 bits,即4個(gè)字節(jié),因此一個(gè)TS流的Packet頭部的4字節(jié)是header信息,分析該header信息就可以知道當(dāng)前Packet的屬性.剩下的184字節(jié)有可能是Video數(shù)據(jù),也有可能是Audio數(shù)據(jù),也有可能是DVB SI信息,怎 么區(qū)分呢?其實(shí)很簡(jiǎn)單,就是利用header中的PID信息.上一章說(shuō)了PAT是節(jié)目關(guān)聯(lián)表,它的PID是0x0000.這個(gè)PID就是對(duì)應(yīng)這里 header的PID.換句話就是說(shuō),如果我們發(fā)現(xiàn)一個(gè)Packet的PID等于0x0000,那么說(shuō)明這個(gè)Packet是DVB的PAT表格而不是 Video數(shù)據(jù)或者Audio數(shù)據(jù).

實(shí) 際上,在信號(hào)編碼成TS碼流的時(shí)候,不同節(jié)目的Video,Audio等數(shù)據(jù)都分配了不同的PID.例如,一個(gè)節(jié)目有兩路Video,三路Audio,那 么分配PID的時(shí)候可能是Video 1==0x100,Video 2==0x101,Audio 1==0x102,Audio 2==0x103, Audio 3==0x104,這樣傳輸?shù)腡S碼流中的PID就可能有以上的PID.因此,如果我們需要在程序中過(guò)濾出第一路Video和第二路 Audio就可以這樣處理了(偽代碼描述):

 void Process_Packet(unsigned char*buff)

 {

  int PID=GETPID(buff);

  if(PID==0x100) 

  {

   SaveToVideoBuffer(buff+4);

  }

  else if(PID==0x103)

  {

   SaveToAudioBuffer(buff+4);

  }

  else

  {

   printf("unknown PID!"n");

    

 }

現(xiàn) 在的問(wèn)題是,編碼的時(shí)候分配好的PID,在解碼的時(shí)候是怎么知道什么PID對(duì)應(yīng)什么數(shù)據(jù)呢?這就是DVB SI表格的分析與處理了,請(qǐng)參考第三章.這里先 看一個(gè)實(shí)際的TS碼流的例子.這里的數(shù)據(jù)是用UltraEdit用16進(jìn)制格式打開TS碼流文件得到的.文件是Taiwan-551.ts.

這 里僅僅截取了3個(gè)Packet的信息,請(qǐng)注意圖中用紅色標(biāo)注的部分,這就是TS流Packet的4個(gè)字節(jié)的頭信息.這個(gè)TS流是采用每個(gè)包共188字節(jié)的 格式,因?yàn)閮蓚€(gè)頭信息的間隔是188個(gè)字節(jié)(第一個(gè)0x47到第二個(gè)0x47的間隔).以后的所有的Packet都將是188字節(jié)的格式,這是 DVB TS標(biāo)準(zhǔn)規(guī)定的固定大小.那么這三個(gè)包分別包含的是什么數(shù)據(jù),下面我們可以自己分析一下.

 先 看第一個(gè)包,頭信息數(shù)據(jù)是"0x47 0x07 0xe5 0x12",剛才已經(jīng)知道了,header信息都是按位操作的(這就是為什么TS碼流也可以叫 做位流的原因),特別要注意的是定義和傳輸?shù)臅r(shí)候都是MSB first,也就是說(shuō),先出現(xiàn)的位是數(shù)據(jù)的最高位.先轉(zhuǎn)化成2進(jìn)制格式:

 01000111 00000111 11100101 00010010

請(qǐng)對(duì)照上面的PACKET_HEADER結(jié)構(gòu):

typedef struct

{

 unsigned sync_byte:8;

 unsigned transport_error_indicator:1;

 unsigned payload_unit_start_indicator:1;

 unsigned transport_priority:1;

 unsigned PID:13;

 unsigned transport_scrambling_control:2;

 unsigned adaptation_field_control:2;

 unsigned continuity_counter:4;

}PACKET_HEADER;

那么對(duì)照一下,我們可以發(fā)現(xiàn):

 sync_byte=01000111,就是0x47,這是DVB TS規(guī)定的同步字節(jié),固定是0x47.

 transport_error_indicator=0,表示當(dāng)前包沒(méi)有發(fā)生傳輸錯(cuò)誤.

 payload_unit_start_indicator=0,含義請(qǐng)參考ISO13818-1標(biāo)準(zhǔn)文檔

 transport_priority=0,表示當(dāng)前包是低優(yōu)先級(jí).

 PID=00111 11100101即0x07e5,這代表是什么呢,暫時(shí)還不知道(實(shí)際上是Video PID,參考下圖)

 transport_scrambling_control=00,表示節(jié)目沒(méi)有加密

 adaptation_field_control=01即0x01,具體含義請(qǐng)參考ISO13818-1

 continuity_counte=0010即0x02,表示當(dāng)前傳送的相同類型的包是第3個(gè)

依此類推,再看一下第二個(gè)包"0x47 0x07 0xe5 0x13",2進(jìn)制是01000111 00000111 11100101 00010011

 sync_byte=01000111,就是0x47,這是DVB TS規(guī)定的同步字節(jié),固定是0x47.

 transport_error_indicator=0,表示當(dāng)前包沒(méi)有發(fā)生傳輸錯(cuò)誤.

 payload_unit_start_indicator=0,含義請(qǐng)參考ISO13818-1標(biāo)準(zhǔn)文檔

 transport_priority=0,表示當(dāng)前包是低優(yōu)先級(jí).

 PID=00111 11100101即0x07e5,這代表是什么呢,暫時(shí)還不知道(實(shí)際上是Video PID,參考下圖)

 transport_scrambling_control=00,表示節(jié)目沒(méi)有加密

 adaptation_field_control=01即0x01,具體含義請(qǐng)參考ISO13818-1

 continuity_counte=0011即0x03,表示當(dāng)前傳送的相同類型的包是第4個(gè)(注意到了吧,以上兩個(gè)包的PID都是0x07e5,所以這里的continuity_counte就遞增一次)

第三個(gè)包是"0x47 0x07 0xf1 0x18",2進(jìn)制是01000111 00000111 11110001 00011000.

 sync_byte=01000111,就是0x47,這是DVB TS規(guī)定的同步字節(jié),固定是0x47.

 transport_error_indicator=0,表示當(dāng)前包沒(méi)有發(fā)生傳輸錯(cuò)誤.

 payload_unit_start_indicator=0,含義請(qǐng)參考ISO13818-1標(biāo)準(zhǔn)文檔

 transport_priority=0,表示當(dāng)前包是低優(yōu)先級(jí).

 PID=00111 11100101即0x07f1,這代表是什么呢,暫時(shí)還不知道(實(shí)際上是Audio PID,參考下圖)

 transport_scrambling_control=00,表示節(jié)目沒(méi)有加密

 adaptation_field_control=01即0x01,具體含義請(qǐng)參考ISO13818-1

 continuity_counte=1000即0x08,表示當(dāng)前傳送的相同類型的包是第9個(gè)

請(qǐng)看解碼程序<<Seekfor MPEG-2 decoder>>讀取該文件的結(jié)果:

 

上圖我們可以發(fā)現(xiàn),Taiwan-551.ts有一個(gè)節(jié)目叫"DIMO",它的Video PID是0x07e5,Audio PID是0x07e6

還有一個(gè)節(jié)目叫"Service 1",沒(méi)有Video PID,它的Audio PID是0x07f1(說(shuō)明是一個(gè)廣播節(jié)目而非電視節(jié)目)

這個(gè)數(shù)據(jù)剛好和我們剛才的分析是吻合的.

但 是我想大家還有疑問(wèn),為什么0x07e5代表Video PID,0x07e6代表其中一個(gè)Audio PID呢?這就是剛才提到的,這是TS流在編碼的 時(shí)候就分配好了的.但是,在解碼的時(shí)候是怎么知道0x07e5就代表的是Video而不是Audio呢?

posted on 2008-11-12 17:51 葉子 閱讀(1683) 評(píng)論(1)  編輯 收藏 引用 所屬分類: MPEG

Feedback

# re: 精解PSI-SI(一) 2008-11-14 11:41 luchy

very good  回復(fù)  更多評(píng)論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            性欧美精品高清| 久久青草久久| 亚洲精品在线看| 久久av二区| 欧美一区二区三区另类 | 午夜一区在线| 亚洲视频在线一区| 欧美福利视频一区| 欧美+亚洲+精品+三区| 国产一区二区三区成人欧美日韩在线观看| 亚洲免费不卡| 一区二区高清视频| 欧美精品在线播放| 亚洲国产视频直播| 亚洲性夜色噜噜噜7777| 99精品久久久| 欧美精品videossex性护士| 欧美激情久久久| 亚洲精品乱码久久久久久黑人| 久久久精品999| 美日韩精品视频| 黄色一区三区| 久久视频一区二区| 欧美激情视频在线播放| 亚洲人成人一区二区三区| 美女主播精品视频一二三四| 欧美成ee人免费视频| 亚洲国产欧美日韩另类综合| 蜜臀av一级做a爰片久久| 欧美国产日韩一区二区在线观看| 亚洲成色777777女色窝| 免费一级欧美片在线观看| 欧美成人有码| 夜夜嗨一区二区| 欧美亚男人的天堂| 午夜精品久久久久影视| 久久久久久香蕉网| 91久久精品www人人做人人爽| 欧美成人免费大片| 夜夜嗨网站十八久久| 午夜在线观看欧美| 韩国三级在线一区| 欧美国产日本在线| 一区二区三区精品国产| 欧美在线精品免播放器视频| 精品动漫一区| 欧美久久精品午夜青青大伊人| 一区二区三区高清不卡| 久久精品一区中文字幕| 亚洲人成网站精品片在线观看 | 噜噜爱69成人精品| 亚洲日本电影在线| 久久狠狠婷婷| 亚洲免费观看在线观看| 国产精品无码专区在线观看| 久久久久久久久一区二区| 亚洲精品男同| 久久久福利视频| 亚洲每日在线| 国产日韩欧美视频在线| 欧美激情aaaa| 欧美永久精品| av不卡在线看| 欧美插天视频在线播放| 亚洲综合成人在线| 亚洲国产中文字幕在线观看| 国产精品乱码一区二区三区| 久久资源在线| 性18欧美另类| 亚洲美女在线看| 免费日韩av电影| 午夜在线精品| 在线视频精品一区| 亚洲国产精品999| 国产热re99久久6国产精品| 欧美激情一区二区三区在线视频观看 | 国产香蕉97碰碰久久人人| 欧美a级片网站| 欧美制服丝袜| 亚洲欧美综合另类中字| 日韩午夜av| 亚洲二区精品| 免费精品视频| 久久一区二区视频| 欧美一区二区三区视频免费| 一区二区三区回区在观看免费视频 | 欧美日韩国产一级| 久久五月天婷婷| 欧美在线日韩| 午夜在线精品| 亚洲欧美影音先锋| 亚洲午夜电影网| 一本不卡影院| 亚洲美女黄网| 亚洲精品一区在线观看| 亚洲福利精品| 亚洲国产高清在线| 欧美粗暴jizz性欧美20| 米奇777超碰欧美日韩亚洲| 久久精品国产一区二区电影| 欧美影院在线| 欧美中文字幕在线| 欧美一区二区高清在线观看| 亚洲男女自偷自拍图片另类| 亚洲亚洲精品三区日韩精品在线视频 | 亚洲精品久久久蜜桃| 亚洲国产成人在线视频| 亚洲国产高清一区二区三区| 伊人久久婷婷色综合98网| 狠狠色噜噜狠狠狠狠色吗综合| 国产一区在线观看视频| 黄色精品一二区| 亚洲福利视频一区| 亚洲人成在线观看一区二区| 亚洲免费电影在线| 亚洲午夜久久久久久尤物| 亚洲免费一在线| 久久福利电影| 久久综合给合久久狠狠狠97色69| 另类尿喷潮videofree| 欧美激情国产高清| 亚洲三级观看| 亚洲一区二区三区免费观看| 欧美一级播放| 米奇777超碰欧美日韩亚洲| 欧美激情精品久久久久久变态| 欧美日韩亚洲一区二| 国产精品一级久久久| 精品成人a区在线观看| 亚洲区一区二| 亚洲欧美日韩成人| 久久久久久香蕉网| 亚洲激情影视| 午夜精品一区二区三区在线视| 久久九九精品| 欧美日韩少妇| 国产有码一区二区| 亚洲精品综合精品自拍| 午夜久久久久久久久久一区二区| 久久资源在线| 一二三区精品| 狼人天天伊人久久| 国产精品超碰97尤物18| 永久域名在线精品| 亚洲一区免费网站| 欧美不卡激情三级在线观看| 在线综合+亚洲+欧美中文字幕| 久久精品国产99| 欧美午夜精彩| 91久久精品国产91性色tv| 性视频1819p久久| 亚洲风情亚aⅴ在线发布| 亚洲自拍偷拍视频| 欧美激情在线观看| 一区二区亚洲精品国产| 亚洲男人第一av网站| 欧美高清视频一区二区三区在线观看| 亚洲先锋成人| 欧美高清视频一区二区三区在线观看| 国产精品专区第二| 夜夜躁日日躁狠狠久久88av| 鲁大师成人一区二区三区 | 99这里只有久久精品视频| 久久福利电影| 国产精品毛片大码女人| 亚洲毛片视频| 欧美黄免费看| 久久精品99| 国产视频在线一区二区| 亚洲愉拍自拍另类高清精品| 亚洲国产美女| 裸体女人亚洲精品一区| 国内精品久久国产| 久久精品男女| 亚洲欧美怡红院| 国产精品久久久亚洲一区| av不卡免费看| 亚洲欧洲综合| 欧美乱大交xxxxx| 亚洲欧洲日本在线| 欧美www视频| 老司机一区二区| 亚洲国产精品ⅴa在线观看| 久久一区二区三区四区五区| 欧美一级淫片播放口| 国产日产精品一区二区三区四区的观看方式 | 在线观看久久av| 久久在线视频在线| 久久久欧美精品sm网站| 黄色精品一二区| 模特精品在线| 美女性感视频久久久| 亚洲国产日韩综合一区| 欧美成人嫩草网站| 免费观看亚洲视频大全| 亚洲人成毛片在线播放| 亚洲免费黄色| 国产精品每日更新| 久久精品一区中文字幕| 欧美一区二区大片|