使用HTML5 websockets实现基于Web的实时视频聊天

时间:2010-11-18 23:19:57

标签: python video html5 audio websocket

有没有人知道如何使用HTML5 websockets在Web应用程序中实现基于IP的语音/视频?

如果我能用PHP或Python实现它,那将是很好的,因为我(不幸的是)目前还不知道任何其他编程语言。

一个很好的教程,以及我必须付出的已经构建的解决方案。

UPDATE1:
添加了视频,因为它不仅与音频/ voip相关。

UPDATE2:
已经创建了第一个HTML5视频会议应用程序。看我自己的答案

5 个答案:

答案 0 :(得分:27)

如果您只想使用HTML5,则需要一个实施 HTML Media Capture 草稿(可用here)的浏览器才能从麦克风访问原始数据。< / p>

掌握了这些数据后,您需要通过网络发送数据。 Websockets将是HTML5选项,可以与服务器进行足够快速的往返(发送本地音频数据并同时接收远程音频数据)

既然你提到python,我建议你看看twisted implementation的websockets。

您可以让所有客户端使用callerID在websocket服务器上“注册”,这样服务器就知道在哪里可以找到给定的callerID。

然后你的服务器需要一个“邀请”API,其中caller1“邀请”caller2。

一旦设置了呼叫并且每个客户端开始发送其音频数据,服务器就能够将此音频数据发送给另一方。

收到音频数据后,浏览器需要在扬声器上播放此音频数据,可能是使用HTML5录音带。

要做到这一点,你可能会被迫使用“技巧”:而不是让websocket服务器将原始音频数据转发到客户端,你可能需要模拟2个“无限”文件:

  1. caller1.wav:在caller1 mic上捕获的声音
  2. caller2.wav:在caller2 mic
  3. 上捕获的声音 设置调用后,调用者1浏览器会在audio.src属性中添加caller2.wav(调用者将通过websocket通知此事件),并希望python服务器将原始音频数据附加到caller2.wav,因为它接收它,它会开始播放。

    这听起来像是一个很酷的原型你要破解!

    祝你好运,

    Jerome Wagner

答案 1 :(得分:7)

似乎爱立信创建了第一个HTML5视频会议应用程序。

他们使用的技术:

  • 实现了device元素和Stream API(设备元素GUI当前用JavaScript / CSS编写)
  • 添加MediaStreamManager以将流URL映射到媒体后端中的相应管道
  • 添加MediaStreamTransceiver以控制相关媒体处理和传输
  • 在WebSocket协议中添加了对二进制数据的支持

请参阅:labs.ericsson.com


YouTube上的视频:Beyond HTML5: Conversational Voice and Video demo | Ericsson Labs

不幸的是,爱立信不想分享device_dialog.js(还)。

答案 2 :(得分:3)

WebRTC可能是一个答案:http://www.webrtc.org/running-the-demos (目前只有启用了MediaStream标记的Chrome Canary)

请参阅演示:https://apprtc.appspot.com(确保您在适当的浏览器中观看)和代码http://code.google.com/p/webrtc-samples/source/browse/trunk/apprtc/


我写作的原因是......我有一个非常便宜的Android平板电脑,不能安装Skype,也不能安装Vtok,也不能在美国境外使用谷歌语音。我需要找到基于HTML5的解决方案,因为我能够运行Opera Mobile 12并使http://html5demos.com/正常工作

答案 3 :(得分:1)

@ work /得快点

查看javaScript getUserMedia(CanIUse) - API(W3)

答案 4 :(得分:0)

webrtc就是现在的答案。

对于node.js堆栈 - 您可以查看http://www.easyrtc.com/。请注意,IE尚未构建支持使webrtc工作的API。