轉自:http://blog.sina.com.cn/s/blog_6b94d5680101r5l6.html
TS各個表 與 SECTION 的解析 CAS原理
TS流,通過一個個的TS包來傳送;TS包可以是傳送PSI SI等各表的數據包,也可以是傳送節目音視頻數據(攜帶的PES包:音視頻基本流包)的包;TS攜帶 PSISI等表的數據時,各個表以各表對應的Section語法格式做爲傳輸單元存放到TS包中 以便傳輸;
TS包,有一個TS包的PID,系統就是根據這個PID來找對應的TS包;對於包含音視頻數據(PES包)的TS包,系統通過TS的PID找到對應TS數據包,提取其中的數據組合成節目的音視頻;對於攜帶PSISI等數據的TS包,系統通過TS的PID找到對應TS數據包,提取各個PSI SI數據表格,用來指導系統;
因此其中部分PID用來固定傳輸某些數據內容;如下
有了TS的PID後, 如果TS包攜帶的是PSISI等表格的Section數據時,有時還不能確定該PID的TS包中攜帶的數據是什麼,SDT BAT ST等表傳送時,都用的是PID爲0X0011的TS數據包,對於這種攜帶PSI SISection單元的TS包,對應的數據(表的Section語法中)還有一個TABLE_ID字段,用來可以確定是具體的什麼表,如下圖
每不同的表中,我們看錶的SECTION語法,都會看到descriptor()字樣,descriptor()表示的也是一個語法結構,他具體對應的語法結構,由他內部的descriptortag字段決定,各個表的具體的定義,可以參見13818對應的定義,其中這裏面還可以有用戶的自定義描述符,可見下表:
the descriptors declared or defined within the present document,giving the descriptors-tag values andthe intendedplacement within the SI tables. This does not imply that their usein other tables is restricted. PSI SI表中包含什麼descriptor,就用對應的語法去解!當然用戶自定義的由用戶自定義去解!!!
•PSI(ProgramSpecific Information)
–PAT (Program AssociationTable)節目關聯表
–PMT(Program MapTable)節目映射表
–CAT(Conditional AccessTable)條件接收表
•SI(ServiceInformation)
–NIT(Network InformationTable)網絡信息表
–SDT(Service Discription
Table)業務描述信息表
–BAT(Bouquet AssociationTable)業務羣信息表
–EIT(Event InformationTable)節目事件信息表
–TDT(Time and Data Table)日期時間表
•事件 event
– 一組給定了起始時間和結束時間、屬於同一業務的基本廣播數據流。例如:一場足球比賽的半場、新聞快報或娛樂表演的第一部分
•節目 programme
–由廣播者提供的一個或多個連續的事件。例如:新聞廣播,娛樂廣播。
•網絡 network
一個傳輸系統,可以傳輸一組MPEG-2傳輸流(TS)。例如:某個有線電視系統中的所有數字頻道•業務 service
–在廣播者的控制下,可以按照時間表分步廣播的一系列節目,我們也稱之個頻道,口語中也稱之爲節目
節目關聯表PAT
•PAT定義了一個TS流中所有的節目,PAT的PID是0x0000,他是PSI信息的根節點。要查找節目播放信息必須從PAT開始。
•PAT中包含了TS中所有節目的完整列表,每個表項包括ServiceID和PMT(用於播放)的PID。
•PAT中ServiceID 爲0的表項表示NIT。
節目映射表PMT
• PMT提供了一個節目的ServiceID和用於播放的所有資源信息,例如音視頻PID,PCR,字幕PID等。
• 簡單的說,PMT完整的描述了一路節目是由哪些PES組成,給播放提供相應的資源。
• PAT與PMT
關係
條件訪問表CAT
•CAT提供了在一個或多個CA系統及其授權管理信息,用於節目的解擾工作。
•如果在一個TS中任何原始流進行了加密處理,那麼在TS中一定要插入CAT。
•在CAT中,最重要的字段就是CA_descriptor()段。下面將簡單講述一下該描述段
•CA_descriptor用來表示含有ECM或者是EMM信息的TS的PID,即CA_PID。
–當CA_descriptor出現在PMT中時,CA_PID指向含有與訪問控制信息(ECM)相關的節目包。
–當CA_descriptor出現在CAT中時,CA_PID指向含有與授權管理信息(EMM)相關的節目包。
•CA_descriptor中幾個重要的字段如下:
–CA_system_ID:該字段表示適用於相關ECM和/或EMM流的CA系統類型。其值是用戶定義的。
–CA_PID:該字段表示傳送流包的PID,此包中含有由相應的CA_system_ID指明的CA系統的ECM或EMM信息,由CA_PID指明的包的內容(ECM或EMM)所在的上下文決定,既由TS中的PMT、CAT或節目流中的stream_id字段決定。
NIT
•NIT描述了一個DVB傳輸通道的所有物理參數,包括下列信息:
–傳輸路徑(衛星、電纜、地面)
–接收頻率
–調製類型
–誤碼保護
–傳輸參數
•機頂盒在掃描或變換信道時,可以存儲一個物理信道的所有參數,便於以後很快跳回該信道。
•信道中也可以傳送相鄰或其他信道的傳輸參數,使得信道轉換靈活快捷。
•如果NIT中的傳輸參數與實際不符,會對許多接收設備,如機頂盒,產生不可預知的影響。
–如果NIT中的傳輸頻率與實際接收頻率不同,許多接收設備在沒有任何原因提示的情況下,不產生任何圖像和聲音。
SDT
•SDT包含對TS流中節目(服務)的更多詳細描述:
–節目名稱,如CNN,CBS,Eurosport,ARD,ZDF,BBC,ACB,SBS等等
–在提供節目PID的同時,SDT對用戶提供了文本信息。
–通過提供文本列表,使得接收設備操作靈活。
•BAT,與SDT密切相關:
–BAT與SDT的PID相同,只是tableID不同。
–SDT描述一個物理信道的節目結構。
–BAT描述幾個或大量物理信道的節目結構。
BAT
•BAT表是由DVB定義的,是一個SI表,因此它是一個全局表,一個數字電視系統只對應一個BAT表,其table_id=0X4A。
•一個節目類別對應一個段。爲了讓受衆能更方便地在衆多的節目中尋找出自己喜歡的節目,往往需要提供一種把衆多的節目頻道進行分類的方法(一個類相當一個節目組)。
•例如把電影頻道歸爲“家庭影院”的類別,把電視連續劇歸爲“電視劇場”的類別等等,BAT表就提供了這一功能,每一個類別都用一個bouquet_id來標識。它包括了節目業務名稱(類別)及節目組所包含的節目清單(節目列表)。BAT表在SI信息中屬於可選表
EIT
•EIT(eventinformation table)
–即DVB中的EPG(electronicprogram guide)表
–包含一天或一週內所有廣播的計劃開始和結束時間。
–結構非常靈活,允許傳送大量附加信息
–不是所有機頂盒都支持這一特性
– 事件信息表EIT按時間順序提供每一個業務所包含的事件的信息。按照不同table_id有四類EIT:
–1) 現行傳輸流,當前/後續事件信息=table_id="0x4E";
–2) 其它傳輸流,當前/後續事件信息=table_id="0x4F";
–3) 現行傳輸流,事件時間表信息=table_id="0x50"
至"0x5F";
–4) 其它傳輸流,事件時間表信息=table_id="0x60"
至"0x6F"。
–現行傳輸流的所有EIT子表都有相同的transport_stream_id和original_network_id。
TDT/TOT
•機頂盒操作還需要傳輸當前時鐘和當前日期,分兩步:
–TDT(time&datetable)
•傳送GMT或UTC
•即零度子午線的當前時刻
–TOT(timeoffset table)
•傳送不同時區各自適當的時間偏移量
–TDT和TOT中的信息如何計算以及計算到什麼程度,取決於機頂盒的軟件
–對廣播時間信息的完全支持還需要機頂盒得到當前的位置信息:
•對擁有多個時區的國家,如澳大利亞和美國,這個問題尤其重要。
其它表
•運行狀態表(RST):
–運行狀態表給出了事件的狀態(運行/非運行)。運行狀態表更新這些信息,允許自動適時切換事件。
•填充表(ST):
–填充表用於使現有的段無效,例如在一個傳輸系統的邊界。
•選擇信息表(SIT):
–選擇信息表僅用於碼流片段(例如,記錄的一段碼流)中,它包含了描述該碼流片段的業務信息的概要數據。
•間斷信息表(DIT):
–間斷信息表僅用於碼流片段(例如,記錄的一段碼流)中,它將插入到碼流片段業務信息間斷的地方。
================================
TS流的形成:前段音視頻數據經過音視頻編碼器後音視頻數據流ES,ES經過分組器(打包器)形成一個個的分組,即PES(音視頻數據流ES的分組包,PacketES,PES最長一般爲188個字節);音視頻PES再經過複合器,從而形成傳輸流TS,傳輸流以傳輸流分組(TS Packet);TSPacket中的有效數據既可以是PES(音視頻ES分組包),也可以是PSI等信息數據,這個由TSPacket中的PID來指定負荷數據的類型;SI各表格是以SECTION爲單位放到TSPacket中,因此不同的表格就要按標準遵循對應SECTION的語法;比如PMT表,PMT可能包含多個節目的描述,因此它可能會被劃分爲多個SECTION放到TSPacket中,遵循的語法就是TS_program_map_section()
;
同步字節段:0X47(8bit)
傳輸錯誤指示字符段:0(1bit)
有效負載數據單元起始指示符字段:1(1bit)
傳輸優先級字段:0(1bit)
PID:0x191(13bit)(PAT表中指定該PID的TS包爲包含PMT SECTION數據的TS包)
傳輸加擾控制字段:(0x0)(2bit)
調整字段控制字段:0x01(無調整字段,只有有效負載)(2bit)
連續性計數器字段:(4bit)
數據字節字段:這些數據 有可能是PES包,有可能是PSISECTION (由PID決定),如果沒有調整字段,從這開始就是負載數據了;
若是PES數據,則這些負載數據通過PES分組語法來解析;
若是PSISECTION數據,則通過SECTION語法來解釋,可通過第一個table_id來確定是哪一個表的SECTION;如下表:【要知道PMT表須先知道PAT表】
Programassociation Table
The Program Association Table provides the correspondencebetween a program_number and the
PID valueof the Transport Stream packets which carry the programdefinition. The program_number is the numeric label associated witha program.
The overall table is contained in oneor more sections with the following syntax.It may be segmented to occupy multiplesections
Programassociation section[PAT section syntax]
table_id :
CAS原理:
條件接收(CA)系統(CAS)是數字電視廣播(DVB)實行收費所必須採用的系統,也是數字電視平臺不可缺少的部分,CAS負責完成用戶授權控制與管理信息的獲取、生成、加密、發送以及節目調度控制等工作,保證只有已被授權的用戶才能收看節目,從而保護節目製作商和廣播運營商的利益。
在DVB前端,CAS將通過加擾器節目級複用器複用後的節目內容,即MPEG-2/DVB視頻、音頻和輔助數據傳輸流(TS),與一個加擾僞隨機序列做XOR運算,這個僞隨機加擾序列就是控制字發生器提供的控制字CW。
CW被業務密鑰(SK)加密處理後在授權控制信息(ECM)數據流中傳送,SK被用戶個人分配密鑰(PDK)加密處理後,在授權管理信息EMM數據流中傳送,PDK存放在用戶智能卡(Smard
Card)中。
已加擾的MPEG-2/DVB視頻、音頻和輔助數據傳輸流(TS)、ECM、EMM數據流、節目說明信息(PSI)和業務信息(SI)等數據流,經複用後,從發送端經傳輸信道傳送給接收端機頂盒(STB)。
對於已經繳費的用戶,其智能卡會被授權,STB從接收到的已加擾傳輸流中,解複用出ECM和EMM數據流後送給智能卡,智能卡首先讀取PDK,用PDK對EMM解密得到SK,再用SK對ECM解密得到CW,利用CW由解擾器對已加擾傳輸流(TS)進行解擾後,再進行節目級解複用。