国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于RTMP協(xié)議的流媒體技術的原理與應用

2013-09-20 05:31:32雷霄驊姜秀華王彩虹
關鍵詞:流式消息客戶端

雷霄驊,姜秀華,王彩虹

(中國傳媒大學信息工程學院,北京100024)

1 引言

近年來,隨著網(wǎng)絡帶寬的提升,以及多媒體壓縮編碼技術的發(fā)展,流媒體技術得到了非常廣泛的應用。全球的流媒體市場正在以極高的速度向前發(fā)展,并逐步取代了以文本和圖片為主的傳統(tǒng)互聯(lián)網(wǎng)。根據(jù)Cisco的 Visual Networking Index(VNI)統(tǒng)計,2005年流媒體流量僅占全球互聯(lián)網(wǎng)總流量的5%,而到了2011年這一比例已經(jīng)提升到40%,預計到2015年這一比例將會進一步提升到62%。與此同時,流媒體技術也已經(jīng)突破了電腦的限制,進入了平板電腦和智能手機等領域,一個Video Everywhere的時代即將到來[1]。

在這種流媒體快速發(fā)展的大環(huán)境下,各個地方的電視臺,視頻服務提供商紛紛開始了自己的流媒體業(yè)務。在搭建業(yè)務平臺的時候,如何選取合適自己的流媒體平臺成為一個至關重要的問題。中國網(wǎng)絡電視臺,中國教育電視臺,河南電視臺,深圳電視臺等多家電視臺,以及六間房,奇異網(wǎng),威視網(wǎng)等流媒體服務商都選擇了Adobe公司的基于Flash平臺的流媒體系統(tǒng)。該系統(tǒng)傳輸數(shù)據(jù)使用的RTMP協(xié)議[2]因此得到了非常廣泛的應用。本文將會對其特點進行詳細的分析,并搭建一個基于RTMP協(xié)議的流媒體直播系統(tǒng)。

2 流媒體

當前互聯(lián)網(wǎng)中的流媒體服務從傳輸方式上大體上可以分為兩種方式:順序流式傳輸和實時流式傳輸。

2.1 順序流式傳輸

順序流式傳輸采用普通的HTTP服務器作為存儲多媒體文件的服務器。當客戶端發(fā)起連接想要觀看多媒體資源的時候,直接通過HTTP協(xié)議把文件下載到客戶端本地系統(tǒng)的臨時文件夾中,再使用播放器播放已經(jīng)下載好的文件。它的與服務器交互的流程如圖1所示。順序流式傳輸?shù)膶嵸|就是播放本地文件。順序流式傳輸目前得到了十分廣泛的應用:YouTube,優(yōu)酷網(wǎng),土豆網(wǎng)等視頻服務商都采用了該種方式提供多媒體服務。順序流式傳輸?shù)暮锰幹饕菧p輕了服務器的壓力,即當多媒體文件下載完成后就可以斷開連接,從而節(jié)省出服務器資源再為其他客戶端服務。此外,順序流式傳輸使用的是普通的HTTP服務器,視頻服務商不必花費額外的資金購買流媒體服務器,從而節(jié)省了一筆經(jīng)費。

圖1 順序流式傳輸

2.2 實時流式傳輸

實時流式傳輸采用專門的流媒體服務器存儲多媒體文件。當客戶端發(fā)起連接想要觀看多媒體資源的時候,一般通過專有的實時流式傳輸協(xié)議把位于流媒體服務器上的多媒體數(shù)據(jù)直接傳輸給客戶端的播放器,再實時播放。他與服務器交互的流程如圖2所示。實時流式傳輸?shù)膽媚壳斑€處于發(fā)展階段,主要應用于網(wǎng)絡直播和正版影視的點播。使用實時流式傳輸方式觀看多媒體資源的時候,由于不會把文件下載到本地,可以防止視音頻提供商的內容被非法拷貝,從而保護了視音頻內容的版權。此外,使用實時流式傳輸方式觀看多媒體資源的時候,可以隨意跳轉到該視音頻的任何位置,而不必像順序流式傳輸那樣只能觀看已經(jīng)下載過的部分,因此大大增加了觀看時的自由度。

圖2 實時流式傳輸

3 實時流式傳輸

