《流媒體協(xié)議與Darwin服務(wù)器課件》由會員分享,可在線閱讀,更多相關(guān)《流媒體協(xié)議與Darwin服務(wù)器課件(35頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,流媒體協(xié)議與DARWIN媒體服務(wù)器,1 流媒體協(xié)議介紹1.1Rtp(,RTP:Real Time Transport Protocol,),實時傳輸協(xié)議 RTP 為數(shù)據(jù)提供了具有實時特征的終端對終端傳送服務(wù),如在組播或單播網(wǎng)絡(luò)服務(wù)下的交互式式視頻音頻或仿真數(shù)據(jù)。,RTP 由兩個相近鏈接部分組成:,RTP:傳送具有實時屬性的數(shù)據(jù);,RTP 控制協(xié)議 RTCP:監(jiān)控服務(wù)質(zhì)量并傳送正在進行的會話參與者的相關(guān)信息。,協(xié)議結(jié)構(gòu),PT 識別 RTP 有效載荷的格式,并通過應(yīng)用程序決定其解釋。,序列號 每發(fā)送一個 RTP
2、 數(shù)據(jù)包,序列號增加1。接收方可以依次檢測數(shù)據(jù)包的丟失并恢復(fù)數(shù)據(jù)包序列。,Timestamp 反映 RTP 數(shù)據(jù)包中的第一個八位組的采樣時間。,SSRC 同步源。該標(biāo)識符隨機選擇,旨在確保在同一個 RTP 會話中不存在兩個同步源具有相同的 SSRC 標(biāo)識符。,RTCP協(xié)議,當(dāng)應(yīng)用程序開始一個RTP會話時將使用兩個端口:一個給RTP,一個給RTCP。RTP本身并不能為按順序傳送數(shù)據(jù)包提供可靠的傳送機制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務(wù)。在RTP的會話之間周期的發(fā)放一些RTCP包以用來傳監(jiān)聽服務(wù)質(zhì)量和交換會話用戶信息等功能。RTCP包中含有已發(fā)送的數(shù)據(jù)包的數(shù)量、丟失的數(shù)據(jù)包的
3、數(shù)量等統(tǒng)計資料。因此,服務(wù)器可以利用這些信息動態(tài)地改變傳輸速率,甚至改變有效載荷類型。RTP和RTCP配合使用,它們能以有效的反饋和最小的開銷使傳輸效率最佳化,因而特別適合傳送網(wǎng)上的實時數(shù)據(jù)。根據(jù)用戶間的數(shù)據(jù)傳輸反饋信息,可以制定流量控制的策略,而會話用戶信息的交互,可以制定會話控制的策略。,(Real Time Streaming Protocol),RTSP協(xié)議定義了如何有效地通過IP網(wǎng)絡(luò)傳送多媒體數(shù)據(jù),是一種客戶端到服務(wù)器端的多媒體描述協(xié)議。RTSP是一個流媒體標(biāo)示控制協(xié)議,用于控制具有實時特性的傳輸服務(wù),它本身并不傳輸數(shù)據(jù),而是利用低層傳輸協(xié)議提供的傳輸服務(wù)如RTP來傳輸數(shù)據(jù)。它提供對
4、媒體流的控制功能,例如播放,暫停,快進等。RTSP定義控制中所用的消息、操作方法、狀態(tài)碼以及頭域等,另外還描述與RTP的交互操作。RTSP制定時參考了HTTP/1.1,在語法及操作上均與HTTP/1.1相似,并使HTTP的擴展機制在大多數(shù)情況下,可以加到RTSP上。,C-S:,DESCRIBE rtsp:/127.0.0.1/sample_100kbit.mp4 RTSP/1.0rn,CSeq:1rn,Accept:application/sdprn,Bandwidth:384000rn,rn,S-C:,RTSP/1.0 200 OKrn,Server:DSS/5.5.1(Build/489.
5、8;Platform/Win32;Release/Darwin;)rn,Cseq:1rn,Content-length:1203rn,Content-Type:application/sdprn,x-Accept-Retransmit:our-retransmitrn,x-Accept-Dynamic-Rate:1rn,Content-Base:rtsp:/127.0.0.1/sample_100kbit.mp4/rn,rn,v=0rn,o=StreamingServer,s=sample_100kbit.mp4rn,u=http:/rn,e=adminrn,c=IN IP4 0.0.0.0r
6、n,b=AS:96rn,t=0 0rn,a=control:*rn,a=mpeg4-iod:data:application/mpeg4-iod;base64,AoJrAE/w/z/wOBdgABQNhkYXRhOmFwcGxpY2F0aW9uL21wZWc0LW9kLWF1O2Jhc2U2NCxBWUVDQVV3Rkh3TklBTWtnQUdVRUx5QVJBRzNkQUFFaytBQUJKUGdGSUFBQUFiRHpBQUFCdFE3Z1FNRFBBQUFCQUFBQUFTQUFoRUQ2S0RBZzhxSWZCaEFBUkFBQUFsZ0FBQUFBSUFBQUFBQURBVElDbn
7、dNdUFHVUFCSUNBZ0JSQUZRQVlBQUFBVGlBQUFFNGdCWUNBZ0FJVmtBWVFBRVFBQUI5QUFBQWZRQ0FnQUFBQUF3PT0EDQEFAADIAAAAAAAAAAAGCQEAAAAAAAAAAANpAAJARmRhdGE6YXBwbGljYXRpb24vbXBlZzQtYmlmcy1hdTtiYXNlNjQsd0JBU2daTUNvRmNtRUVIOEFBQUIvQUFBQkVLQ0tDbjQEEgINAABkAAAAAAAAAAAFAwAAYAYJAQAAAAAAAAAArn,a=isma-compliance:1,1.0,1rn,a=r
8、ange:npt=0-70.00000rn,m=video 0 RTP/AVP 96rn,b=AS:76rn,a=rtpmap:96 MP4V-ES/90000rn,a=control:trackID=3rn,a=cliprect:0,0,242,192rn,a=framesize:96 192-242rn,a=mpeg4-esid:201rn,m=audio 0 RTP/AVP 97rn,b=AS:20rn,a=rtpmap:97 mpeg4-generic/8000/2rn,a=control:trackID=4rn,a=fmtp:97 profile-level-id=15;mode=A
9、AC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1590rn,a=mpeg4-esid:101rn,1.3sdp(SDP:Session Description Protocol),會話描述協(xié)議(SDP)為會話通知、會話邀請和其它形式的多媒體會話初始化等目的提供了多媒體會話描述。會話目錄用于協(xié)助多媒體會議的通告,并為會話參與者傳送相關(guān)設(shè)置信息。SDP 即用于將這種信息傳輸?shù)浇邮斩?SDP 文本信息包括:,會話名稱和意圖;,會話持續(xù)時間;,構(gòu)成會話的媒體;,有關(guān)接收媒體的信息(地址等)。,協(xié)議結(jié)構(gòu),SDP 信息是文本信息,
10、采用 UTF-8 編 碼中的 ISO 10646 字符集。SDP 會話描述如下:,v=(協(xié)議版本),o=(所有者/創(chuàng)建者和會話標(biāo)識符),s=(會話名稱),一個或更多時間描述(如下所示):,0個或多個媒體描述(如下所示),時間描述,t=(會話活動時間),媒體描述,m=(媒體名稱和傳輸?shù)刂罚?例子,其中,DESCRIBE,SETUP,PLAY命令是遵循rtsp協(xié)議的,而會話描述是遵循sdp協(xié)議的,媒體數(shù)據(jù)的傳輸是采用rtp協(xié)議的。,2.Darwin 流媒體服務(wù)器介紹,2.1各個流媒體解決方案比較,流媒體商業(yè)解決方案比較,目前市面上有real networks公司的real system,micro
11、soft公司的windows media系統(tǒng),蘋果公司的quicktime流媒體系統(tǒng)及philips公司的webcine,后者在目前市場上的占有率微乎其微,而另外三大主流流媒體解決方案則占據(jù)了90以上的市場。,微軟的流媒體系統(tǒng)以其方便性、先進性、集成性、低費用等特點而漸漸被人們注意,它的缺點是僅支持windows操作系統(tǒng),采用的是私有協(xié)議MMS而不是RTSP/RTP協(xié)議。提供SDK進行二次開發(fā).,Realnetwork公司的流媒體系統(tǒng)是目前最流行的流媒體解決方案,支持幾乎所有主流的個人計算機平臺,提供SDK進行二次開發(fā)。,蘋果公司的流媒體系統(tǒng)支持幾乎所有主流的個人計算機平臺,提供媒體服務(wù)器da
12、rwin stream server(DSS)的開源代碼,播放器quicktime提供SDK進行二次開發(fā).,2.1.2 開源流媒體服務(wù)器比較,開源方面,因為目前編解碼器及流媒體的標(biāo)準(zhǔn)未定,開源資源比較紊亂,下面對開源領(lǐng)域較多人使用的程序做一比較,2.2DSS架構(gòu),DSS處理流媒體的過程如圖所示,客戶端經(jīng)由DSS中的RTP session及RTSP session建立RTP/UDP/IP數(shù)據(jù)連接以及RTSP/TCP/IP控制連接,接著流媒體數(shù)據(jù)由RTP鏈路傳送到客戶RTSP鏈路控制RTP流的播放。,服務(wù)器架構(gòu),服務(wù)器自己擁有的主線程(Main Thread)。這個線程負責(zé)檢查服務(wù)器是否需要關(guān)閉,
13、記錄狀態(tài)信息,或者打印統(tǒng)計信息。,空閑任務(wù)線程(Idle Task Thread)。空閑任務(wù)線程管理一個周期性的任務(wù)隊列。,事件線程(Event Thread)。事件線程負責(zé)偵聽套接口事件,比如收到RTSP請求和RTP數(shù)據(jù)包,然后把事件傳遞給任務(wù)線程。,一個或者多個任務(wù)(Task)線程。任務(wù)線程從事件線程中接收RTSP和RTP請求,然后把請求傳遞到恰當(dāng)?shù)姆?wù)器模塊進行處理,把數(shù)據(jù)包發(fā)送給客戶端。缺省情況下,核心服務(wù)器為每一個處理器創(chuàng)建一個任務(wù)線程。,任務(wù)線程,DSS中RTSP監(jiān)聽對象、RTSP會話對象、RTP會話對象均為“任務(wù)”對象,可被任務(wù)線程調(diào)度完成RTSP請求監(jiān)聽、RTSP請求處理、RT
14、P數(shù)據(jù)包發(fā)送等工作。每個任務(wù)對象都有兩個主要的方法:Signal和Run,用于實現(xiàn)任務(wù)對象的通知和運行。任務(wù)對象的概念圖如圖3所示:,Signal方法,若想要通知任務(wù)對象完成某一任務(wù),只需調(diào)用其Signal方法,并傳遞事件,即通知任務(wù)對象某一事件。例如在RTP會話任務(wù)對象的Play()中想要啟動RTP任務(wù)對象開始發(fā)送RTP數(shù)據(jù)包,則通知RTP會話對象一個“啟動事件(StartEvent)。任務(wù)對象Signal方法所作的工作僅僅是設(shè)置任務(wù)對象的事件標(biāo)記值并將任務(wù)對象自身作為一個隊列元素加入到任務(wù)線程的任務(wù)對象隊列中去,然后任務(wù)線程會調(diào)度到該任務(wù)并完成特定任務(wù)。,Run方法,在任務(wù)線程調(diào)度到某一任
15、務(wù)對象后,會調(diào)用其Run方法來完成特定的工作。在任務(wù)對象的Run方法中,首先根據(jù)其事件標(biāo)記值判斷被通知的事件,然后根據(jù)該事件完成特定的任務(wù)。,任務(wù)對象的運行,任務(wù)線程調(diào)度任務(wù)對象并調(diào)用任務(wù)對象的Run方法完成任務(wù)后,根據(jù)返回值對任務(wù)對象有進一步的處理:若返回值為負,則刪除該任務(wù)對象,一般任務(wù)對象在收到“kill事件”后,其Run方法返回負值使得任務(wù)對象在任務(wù)線程上被刪除;若返回值為零,則不進行進一部處理,使得在任務(wù)對象只有在收到新的事件通知后才能夠再次被調(diào)度運行:若返回值為正,則標(biāo)明該任務(wù)對象在返回值時間間隔后需再次被調(diào)度運行,則設(shè)置其事件標(biāo)記為空閑,并以當(dāng)前時刻和返回值之和作為其運行時刻,然
16、后將其插入到任務(wù)隊列中,使得在任務(wù)對象的運行時刻到來后會被任務(wù)線程調(diào)度得以運行。,事件線程,事件線程在啟動時構(gòu)造有一個消息窗口用于接收消息。套接字若想通過該消息窗口產(chǎn)生消息,需調(diào)用WSAAsyncSelectQ函數(shù)請求“當(dāng)套接字上有網(wǎng)絡(luò)事件時,產(chǎn)生消息到該消息窗口”。,事件線程啟動后,它一直循環(huán)阻塞等待消息,若接收到消息(即有套接字收到數(shù)據(jù)),根據(jù)消息中參數(shù)找到對應(yīng)的套接字并撤銷該套接字的“網(wǎng)絡(luò)事件通知消息”功能,最后調(diào)用該套接字處理消息,并循環(huán)等待消息。,在套接字處理事件時將該事件通知給與之聯(lián)系在一起的任務(wù)對象,即調(diào)用該任務(wù)對象的Signal方法,所傳遞事件為讀取數(shù)據(jù)事件。這樣可以將套接字與任務(wù)對象聯(lián)系起來,當(dāng)套接字上收到數(shù)據(jù)后可在事件線程上通知對應(yīng)的任務(wù)對象,任務(wù)對象在任務(wù)線程上得到運行以處理來自套接字的數(shù)據(jù)。例如:RTSP監(jiān)聽任務(wù)對象和其監(jiān)聽套接字聯(lián)系起來,RTSP會話任務(wù)對象和其會話連接套接字聯(lián)系起來,而RTCP任務(wù)對象和所有RTP會話接收RTCP數(shù)據(jù)包的套接字聯(lián)系起來。因此,通過任務(wù)/事件機制,使得在單個線程上處理所有的流會話成為可能,空閑線程,在服務(wù)器啟動時創(chuàng)建、啟動有空閑