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

Wou*_*elo 40 python audio video html5 websocket

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

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

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

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

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

Jer*_*NER 27

如果您只想使用HTML5,则需要一个实现HTML Media Capture草案的浏览器(此处提供),以便从麦克风访问原始数据.

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

既然你提到了python,我建议你去看看websockets 的扭曲实现.

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

然后你的服务器将需要一个"邀请"API,其中caller1"邀请"caller2.

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

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

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

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

一旦建立了调用,caller1浏览器就会在audio.src属性中添加caller2.wav(caller1将通过websocket通知此事件),并希望如果python服务器在收到它时将原始音频数据附加到caller2.wav,它会开始播放.

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

祝你好运,

杰罗姆瓦格纳

  • "技巧",因为1 /我不确定是否有播放原始音频数据的API所以你需要使用音频标签2 /如果你为每个原始数据块创建1个音频标签,我认为你的质量会很差所以你需要欺骗浏览器认为只有1个音频文件.如果你有所作为,请随时通知我! (4认同)

Wou*_*elo 7

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

他们使用的技术:

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

请参阅:labs.ericsson.com:


YouTube上的视频:超越HTML5:会话语音和视频演示| 爱立信实验室

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

  • 问题是,爱立信演示只适用于他们"计划"发布的补丁网络套件.你可以用flash做这个,仍称它为html5 ;-) (3认同)