流媒體系統(tǒng)中媒體數(shù)據(jù)傳輸需要相應的實時流式傳輸協(xié)議支持。實時流式傳輸協(xié)議屬于互聯(lián)網(wǎng)TCP/IP五層體系結構中應用層的協(xié)議。在當前的互聯(lián)網(wǎng)中,很多實時流式傳輸協(xié)議的標準是公司私有的,因此這些協(xié)議規(guī)范并不公開。目前公開規(guī)范的實時流式傳輸協(xié)議有以下幾種:

3.1 RTSP+RTP

RTSP是由 IETF(Internet工程任務組)提出的[3]。RTSP 協(xié)議全稱是 Real Time Streaming Protocol,即實時流傳輸協(xié)議,是 IETF的 RFC標準。RTSP用于控制流媒體的傳輸,比如建立連接,播放,暫停等等,但本身并不傳輸多媒體數(shù)據(jù)。多媒體數(shù)據(jù)通常都是使用RTP/RTCP協(xié)議進行傳輸。RTP/RTCP協(xié)議全稱是Real-time Transport Protocol/Real-time Transport Control Protocol,即實時傳送協(xié)議/實時傳送控制協(xié)議,也是IETF的RFC標準,專門用于傳輸多媒體數(shù)據(jù)。雖然RTSP+RTP是一個國際標準的組合,但是在互聯(lián)網(wǎng)世界中卻沒能做到“一統(tǒng)天下”。這與互聯(lián)網(wǎng)的環(huán)境有很大關系。RTP/RTCP作為傳輸多媒體數(shù)據(jù)的網(wǎng)絡協(xié)議,一般情況下使用 UDP協(xié)議作為其傳輸層的網(wǎng)絡協(xié)議[3]。UDP是無連接的,不提供可靠交付,因此在互聯(lián)網(wǎng)上(尤其是廣域網(wǎng))傳輸數(shù)據(jù)的時候極易產(chǎn)生丟包,時延,抖動等問題。多媒體數(shù)據(jù)對丟包,時延,抖動有很高的要求,一點點小問題就會極大的影響用戶的體驗質量(QoE)[4]。因此互聯(lián)網(wǎng)上采用RTSP+RTP方式傳輸?shù)牧髅襟w并不是很多。與在因特網(wǎng)上傳輸?shù)牧髅襟w不同,IPTV通常都采用RTSP+RTP的方式傳輸多媒體數(shù)據(jù)[5]。因為IPTV通常采用專網(wǎng)傳輸,網(wǎng)絡狀況較好,極少出現(xiàn)丟包,時延,抖動等問題,而UDP簡單的協(xié)議規(guī)則可以大幅提高傳輸效率,所以可以“放心大膽”的使用RTSP+RTP的方式傳輸。

3.2 MMS

MMS是由微軟公司提出的。MMS協(xié)議全稱是Microsoft Media Server protocol,即微軟媒體服務協(xié)議,用于訪問Windows Media發(fā)布點上的內容。

3.3 HLS

HLS是由蘋果公司提出的。HLS全稱是HTTP Live Streaming,即基于HTTP的實時流式傳輸協(xié)議,可實現(xiàn)流媒體的直播和點播,主要應用在iOS系統(tǒng),為iOS設備(如iPhone、iPad)提供音視頻直播和點播方案。

3.4 RTMP

RTMP是由Adobe公司提出的。RTMP協(xié)議全稱是Real Time Messaging Protocol,即實時消息傳送協(xié)議,用于在Flash平臺之間傳遞視音頻以及數(shù)據(jù)。與RTSP+RTP組合提供流媒體服務的方式不同,RTMP協(xié)議本身既可以傳輸多媒體數(shù)據(jù)也可以控制多媒體播放。RTMP協(xié)議使用TCP協(xié)議作為其傳輸層的網(wǎng)絡協(xié)議。TCP是面向連接的[3],提供可靠交付的協(xié)議,因此在互聯(lián)網(wǎng)上傳輸時不會出現(xiàn)丟包情況,從而保證了用戶體驗(QoE)。但是TCP協(xié)議提供可靠交付的代價就是增加了一些額外的開銷,占用了一些帶寬和處理機資源。隨著網(wǎng)絡帶寬的提高和計算機硬件的發(fā)展,這些開銷會顯得越來越微不足道。因此RTMP協(xié)議在未來有很好的發(fā)展前景。

