Darwin Stream server(DSS服务器)的Relay(中继/转发)设置
先說一下需求:
有4臺主機ABCD。A機上跑live555,將攝像頭的實時視頻編碼為H264,用RTSP協議(URL:rtsp://IpAddr-B/CamLive.sdp)將視頻流推送至DSS服務器B。B將收到的流轉發給DSS服務器C。客戶端D運行VLC,用地址rtsp://IpAddr-C/CamLive.sdp訪問視頻流。
在上述直播轉發的實驗過程過程中,順帶實現點播轉發。在DSS服務器B上運行播放自帶的mp4文件f1.mp4和我自己錄制的mp4文件f2.mp4,并向DSS服務器C轉發。客戶端D運行VLC,用地址rtsp://IpAddr-C/File1.sdp和rtsp://IpAddr-C/File2.sdp訪問點播流。
實驗過程中在網上搜集了很多相關配置的資料,出現頻率較高的有(1)《D?a?r?w?i?n? ?r?e?l?a?y?配?置?/?Darwin服務器安裝以及中繼配置》,(2)《Darwin Streaming Server Relay Setting》,(3 論文)《基于Darwin Streaming Server快速流媒體中繼實現》。它們給了我很多幫助,同時也帶來了很多誤導,本文在此逐一點評。(僅限于技術探討,說的不對的地方還請原作者以及各位指正。)
文獻地址:
(1)http://wenku.baidu.com/link?url=Gm3fYUEO_wrn_toJamKzMvR468uVE0dfIsaHPhkrNVjCHDypyei5uT0KpzzHcnCytqbQdyIpiYaZBGDGQKhBhFRbQvz1vqObE1AivrqB65K
(2)http://blog.chinaunix.net/uid-20751538-id-252614.html
(3)http://www.doc88.com/p-877811973239.html
好,現在開始。
Step1:將B機和C機的DSS服務和webadmin啟動。
Step2:對于直播,在A機上啟動Live555向B機推送視頻流。對于點播,在B機上將視頻文件加入播放列表。
在這一步中,對于直播,Live555程序已經經過改寫,運行在A機上,將視頻監控的實時流主動向B機推送。B機接收到A機推送的流后會自動在Movies目錄下生成live51_30.sdp。
對于點播,直接在B機上配置播放列表即可,本例中,testf使用了DSS自帶的視頻文件sample_300kbit.mp4,testf2使用了我自己錄制的視頻文件aaa_after.mp4。這里要注意的是,對于自己錄制的mp4文件,需要經過處理,添加RTSP頭部后才能播放。我用的處理自有視頻文件的程序是MP4Box,下載地址。配置玩播放列表后別忘了點擊播放按鈕是status從stop編程play,點擊播放按鈕的時候,會在B機的Movies目錄下生成testf.sdp和testf2.sdp。
至此,B機上的配置全部結束。本例中B機的IP是192.1.101.30,可以用VLC通過rtsp://192.1.101.30/live51_30.sdp,rtsp://192.1.101.30/testf.sdp,rtsp://192.1.101.30/testf2.sdp 這三個URL觀看從B機發送的視頻流。
Step3:在C機上配置轉發/中繼,就是Relay。
本例中,live51對應B機中的直播中繼配置,testf和testf2分別對應B機中的自帶視頻點播和錄制視頻點播。因為流數據從B發出以后就不區分文件還是直播了,所以三個配置大同小異。
Source Setting中的地址填寫B機的地址,掛載點填寫B機上生成的sdp文件名;我只嘗試了Request incoming stream這種方式,需要填寫B機的用戶名和密碼。(這里有一點待定,我不填用戶名和密碼好像也行,所以猜測此處的用戶名和密碼可能是針對加密rtsp流的,不一定是B機DSS是管理員用戶名和密碼)。
Destination Settings中地址填寫127.0.0.1,因為目的地是C機本機,我選擇了Announced UDP方式,掛載點留空白,這樣DSS會在C機的Movies目錄下生成和B機上同名的sdp文件,用戶名密碼我填了C機的管理員用戶和口令(安裝DSS時配置的那個)。
選擇Announced UDP的好處是DSS會在目的地自動生成sdp文件,但根據手冊上的描述,該方式不具備穿越防火墻的能力,也就是說適用于局域網。在實驗過程中我也嘗試了Unannounced UDP方式(手冊上說這種方式適合穿越防火墻,應該可以用在Internet上),需要填寫一個目的地的監聽端口號,和最大TTL數(用于控制傳輸距離)。但該方法需要手工將B機上的sdp文件拷貝到C機,并且需要更改端口,由于對sdp文件內容不太了解,成功的次數少,而失敗的次數多。(我懷疑是不是跟下圖中兩處10位數字有關,那是session號嗎?是不是每次重連都要修改sdp文件?還有兩處IP地址分別是什么含義,到底哪一個有用?懇請牛人指導解答)最終作罷。
這里要點評一下前面提到的3篇文檔,第一篇《D?a?r?w?i?n? ?r?e?l?a?y?配?置?/?Darwin服務器安裝以及中繼配置》還是比較靠譜,他用的就是Unannounced UDP方式;第二篇《Darwin Streaming Server Relay Setting》中講到需要在兩臺DSS服務器上分別配置Relay,一推一拉,還很認真的給出了兩臺DSS服務器上的Relay Status(如下圖),其實根據實驗,不管是直播還是點播,都不需要在B機上配置Relay,只要在C機上配就行了。至于第三篇《基于Darwin Streaming Server快速流媒體中繼實現》,應該是誤導了不少人,文檔二的作者也沒看明白這篇論文,主要問題集中在論文第3.3節的小標題8上:文中說將第一臺DSS服務器上的playlist目錄內的文件夾拷貝到第二臺DSS服務器上,然后啟動第二臺DSS的playlist,但我嘗試后發現無法啟動playlist,我猜測原因可能是因為原始視頻文件仍然在第一臺DSS上的緣故,如果將視頻文件也拷貝到第二臺DSS上,那就沒有第一臺什么事了,也談不上轉發。況且使用這種方式每當第一臺DSS增加一路視頻,都需要做拷貝操作,似乎并不合理。如果我有幸能讓論文原作者看到此博文,請指正。
好了,回到主題,至此就配完了DSS轉發,本例中C機的IP是192.1.101.77。現在可以使用可以用VLC通過rtsp://192.1.101.77/live51_30.sdp,rtsp://192.1.101.77/testf.sdp,rtsp://192.1.101.77/testf2.sdp 這三個URL觀看從C機發送的視頻流了。
總結
以上是生活随笔為你收集整理的Darwin Stream server(DSS服务器)的Relay(中继/转发)设置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工行etc信用卡额度高吗
- 下一篇: 用VLC读取摄像头产生RTSP流,DSS