Html (webrtc)setRemoteDescription不适用于启动器
我有一个非常简单的HTML页面和一个简单的webrtc实现,还有一个socket.io服务器。我有两个视频元素,一个本地和一个远程。用户ID在页面加载时随机生成。当页面加载时,它会将一个特定的socket.io文件室与其随机ID连接起来。我还有一个呼叫按钮,可以呼叫其他用户 当我单击call时,我创建一个offer,设置本地流,设置本地描述,然后将该SDP发送到服务器。第二个用户拿起它,将其远程描述设置为接收到的描述。然后它创建一个应答,将其本地描述设置为新描述,并设置其本地流。然后将应答sdp发送到服务器。启动器拾取sdp并设置其远程描述 上述过程或多或少是如何工作的?我忽略了晕眩,转而追求简单 问题是,我有启动器的本地流加载,还有来宾的两个流(远程和本地!),但是远程视频没有加载到启动器的页面上。因此,步骤1、2和3可行,但第4步不行 我觉得我错过了一些非常明显的东西。。。由于客人可以看到本地和远程视频,我不认为这是我的眩晕/转身设置,但也许Html (webrtc)setRemoteDescription不适用于启动器,html,audio,video,webrtc,Html,Audio,Video,Webrtc,我有一个非常简单的HTML页面和一个简单的webrtc实现,还有一个socket.io服务器。我有两个视频元素,一个本地和一个远程。用户ID在页面加载时随机生成。当页面加载时,它会将一个特定的socket.io文件室与其随机ID连接起来。我还有一个呼叫按钮,可以呼叫其他用户 当我单击call时,我创建一个offer,设置本地流,设置本地描述,然后将该SDP发送到服务器。第二个用户拿起它,将其远程描述设置为接收到的描述。然后它创建一个应答,将其本地描述设置为新描述,并设置其本地流。然后将应答sdp
有什么建议吗?这里有什么问题吗 问题解决了。我少了一部分 当客人创建答案时,它会将答案正确地发送给最初的调用者。但是,在生成答案之前,来宾没有将其本地曲目添加到peerconnection实例 与此相反:
localVideo.srcObject = await navigator.mediaDevices.getUserMedia({ video: true, audio: false });
let sdp = await pc.createAnswer();
await pc.setLocalDescription(sdp);
应该是这样的
localVideo.srcObject = await navigator.mediaDevices.getUserMedia({ video: true, audio: false });
// this the missing piece
for (let track of localVideo.srcObject.getTracks()) {
pc.addTrack(track, localVideo.srcObject);
}
let sdp = await pc.createAnswer();
await pc.setLocalDescription(sdp);
问题解决了。我少了一部分 当客人创建答案时,它会将答案正确地发送给最初的调用者。但是,在生成答案之前,来宾没有将其本地曲目添加到peerconnection实例 与此相反:
localVideo.srcObject = await navigator.mediaDevices.getUserMedia({ video: true, audio: false });
let sdp = await pc.createAnswer();
await pc.setLocalDescription(sdp);
应该是这样的
localVideo.srcObject = await navigator.mediaDevices.getUserMedia({ video: true, audio: false });
// this the missing piece
for (let track of localVideo.srcObject.getTracks()) {
pc.addTrack(track, localVideo.srcObject);
}
let sdp = await pc.createAnswer();
await pc.setLocalDescription(sdp);
这可能是因为昏迷潜逃造成的。你可以试着在本地网络中运行所有东西来排除它。或者代码中缺少了什么。忘了听远程媒体流等。不看很难说。@AntonRusak我确实添加了一个STUN服务器,但没有TURN服务器。我没有设置一个。然而,如果客人可以看到我的远程视频,这难道不意味着不需要中继(转向)吗?我通过隧道(ngrok)在同一个网络上运行此操作。我注意到,
pc.ontrack
在我调用setRemoteDescription后为来宾运行,但当启动器调用setRemoteDescription时,pc.ontrack
不再被调用……这可能是由于STUN的缺席造成的。你可以试着在本地网络中运行所有东西来排除它。或者代码中缺少了什么。忘了听远程媒体流等。不看很难说。@AntonRusak我确实添加了一个STUN服务器,但没有TURN服务器。我没有设置一个。然而,如果客人可以看到我的远程视频,这难道不意味着不需要中继(转向)吗?我在同一个网络上运行它,虽然是通过一个隧道(ngrok)。我注意到,pc.ontrack
在我调用setRemoteDescription后为来宾运行,但是当启动器调用setRemoteDescription时,pc.ontrack
不再被调用。。。