Javascript webRTC上的音频/语音
我正在尝试使用Javascript webRTC上的音频/语音,javascript,audio,webrtc,Javascript,Audio,Webrtc,我正在尝试使用webRTC和php作为服务器端实现单向语音传输 看一下,我无法理解webRTC机制 在我看来,流程应该是这样的: 呼叫方和收件人在服务器上注册 收件人监听来电 呼叫方向服务器询问收件人的IP地址 服务器向调用者发送IP 呼叫方直接连接到收件人 但是,(在本地计算机上运行的) 不使用ip地址或任何可转换为ip的标识令牌 这怎么可能呢?要开始,您需要在客户之间提供某种信号渠道。大多数人都在WebSocket上使用一些协议(通常是基于JSON或SIP)来连接Node.js、SIP服务器
webRTC
和php作为服务器端实现单向语音传输
看一下,我无法理解webRTC
机制
在我看来,流程应该是这样的:
ip
的标识令牌
这怎么可能呢?要开始,您需要在客户之间提供某种信号渠道。大多数人都在WebSocket上使用一些协议(通常是基于JSON或SIP)来连接Node.js、SIP服务器或后端的MessageBroker,然后它们可以在两个客户端之间架起桥梁。您几乎可以发送直接从WebRTC对等连接提取的数据块。这包括SDP、ICE候选者等。对等连接可以直接使用从其他对等方生成的数据,因此您不必处理数据格式化。只需将其打包到JSON对象中,通过WebSocket将其发送到Node,然后让Node将其发送到另一端。由您自行设计注册端点如何相互查找并创建此桥
我们使用WebSocket上的MQTT来实现这一点。在我们的模型中,每个客户机都订阅自己的MQTT主题,并且每一方都可以向其他客户机发布关于这些主题的消息。客户机也向订阅了主题的后端服务注册这些主题,或者您可以使用保留消息让MQTT代理管理这些主题。您可以在此处阅读有关我们方法的更多信息:。我们将信令协议开源,您可以使用任何开放的MQTT代理来实现这一点。我们还创建了SDK,其中包括一个AngularJS模块,您可以在此处使用:要开始使用,您需要在客户端之间提供某种信号通道。大多数人都在WebSocket上使用一些协议(通常是基于JSON或SIP)来连接Node.js、SIP服务器或后端的MessageBroker,然后它们可以在两个客户端之间架起桥梁。您几乎可以发送直接从WebRTC对等连接提取的数据块。这包括SDP、ICE候选者等。对等连接可以直接使用从其他对等方生成的数据,因此您不必处理数据格式化。只需将其打包到JSON对象中,通过WebSocket将其发送到Node,然后让Node将其发送到另一端。由您自行设计注册端点如何相互查找并创建此桥
我们使用WebSocket上的MQTT来实现这一点。在我们的模型中,每个客户机都订阅自己的MQTT主题,并且每一方都可以向其他客户机发布关于这些主题的消息。客户机也向订阅了主题的后端服务注册这些主题,或者您可以使用保留消息让MQTT代理管理这些主题。您可以在此处阅读有关我们方法的更多信息:。我们将信令协议开源,您可以使用任何开放的MQTT代理来实现这一点。我们还创建了SDK,其中包括一个AngularJS模块,您可以在这里玩:Upvote for first段落。很好地总结了信号的基本知识。第一段请向上投票。很好地总结了信号的基础知识。
function call() {
trace('Starting call');
var servers = null;
var pcConstraints = {
'optional': []
};
pc1 = new RTCPeerConnection(servers, pcConstraints);
trace('Created local peer connection object pc1');
pc1.onicecandidate = iceCallback1;
pc2 = new RTCPeerConnection(servers, pcConstraints);
trace('Created remote peer connection object pc2');
pc2.onicecandidate = iceCallback2;
pc2.onaddstream = gotRemoteStream;
trace('Requesting local stream');
navigator.mediaDevices.getUserMedia({
audio: true,
video: false
})
.then(gotStream)
.catch(function(e) {
alert('getUserMedia() error: ' + e.name);
});
}