如果您只想使用HTML5,您将需要一个实现HTML媒体捕获草稿(可用
here)的浏览器,以便从麦克风访问原始数据。
一旦掌握了这些数据,您需要通过网络发送。 Websockets将是HTML5选项,具有与服务器(发送本地音频数据和同时接收远程音频数据)足够快的往返次数,
因为你提到python,我会建议看看twisted implementation的websockets。
您可以让所有客户端在websocket服务器上使用callerID“注册”,因此服务器知道在哪里找到给定的callerID。
然后你的服务器将需要一个“invite”API,caller1“邀请”caller2。
一旦呼叫建立并且每个客户端开始发送其音频数据,服务器将能够将该音频数据发送到另一方。
在接收音频数据时,浏览器将需要在扬声器上播放这个音频数据,可能使用HTML5音频标签。
为了做到这一点,你可能被迫使用“技巧”:而不是让websocket服务器转发原始音频数据到客户端,你可能需要模拟2“无限”文件:
> caller1.wav:在caller1麦克风上捕获的声音
> caller2.wav:在caller2麦克风上捕获的声音
caller1浏览器将在call.src属性中添加caller2.wav,一旦调用被设置(caller1将通过websocket被告知这个事件),希望如果python服务器在接收它时将原始音频数据附加到caller2.wav,它会开始播放。
这听起来像一个很酷的原型你要黑客!
祝你好运,
杰罗姆·瓦格纳