4 基于RTMP的系統(tǒng)的特點

很多網(wǎng)絡電視臺,流媒體服務提供商之所以會選擇RTMP協(xié)議作為其提供流媒體服務的應用層協(xié)議,在于它有以下幾個特點:無須安裝客戶端程序,保證了媒體傳輸質量。

4.1 無須安裝客戶端程序

收看采用RTMP協(xié)議提供的流媒體無需安裝客戶端程序,大大簡化了客戶操作的復雜度。一般收看流媒體都需要相應的客戶端軟件的支持,用戶需要收看流媒體就必須下載相應的軟件(或插件)。而支持RTMP協(xié)議的流媒體客戶端可以制作成一個普通的Flash文件,只要安裝過Flash Player的網(wǎng)頁瀏覽器就可以自動下載該文件并運行它。而Flash Player是一個上網(wǎng)必備的插件。據(jù)統(tǒng)計,全世界98% 的網(wǎng)頁瀏覽器都安裝了Flash Player。因此,普通用戶不需要任何操作,只要使用網(wǎng)頁瀏覽器打開播放頁面,就可以收看流媒體[6]。

4.2 保證了媒體傳輸質量

RTMP協(xié)議有效的保證了媒體傳輸質量,使用戶可以觀看到高質量的多媒體。RTMP采用TCP協(xié)議作為其在傳輸層的協(xié)議,避免了多媒體數(shù)據(jù)在廣域網(wǎng)傳輸過程中的丟包對質量造成的損失。此外RTMP協(xié)議傳輸?shù)腇LV封裝格式支持的H.264視頻編碼方式可以在很低的碼率下顯示質量還不錯的畫面,非常適合網(wǎng)絡帶寬不足的情況下收看流媒體。

5 RTMP的規(guī)范

5.1 協(xié)議格式[2][7]

RTMP協(xié)議是一個互聯(lián)網(wǎng)TCP/IP五層體系結構中應用層的協(xié)議。RTMP協(xié)議中基本的數(shù)據(jù)單元稱為消息(Message)。當RTMP協(xié)議在互聯(lián)網(wǎng)中傳輸數(shù)據(jù)的時候,消息會被拆分成更小的單元,稱為消息塊(Chunk)。

5.1.1 消息

消息是RTMP協(xié)議中基本的數(shù)據(jù)單元。不同種類的消息包含不同的Message Type ID,代表不同的功能。RTMP協(xié)議中一共規(guī)定了十多種消息類型,分別發(fā)揮著不同的作用。例如,Message Type ID在1-7的消息用于協(xié)議控制,這些消息一般是RTMP協(xié)議自身管理要使用的消息,用戶一般情況下無需操作其中的數(shù)據(jù)。Message Type ID為8,9的消息分別用于傳輸音頻和視頻數(shù)據(jù)。Message Type ID為15-20的消息用于發(fā)送AMF編碼[8]的命令,負責用戶與服務器之間的交互,比如播放,暫停等等。消息首部(Message Header)有四部分組成:標志消息類型的Message Type ID,標志消息長度的Payload Length,標識時間戳的Timestamp,標識消息所屬媒體流的Stream ID。消息的報文結構如圖3所示。

圖3 消息

5.1.2 消息塊

圖4 消息塊

5.1.3 消息分塊

在消息被分割成幾個消息塊的過程中,消息負載部分(Message Body)被分割成大小固定的數(shù)據(jù)塊(默認是128字節(jié),最后一個數(shù)據(jù)塊可以小于該固定長度),并在其首部加上消息塊首部(Chunk Header),就組成了相應的消息塊。消息分塊過程如圖5所示,一個大小為307字節(jié)的消息被分割成128字節(jié)的消息塊(除了最后一個)。

圖5 RTMP分塊

RTMP傳輸媒體數(shù)據(jù)的過程中,發(fā)送端首先把媒體數(shù)據(jù)封裝成消息,然后把消息分割成消息塊,最后將分割后的消息塊通過TCP協(xié)議發(fā)送出去。接收端在通過TCP協(xié)議收到數(shù)據(jù)后,首先把消息塊重新組合成消息,然后通過對消息進行解封裝處理就可以恢復出媒體數(shù)據(jù)。

