流媒體基礎

來源:互聯網
上載者:User

流媒體直播系統構成

流媒體(StreamingMedia)直播(Live)系統通常由攝像機、編碼器(Encoder)、影像伺服器、影像顯示終端構成。攝像機負責採集映像,編碼器把採集的映像資料進行資料變換和壓縮,影像伺服器負責映像資料的儲存,影像顯示終端根據映像資料產生映像。

流媒體直播系統的處理流程可分為兩種,通過伺服器的中繼方式和由編碼器直接播放方式。

伺服器中繼方式指編碼器先將變換和壓縮後的映像資料發送到伺服器,伺服器把接受到的資料進行儲存,然後再由伺服器發送到顯示終端。目前,網上直播常採用這種方式。不過,映像經儲存後再轉寄會有數十秒的延遲。

編碼器直接播放方式指編碼器將變換和壓縮後的映像資料直接發送到伺服器和顯示終端,伺服器把接受到的資料進行儲存以便將來利用。由於資料同時發送給伺服器和顯示終端,不會因資料存放區和轉寄延遲映像的顯示。

3、流媒體直播系統的資料轉送方式

如果採用中繼方式,當映像資料從伺服器到顯示終端傳輸時,可採用單播和組播者兩種方式。同樣,如果採用直接方式,當映像資料從編碼器到顯示終端傳輸時,也可採用單播和組播者兩種方式。

單播(Unicast)指發送端對每個接收端分別進行資料轉送,或稱1對1資料轉送方式。隨著

接收端的增加,伺服器(中繼方式)或編碼器(直接方式)的負荷,以及網路裝置路由器的負荷將增加,對伺服器(中繼方式)或編碼器(直接方式)的效能,以及網路頻寬都有很高要求。單播更適用於ApsaraVideo for VOD(VOD)。

組播(Multicast)指發送端對特定的一組接收端同時發送資料,或稱1對n資料轉送方式。由於發送端只發出一個資料包,即使接收端的數量增加,網路的傳輸量(Traffic)不會增加。

組播對伺服器(中繼方式)或編碼器(直接方式)的效能,以及網路頻寬的要求都不高。組播可以更加流暢地即時地傳輸大畫面、高清晰的映像。不過,組播採用UDP而非TCP,資料包的損失不可避免。可採用FEC(Forward Error Correction)、DCCP(Datagram Congestion Control Protocol)技術,以減少資料損失所帶來的影響。

4、組播在IPv4互連網所遇到的問題

在IPv4互連網(Internet)內,組播地址是D類地址。只有已經取得AS號(RFC2770)的組織才能利用組播,而且IPv4的組播地址空間窄,所以IPv4互連網不適合進行組播的商業利用。

不過,在IPv4內部網(Intranet)仍可使用組播。假設某個企業有若干部門,每個部門有自己的區域網路(LAN), 部門和部門之間通過互連網相連,為了在整個內部網實現跨地區的組播,在穿越互連網時,可進行協議轉換。在各個區域網路內設定一個協議轉換伺服器。在穿越互連網之前進行組播—單播轉換,在穿越互連網之後再進行單播—組播轉換,這樣就可進行內部網的組播。

5、IPv6使組播觸手可及

IPv6的組播地址空間非常大,組播地址可由全域(Global)IP地址的首碼(Prefix)產生(RFC3306),所以很容易獲得全域的組播地址。有了全域的組播地址,就可在IPv6互連網內通過組播這一形式開展視頻服務。

即時資料流通訊協定(RTSP)是應用級協議,控制即時資料的發送。RTSP提供了一個可擴充架構,使即時資料,如音頻與視頻的受控、點播成為可能。資料來源包括現場資料與儲存在剪輯中資料。該協議目的在於控制多個資料發送串連,為選擇發送通道,如UDP、組播UDP與TCP,提供途徑,並為選擇基於RTP上發送機制提供方法。

 

 大致的來說,播放一個視頻分為4個步驟:
1.  acess 訪問,或者理解為接收、擷取、得到
2. demux 解複用,就是把通常合在一起的音頻和視頻分離(還有可能的字幕)
3. decode 解碼,包括音頻和視頻的解碼
4. output 輸出,也分為音頻和視頻的輸出(aout和vout)
拿播放一個UDP組播的MPEG TS流來說吧,access部分負責從網路接收組播流,放到VLC的記憶體緩衝區中,access模組關注IP協議,如是否IPv6、組播地址、組播協議、連接埠等資訊;
如果檢測出來是RTP協議(RTP協議在UDP頭部簡單得加上了固定12個位元組的資訊),還要分析RTP頭部資訊。這部分可以參看VLC源碼 /modules/access/udp.c 。

而demux部分首先要解析TS流的資訊。TS格式是MPEG2協議的一部分,概括地說,TS通常是固定188位元組的一個packet,一個TS流可以包含多個program(節目),
一個program又可以包含多個視頻、音頻、和文字資訊的ES流;每個ES流會有不同的PID標示。而又為了可以分析這些ES流,TS有一些固定的PID用來間隔發送program和es
流資訊的表格:PAT和PMT表。關於TS格式的詳細資料可以去google一下。

VLC專門做了一個獨立的庫libdvbpsi來解析和編碼TS流,而調用它的代碼可以參見VLC源碼 /modules/demux/ts.c。
其實之所以需要demux,是因為音視頻在製作的時候實際上都是獨立編碼的,得到的是分開的資料,為了傳輸方便必須要用某種方式合起來,這就有了各種封裝格式也就有了demux。

demux分解出來的音頻和視頻流分別送往音頻解碼器和視頻解碼器。因為原始的音視頻都是佔用大量空間,
而且冗餘度較高的資料,通常在製作的時候就會進行某種壓縮。這就是我們熟知的音視頻編碼格式,包括
MPEG1(VCD)、MPEG2(DVD)、MPEG4、H.264、rmvb等等。音視頻解碼器的作用就是把這些壓縮了的資料還原成
原始的音視頻資料。VLC解碼MPEG2使用了一個獨立的庫libmpeg2,調用它的源檔案是 /modules/codec/libmpeg2.c。
VLC關於編解碼的模組都放在/modules/codec目錄下,其中包括著名的龐大的ffmpeg。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.