iptv工作原理詳解

視頻解碼標準
---------------------------------------------------------------------------
MPEG2:與DVD編碼制式一致,應用廣泛,大量解碼芯片支持;但佔用帶寬較大,存儲空間大。
MPEG4:帶寬要求低,2.5M能達到DVD效果,處理器資源要求低;存在多個分支,要考慮相互兼容。
H.264:帶寬小,1.5M就能達到DVD效果;但處理器資源高,2-3倍於MPGE4。
WMV9:微軟標準,開放性差,編碼效率高,1M帶寬就能提供DVD的效果。
H.264/AVC(MPEG4 PART 10):

音視頻傳送流
-----------------------------------------------------------------------------
首先了解一下兩種音視頻容器格式,所謂容器,就是指存儲音視頻數據,所以也跟傳輸有關係。
PS:Program Stream,一般用於可靠介質上,如DVD
TS:Transport Stream,一般用於不可靠介質上,如網絡

然後在通過發送音視頻的例子,來看一下具體的傳輸過程。比如現在有一個MP4文件需要發送出去,其內容包括Video和Audio,則整個過程如下:
(1)讀取MP4文件獲得ES流(Element Stream,下面會具體解釋),這裏我們有兩個ES流,分成視頻和音頻;
(2)然後將ES數據分拆打包成PES,如果是視頻文件(如MP4),則第一幀PES,需要加入編碼格式,如mp4或者h.264等,如果是音頻,則每一幀PES都要加入編碼格式;
(3)將PES進一步分拆封裝成TS包,可以爲不同的ES分配不同的PID(Packet ID,下面會具體解釋),而且同一個ES下的TS幀是有計數器,所以將TS併發出去後,不用擔心接收方的ES重組。

對接收者而言,根據PID的不同,區分屬於不同ES的TS數據幀,並根據計數器,將其組成PES (Packetized elementary stream),PES幀可以作爲ES直接播放
通過上面的過程,我們來了解一些基本概念。

TS可以看作是IP Video傳輸的最小數據單元,有188個字節。每個TS數據包,第一個字節是0x47,表明它是一個TS流,然後第2個和第3個字節表示PID(Packet ID),實際上只用了13位,然後是4位的計數器,接下去就是Payload。

PID字段,是Packet ID的意思,非常重要。一方面通過PID,可以從TS流中分離出屬於不同ES的TS。IPTV系統中除了傳送音視頻數據之外,還會傳送SI(Service Information),通過一些預設的特定的PID字段傳送,如0x00表示PAT數據。

ES (Element Stream)用來傳輸音時頻編碼輸出,它的格式跟具體數據有關,但當其被分割成包PES (Packetized Element Stream)發送時,往往會在每個包加上一個頭。這個包頭包括3個字節的開始標識0x000001,然後是1個字節的Stream ID,從ID能夠看出該stream是視頻還是音頻,接着2個字節表示PES包的長度。如果沒有可選內容,接下去的就是Payload。PES包的長度不等,最長可達64k字節。每個PES包一般只能包含一種類型的數據,如音頻,視頻或者字幕。


在一個TS流中,有可能包含一個或多個program,每個program又有可能有多個stream(每個stream只能傳送一種類型的數據,如視頻、音頻或字幕)。那麼問題是用戶怎麼知道這些信息。這個時候,可以通過解析TS流中SI表PAT來獲得。該表的數據封裝在TS中定時發送,PID固定是0x00。這個表包含了當前TS流包含了多少program,而具體的每個program的數據又會定義在對應的PMT數據中(每個PMT對應一個program),PAT中包含了每個program對應的PMT的PID,所以用戶能夠找到PMT數據。

對於每個PMT,它對應了一個program,所以包含了program號,由於每個program有可能包含多個stream,如視頻、音頻和字幕,那麼每個stream都會有一個PID對應。所以PMT數據中包含了各個ES流的PID。無論是PAT還是PMT,它們都需要一開始的時候就被接收方解析,然後接收方纔能根據這些信息來處理接收到的音視頻數據,而且這些數據還需要被定時發送更新。

具體關係如下:

最後要搞清楚channel(頻道)、program(節目)和stream(流)的區別。頻道就是我們目前所知道的一般的頻道概念,如CCTV5、SZTV等,而program,則是頻道中的節目,在IPTV中有可能一個頻道有多個節目,比如CCTV6頻道,可能同時傳送比賽節目和廣告節目(不一定是同時播放?),而流,則是一個節目分成多個數據流,如視頻、音頻和字幕等。

傳輸的協議
----------------------------------------------------------------------------------
首先所謂IP Video,就是指視頻數據是跑在IP協議上面的。IP Video協議運用情況很多,如下面的列表:
Broadcast MPEG2-TS/UDP
Broadcast MPEG2-TS/RTP/UDP
Broadcast RTP/UDP
Broadcast Rolling Stream
Broadcast TTS/UDP
Broadcast TTS/RTP/UDP
RSTP MPEG2-TS/(RTP)/UDP
RSTP MPGE2-TS/(RTP)/TCP
RSTP RTP/UDP
RSTP RTP/TCP

其中RTP (Real-time Transport Protocol):定義了在IP網絡上傳送音視頻數據的包格式。
其中RSTP (Real Time Streaming Protocol):用於流數據的控制,主要負責兩個端點之間stream session的建立和控制。
實際傳輸中,會有多種情況。如果TCP中直接傳送TS數據,但一般UDP,則會封裝RTP進行流數據傳輸。
另外,IP Video使用了IGMP,即組播。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章