如何使用 ice-candidates 处理 sdp 报价并生成合适的响应

Posted

技术标签:

【中文标题】如何使用 ice-candidates 处理 sdp 报价并生成合适的响应【英文标题】:How to process the sdp offer with ice-candidates and generate a suitable response 【发布时间】:2016-08-10 11:06:19 【问题描述】:

我正在尝试为 sdp 报价生成一个 sdp 答案。我也在使用 ICE,但 ice-candidates 与 sdp 报价一起发送。

如何生成适当的 sdp 答案以及这些候选冰对的响应。

这是我收到的 sdp 报价:

v=0
o=root 1557075227 1557075227 IN IP4 172.24.9.236
s=***********
c=IN IP4 172.24.9.236
t=0 0
m=audio 19376 RTP/AVP 0 8 3 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=maxptime:150
a=ice-ufrag:37bcc460577fe3dc590be4916da2574e
a=ice-pwd:39bc5db21294c65840c4442943921476
a=candidate:Hac1809ec 1 UDP 2130706431 172.24.9.236 19376 typ host
a=candidate:S31f8f89e 1 UDP 1694498815 **.***.***.158 19376 typ srflx raddr 172.24.9.236 rport 19376
a=candidate:Hac1809ec 2 UDP 2130706430 172.24.9.236 19377 typ host
a=candidate:S31f8f89e 2 UDP 1694498814 **.***.***.158 19377 typ srflx raddr 172.24.9.236 rport 19377
a=sendrecv

以下是webrtcendpoint.processSdpOffer()生成的sdpanswer:

v=0
o=- 3679812671 3679812671 IN IP4 0.0.0.0
s=Kurento Media Server
c=IN IP4 0.0.0.0
t=0 0
m=audio 0 RTP/AVP 0 8 3 101
a=inactive
a=s-s-rc:1635381884 cname:user1999328188@host-4a845cab
a=ice-ufrag:MdZD
a=ice-pwd:+ZxngOqy+6x1MM+0lI+CGD
a=fingerprint:sha-256 02:B7:04:92:F3:69:72:2C:15:E0:D5:FE:CE:20:63:75:B3:FD:77:DC:6E:88:FB:64:7B:B7:A6:DF:BE:A7:E7:DD
a=mid:audio0

在处理报价之前/之后调用 gatherCandidates() 没有任何区别。 我无法为音频通话建立媒体流。我猜原因是冰谈判没有完成。我哪里错了。

【问题讨论】:

P.S:已经在谷歌群组上发布了这个问题,以获得快速回复。这是link 【参考方案1】:

生成答案后,您可能需要设置localDescription

例如,在 javascript 中,可以做到以下几点:

var sdp = " ... "; // This is the SDP

remoterequest = new RTCSessionDescription("type": "offer", "sdp": sdp);

peer.setRemoteDescription (remoterequest);

peer.createAnswer((sessionDesc) => 
   peer.setLocalDescription(sessionDesc);
, (err) =>  
   console.log (err); 
,  );

看起来您有一个“SDP 答案”,但您是否将该答案设置为localDescription,一旦您生成了它?

【讨论】:

以上是关于如何使用 ice-candidates 处理 sdp 报价并生成合适的响应的主要内容,如果未能解决你的问题,请参考以下文章

libuv 中 sd-bus 的事件循环处理

如何从互联网将文件写入 SD 卡?

在 SD 卡上存储 Android 应用程序数据

批处理文件注册OCX

fpga图像处理(基于sd卡图像读取和显示)

如何将TF卡转为SD卡在数码相机中使用使用?