5.2 連接方式[9]

RTMP協(xié)議規(guī)定,發(fā)布一個媒體流之前需要創(chuàng)建兩個邏輯結構:第一步,建立一個網(wǎng)絡連接(Net-Connection);第二步,基于該網(wǎng)絡連接建立一個網(wǎng)絡流(NetStream)。其中,網(wǎng)絡連接代表服務器端和客戶端之間基礎的聯(lián)系;網(wǎng)絡流代表了發(fā)送多媒體數(shù)據(jù)的通道。服務器和客戶端之間只能建立一個網(wǎng)絡連接,但是基于該連接可以創(chuàng)建很多網(wǎng)絡流。他們的關系如圖6所示:

圖6 RTMP的網(wǎng)絡連接和網(wǎng)絡流

6 基于RTMP的直播系統(tǒng)的搭建[9]

6.1 系統(tǒng)結構

本文將會實現(xiàn)一個基于RTMP協(xié)議的流媒體直播系統(tǒng)。一個完整的流媒體直播系統(tǒng)包括以下幾個部分:視頻源,流媒體服務器和客戶端,系統(tǒng)的構成如圖7所示。視頻源將視頻數(shù)據(jù)經(jīng)過RTMP協(xié)議發(fā)布到流媒體服務器上;視頻成功發(fā)布以后,客戶端通過RTMP連接到流媒體服務器,就可以播放相應的視頻。其中,視頻源和客戶端都是使用ActionScript語言編寫的Flash程序[10],流媒體服務器使用Adobe公司的Flash Media Server軟件。

圖7 系統(tǒng)構成圖

6.2 視頻源

視頻源是一個提供視頻流的應用程序。本系統(tǒng)中使用一個ActionScript代碼編寫的Flash程序作為視頻源。該程序采集本機攝像頭數(shù)據(jù),將數(shù)據(jù)壓縮編碼后使用RTMP協(xié)議將數(shù)據(jù)發(fā)布到流媒體服務器相應的應用程序(Application)上面。

下面簡要介紹一下視頻源部分重要代碼含義:

//建立一個RTMP網(wǎng)絡連接

柯青,2017年畢業(yè)于南京師范大學,長期研究文學以及中國哲學倫理方向。著有散文書籍《濃墨重彩》?,F(xiàn)為上海潘言教育科技有限公司創(chuàng)始人。

var nc:NetConnection=new NetConnection();

//連接到IP為222.31.64.249的流媒體服務器上名字為publishlive的應用程序

nc.connect("rtmp://222.31.64.249/publishlive");

//建立一個基于該連接的網(wǎng)絡流

ns=new NetStream(nc);

//調用本機的攝像頭

cam=Camera.getCamera();

//把攝像頭添加到新建的流上

ns.attachCamera(cam);

//把一個多媒體流發(fā)布到服務器的應用程序上,取名為“myCamera”

ns.publish("myCamera","live");

6.3 流媒體服務器

流媒體服務器是存儲(或接收)媒體流并且等待客戶端連接的軟件。本系統(tǒng)采用Adobe公司的Flash Media Server作為流媒體服務器。媒體流必需發(fā)布到已經(jīng)在流媒體服務器上注冊過的應用程序上。在Flash Media Server的安裝目錄的“Application”文件夾下新建一個“publishlive”文件夾,即可注冊一個名為“publishlive”的應用程序,不需要編寫任何代碼。

6.4 客戶端

客戶端是播放視頻流的應用程序。本系統(tǒng)采用一個ActionScript語言編寫的Flash程序作為播放實時流的客戶端。使用RTMP協(xié)議從流媒體服務器獲得視頻數(shù)據(jù)并顯示播放。

下面簡要介紹一下客戶端的部分關鍵代碼的含義:

//建立一個RTMP網(wǎng)絡連接

var nc:NetConnection=new NetConnection();

//連接到IP為222.31.64.249的流媒體服務器上名字為publishlive的應用程序

nc.connect("rtmp://222.31.64.249/publishlive");

//建立一個基于該連接的多媒體流

nsPlayer=new NetStream(nc);

//播放名為“myCamera”的多媒體流

nsPlayer.play("myCamera");

//新建一個Video對象用于顯示視頻

vidPlayer = new Video(cam.width,cam.height);

//將多媒體流添加到Video類上

