Asterisk + Node.js +浏览器stream媒体

我想build立一个服务,允许用户从他们的浏览器实时听取电话。

我有一些Asterisk的经验,这似乎足够灵活,做我所描述的。

Node.js听起来不错,因为它声称处理并发性,而且,我喜欢JavaScript。

在浏览器中,我认为HTML5audio标签,因为它处理来自stream媒体源的播放,所以播放声音就没有问题。

我的一个同事使用Icecast一起工作了这个概念的演示,但是无法完成。 还有显着的延迟问题。

我的问题是这样的:

我应该如何着手开始呢?

任何帮助表示赞赏!

更新:

我发现了一个演示,讨论在WebSockets上通过后端的SIP代理实现SIP:

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

一旦我开始运行,下一步就是实现stream媒体。 看起来我应该能够通过一个辅助服务器代理audio输出,通常会传输到SIP客户端,然后将其传输到浏览器。 我想知道为什么这不能在记忆中完成? 然后,随着通话的进行,不需要写入和读取文件。

如果您愿意等待Asterisk 11,我们正在直接在Asterisk中实现对WebSockets的支持。 更多在这里:

Asterisk 11 WebRTC / RTCWeb支持

我会在这里引用凯文,因为他总结得更好,我可以:

“今天,正在进行的开发分支机构支持WebSocket传输协议(用于在浏览器和Asterisk之间传递信令消息),SIP over WebSocket(目前由IETF标准化)和ICE / STUN / TURN(媒体处理机制另外还有一个新的Jingle / Google Talk / Google Voice通道驱动,我们也计划通过WebSocket支持Jingle,到目前为止我们还没有一个比较完整的解决scheme一个新的金丝雀版本的谷歌Chrome浏览器需要一些小的变化),但每件作品已经过testing,我们急于看到它们一起工作,我们要感谢来自SIP的Iñaki和José在Web项目中为我们提供了在我们的testing中使用的JavaScript SIP堆栈,而且我们可能也会使用PhonoSDK来testingJingle支持。

这似乎是一个很好的指导

远程呼叫中心解决scheme使用Node.js

我在这里build了一个类似的解决scheme。 在这篇文章中,我正在谈论一些: http : //www.igorescobar.com/blog/2014/08/13/working-with-asterisk-and-node-js/

我使用Node.js(Express / Socket.io),Javascript,HTML5和CSS3构build了一个呼叫中心解决scheme。

我认为,在录制audio文件时,如果想要stream式传输audio文件,将会产生极大的延迟问题,您将无法解决这个问题。 如果你想实时收听电话交谈,我会build议调查Phono 。 这是一个JQuery插件,将您的网页浏览器变成电话。 然后,你只需让听众与他静音的谈话。

如果您不介意延迟(由Icecaststream的缓冲引起),则Asterisk能够stream式传输到Icecast(configurationAsterisk的Ices应用程序)。

如果您无法容忍延迟,则需要基于浏览器的SIP客户端。 不幸的是,没有多less人没有locking到别人的电话系统。 您可以尝试red5phone(http://code.google.com/p/red5phone/),但需要设置Red5服务器。