代码之家  ›  专栏  ›  技术社区  ›  Wouter Dorgelo voy

利用HTML5 websockets实现基于web的实时视频聊天

  •  40
  • Wouter Dorgelo voy  · 技术社区  · 14 年前

    有人知道如何在使用HTML5 websockets的web应用程序中实现IP上的语音/视频吗?

    如果我能用PHP或Python实现这一点就好了,因为我(不幸的是)目前还不知道任何其他编程语言。

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

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

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

    5 回复  |  直到 13 年前
        1
  •  27
  •   Jerome WAGNER    14 年前

    如果你只想使用HTML5,你需要一个浏览器来实现 HTML媒体捕获 草稿(可用 here )以便从麦克风访问原始数据。

    一旦你手头有这些数据,你就需要通过网络发送它。Websockets将是HTML5的一个选项,它可以与服务器进行足够快的往返(同时发送本地音频数据和接收远程音频数据)

    既然你提到了python,我建议你看看 twisted implementation 韦伯塞特的。

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

    然后您的服务器将需要一个“invite”API,其中caller1“invites”caller2。

    一旦建立了呼叫并且每个客户机开始发送其音频数据,服务器将能够将此音频数据发送到另一方。

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

    为此,您可能会被迫使用一个“技巧”:您可能需要模拟两个“无限”文件,而不是让websocket服务器将原始音频数据转发给客户端:

    1. caller1.wav:在caller1麦克风上捕获的声音
    2. caller2.wav:在caller2麦克风上捕获的声音

    caller1 browser将在设置调用后在audio.src属性中添加caller2.wav(caller1将通过websocket得知此事件),如果python服务器在接收到原始音频数据时将其附加到caller2.wav,则它将开始播放。

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

    祝你旅途好运,

    杰罗姆·瓦格纳

        2
  •  7
  •   Wouter Dorgelo voy    14 年前

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

    他们使用的技术:

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

    见: labs.ericsson.com :


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

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

        3
  •  3
  •   Mars Robertson    13 年前

    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/


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

        4
  •  1
  •   Cody    12 年前

    @工作/得快点

    查看javaScript getUserMedia (犬科动物)- API (第3页)

        5
  •  0
  •   saurshaz    12 年前

    webrtc现在是答案。

    对于node.js堆栈-您可以查看 http://www.easyrtc.com/ . 注意,IE还没有为使webrtc工作的api构建支持。

    推荐文章