vidPlayer.attachNetStream(nsPlayer);

//在Flash舞臺上顯示Video對象

addChild(vidPlayer);

7 小結和展望

本文分析了流媒體的兩種基本傳輸方式:順序流式傳輸和實時流式傳輸?shù)膮^(qū)別。并重點分析了幾種主要的實時流式傳輸協(xié)議的特點。以RTMP協(xié)議為基礎,分析了它的特點和格式,最后實現(xiàn)了一個的基于RTMP協(xié)議的流媒體直播系統(tǒng)。對于全面了解RTMP協(xié)議的原理有很大的幫助,同時可以為設計與實現(xiàn)更為復雜的基于RTMP協(xié)議的流媒體系統(tǒng)提供一個參考。

今年以來,隨著互聯(lián)網(wǎng)電視(Over-The-Top TV)逐漸興起,流媒體技術將會隨之迎來一個大發(fā)展階段。可以預見,以流媒體技術為支撐的流媒體在未來將會占據(jù)傳統(tǒng)電視的部分市場并獲得相當數(shù)量的客戶群。而不需要用戶安裝客戶端,視音頻質量良好的基于RTMP協(xié)議的流媒體系統(tǒng),也將會在眾多流媒體系統(tǒng)中凸現(xiàn)出來,獲得很大的市場份額。

[1]中廣研究,視訊天下.在線視頻平臺白皮書[C].北京:中國標準出版社,2012.

[2]Adobe Systems Incorporated.RTMP Specification[EB/OL].http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/rtmp/pdf/rtmp_specification_1.0.pdf,2009.

[3]謝希仁.計算機網(wǎng)絡(第五版)[M].北京:電子工業(yè)出版社,2009.

[4]蘇佳,姜秀華.IPTV 視頻質量評價介紹[J].電視技術,2011,35(6):78-81.

[5]萬曉榆,張洪,歐陽春,張溢華.IPTV技術與運營[M].北京:科學出版社,2010.

[6]林曉偉 .Flash Player內部機制[EB/OL].http://wenku.baidu.com/view/d4243af3f90f76c66 1371af4.html,2010.

[7]姜浩然,徐林.基于RTMP的流媒體服務器的研究[J].計算機與數(shù)字工程,2011,39(10):104-108.

[8]Adobe Systems Incorporated.AMF 3 Specification[EB/OL].http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/amf/pdf/amf-file-format-spec.pdf,2006.

[9]Adobe Systems Incorporated.Adobe Flash Media Server 4.5 Developer's Guide [EB/OL].http://help.adobe. com/en _ US/flashmediaserver/devguide/flashmediaserver_4.5_dev_guide.pdf,2012.

[10]Zerlot Ma.Flash Media Server 3.0技術指南Part1[EB/OL].http://wenku.baidu.com/view/ab293b48c850ad02de80418f.html,2006.

猜你喜歡
流式消息客戶端
輻流式二沉池的結構優(yōu)化研究
工程與建設(2019年5期)2020-01-19 06:22:38
一張圖看5G消息
縣級臺在突發(fā)事件報道中如何應用手機客戶端
傳媒評論(2018年4期)2018-06-27 08:20:24
孵化垂直頻道:新聞客戶端新策略
傳媒評論(2018年4期)2018-06-27 08:20:16
基于Vanconnect的智能家居瘦客戶端的設計與實現(xiàn)
電子測試(2018年10期)2018-06-26 05:53:34
微球測速聚類分析的流式液路穩(wěn)定性評估
自調流式噴管型ICD的設計與數(shù)值驗證
流式在線直播視頻的采集
河南科技(2015年8期)2015-03-11 16:23:41
消息
消息
徐州市| 丹东市| 开化县| 桐乡市| 廊坊市| 兴安县| 鄢陵县| 庄浪县| 新干县| 马龙县| 长宁县| 库尔勒市| 塔城市| 林口县| 天峨县| 涟水县| 泰宁县| 长春市| 安吉县| 阜平县| 隆子县| 招远市| 江陵县| 张家港市| 永吉县| 色达县| 九龙坡区| 高青县| 运城市| 西贡区| 会东县| 平山县| 江都市| 合水县| 滨海县| 莒南县| 内江市| 城口县| 安义县| 南昌县| 曲阳县|