我遵循一些流程,他们解释了如何在webrtc中进行连接。但是我被封锁了: 得到sdpOffer之后,我想调用setRemoteDescrisption(),并且有一个onIceCandidate回调。但是我没有这个回调。 如果您需要,我可以显示一部分代码。
感谢您的帮助
答案 0 :(得分:0)
首先,我对Android上的WebRTC知之甚少,但我想它会与Web API非常相似。我在下面的流程中使用了标准js。
onicecandidate处理程序称为设置本地描述时,see MDN onicecandidateevent。 您需要设置本地描述以开始集冰过程。原因之一是,将收集的冰块候选者添加到您的本地描述中,如果您没有将其添加到本地描述中,则将不起作用。
关于处理报价/交换的过程,请尝试这样做(将A和B用作具有单独的RTCPeerConnection-Objects pcA和pcB的对等方),请检查您的流程在某处是否不同:
signaller.on('ice', candidate => pc.addIceCandidate(candidate))
pcA.ontrack = track => ... (put it as src of your video or whatever)
pcA.addTrack(aTrack)
(从A的一面开始...)
offer = await pcA.createOffer()
await pcA.setLocalDescription(offer)
signaller.sendTo('B','offer', offer)
发送生成的要约,现在您的集冰过程开始了onicecandidate
处理程序接收生成的候选。 pcA.onicecandidate = e => signaller.sendTo('B','ice', e.candidate)
(现在我们跳到B对事物的看法)
signaller.on('offer', async offer => { await pcB.setRemoteDescription(offer); // and the following steps 8 to 12 follow here })
answer = await pcB.createAnswer()
await pcB.setLocalDescription(answer)
signaller.sendTo('A','answer', answer)
(返回A)
signaller.on('answer', async answer => await pcA.setRemoteDescription(answer); });
stable
或connected
如果这行得通,请看看处理眩光this is a good source。