2012-02-08 37 views
7

我想建立一個服務,允許用戶從他們的瀏覽器聽現場呼叫。Asterisk + Node.js +瀏覽器流

我有一些Asterisk的經驗,這似乎足夠靈活來做我所描述的。

Node.js聽起來不錯,因爲它聲稱很好地處理了併發性,而且我喜歡JavaScript。

在瀏覽器中,我認爲HTML5音頻標籤,因爲它處理來自流媒體播放源的播放,所以播放聲音會很好。

我的一位同事一起使用Icecast對這個概念進行了演示,但無法完成它。還有顯着的延遲問題。

我的問題是這樣的:

我應該如何去對這個入門?

任何幫助表示讚賞!

更新:

我發現了一個演講討論通過在後端SIP代理實現上的WebSockets的頂部SIP:

http://sip-on-the-web.aliax.net/

一旦我有這個啓動和運行,下一步就是實施流媒體。看起來我應該能夠通過輔助服務器代理通常會發送到sip客戶端的音頻輸出,然後將其傳輸到瀏覽器。我想知道爲什麼這不能在記憶中完成?隨着通話的進行,不需要寫入和讀取文件。

回答

8

如果您願意等待Asterisk 11,我們目前正在直接在Asterisk中實施對WebSockets的支持。更多關於它在這裏:

Asterisk 11 WebRTC/RTCWeb Support

我只是引述凱文在這裏,因爲他總結了更好那麼我可以:

「今天,正在進行中的開發分支有WebSocket的運輸保障協議(用於在瀏覽器和Asterisk之間傳遞信令消息),基於WebSocket的SIP(目前由IETF標準化)以及ICE/STUN/TURN(用於NAT穿越和連接建立安全的媒體處理機制)。此外, Jingle/Google Talk/Google Voice通道驅動程序,並且我們計劃通過WebSocket支持Jingle。此時,我們沒有一個完整的解決方案(一個新的金絲雀版本的谷歌Chrome瀏覽器需要一些小的變化),但每件作品已經過測試,我們急於看到它們一起工作。我們要感謝來自SIP-on-the-Web項目的Iñaki和José,他爲我們提供了他們在測試中使用的JavaScript SIP堆棧,並且我們可能還會使用PhonoSDK進行測試,以及支持Jingle。「

0

我想努力正在錄製它將有,你將無法得到解決極端延遲問題以流的音頻文件。如果你想實時收聽電話交談,我會建議看看Phono。這是一個JQuery插件,可以將您的網頁瀏覽器變成手機。然後,您只需讓聽衆與其靜音即可與其通話。

+0

我以前看過Phono。 ,bu噸,據我所知:你必須使用Phono服務,插件實際上是使用閃存。我不需要訪問用戶的麥克風,這就是爲什麼我相信他們正在使用閃光燈,所以如果可能的話,流式傳輸到音頻標籤看起來好像會起作用。 – Jonathan 2012-02-08 16:28:56

+0

如果您可以接受延遲問題,則流式傳輸可能會有效。它永遠不會是實時的。我相信你需要一個開放的溝通渠道來進行實時聆聽。您可能希望查看其他基於瀏覽器的SIP電話,例如這種[http://www.mizu-voip.com/Products/WebPhone.aspx]。 – 2012-02-08 18:01:45

+0

如果我可以訪問瀏覽器中的套接字,爲什麼我不能使用直接套接字實現服務器上的sudo-sip客戶端?我相信這不是一項微不足道的任務,但是,我想知道這是否可能? – Jonathan 2012-02-08 18:13:13

0

如果您不介意延遲(由Icecast流的緩衝引起),Asterisk可以流式傳輸到Icecast(配置Asterisk的Ices應用程序)。

如果您無法容忍延遲,則需要基於瀏覽器的SIP客戶端。不幸的是,沒有多少人沒有鎖定到別人的電話系統。您可以嘗試red5phone(http://code.google.com/p/red5phone/),但需要您設置Red5服務器。