2012-08-15 66 views
1

我正在開展一個個人項目以促進我自己的教育。單一實時資源,多個客戶端連接

我想知道什麼型號的流媒體服務器通常用於在有限的資源上實現最高性能,同時連接到單個共享資源但將其發送到多個資源。

例如:假設我們有一臺帶有固定帶寬(1 mb/s)的網絡攝像頭。我們有這個網絡攝像頭的可變數量的觀衆。如果攝像機能夠產生高質量的視頻,這會使其上游功能飽和,我們將被限制爲1個連接。但是我們想要完成所有這些連接請求。所以我們之間放置了一個流媒體服務器。

他們通常使用什麼方法來多流這個單一會話?我一直在調查共享內存,消息隊列。

我已經使用二元pub-sub消息隊列成功編寫了一個簡單的多連接服務器,但我正在尋找解決此問題的其他解決方案。不是因爲它沒有工作,而是因爲我想知道別人怎麼做。

我的問題是,流媒體服務器(FFServer,Red5,WMS,FMS等)使用哪種典型的編程方法來連接到單個實時資源並將其聯合到多個客戶端。

這是語言不可知的,我比概念更感興趣的概念。

回答

0

Adob​​e Flash使用了一種P2P技術。您可以在使用CNN網站的直播時觀看。經過一段時間的觀察,你可以看到你有相同的上游,然後下游。 您的任務管理器中還有一個名爲「omnixyz-something」的新進程。該流程管理您的流向其他觀衆的P2P轉發。 你可以在這裏看到一些關於這個概念的漂亮圖形: http://labs.adobe.com/technologies/cirrus/ 雖然我懷疑目前Adobe的RTMFP和第二個圖形一樣靈活。該圖很好,但從技術上來說,我認爲單個查看器在「播種機」網絡中連接的節點數量是有限的。因此,您只能將您的信息流轉發給1,2,3人,而不是像圖中所示的那樣「無限」。

+0

謝謝Seba,但我試圖找出編程設計模式。他們是否使用共享內存與信號量,互斥鎖和鎖來實現這一點,或者他們使用消息隊列還是完全不同的東西? – 2012-08-16 16:58:12

+0

對不起,我認爲你的問題太籠統,不能用任何具體的方法來回答。 Red5例如使用Apache Mina對數據包進行排隊。 Mina基本上提供了一個框架來編程協議,並將它們分割成編碼器和解碼器。 – 2012-08-23 14:31:35