无法设置远程提供 sdp:使用没有 SDES 加密的 SDP 调用

Posted

技术标签:

【中文标题】无法设置远程提供 sdp:使用没有 SDES 加密的 SDP 调用【英文标题】:Failed to set remote offer sdp: Called with SDP without SDES crypto 【发布时间】:2014-07-26 13:45:42 【问题描述】:

尝试使用基于APPrtcDemo的android应用程序进行WebRTC。 从 Chrome 34 连接时,一切工作正常,但是当我使用 Chrome 35 进行视频通话时 f 出现此错误。

 onSetFailure: Failed to set remote offer sdp: Called with SDP without SDES crypto.

这里是媒体限制,我正在尝试使用

sdpMediaConstraints = new MediaConstraints();
sdpMediaConstraints.mandatory.add(new MediaConstraints.KeyValuePair("OfferToReceiveAudio", "true"));        
sdpMediaConstraints.mandatory.add(new MediaConstraints.KeyValuePair("OfferToReceiveVideo", "true"));
sdpMediaConstraints.optional.add(new MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true"));

这里是代码设置远程说明

    pc.setRemoteDescription(sdpObserver, new SessionDescription(
            SessionDescription.Type.OFFER, description.toString()));

【问题讨论】:

你很可能遇到了这个错误(见评论 #38)code.google.com/p/webrtc/issues/detail?id=2253 我已经从trunk构建了最新版本的libjingle,但是没有帮助。 目前还没有解决办法。您可以关注(星标)该错误以了解何时有可用的修复。 看起来 chrome 需要 sdes 加密密钥,但提供 dtls 指纹就可以了。 【参考方案1】:

问题已通过对 Peerconnection 对象的创建添加约束来解决。

DtlsSrtpKeyAgreement:true


pc = factory.createPeerConnection(iceServers, constraints, pcObserver);

其中 constraints 具有 DtlsSrtpKeyAgreement:true 键值。

【讨论】:

以上是关于无法设置远程提供 sdp:使用没有 SDES 加密的 SDP 调用的主要内容,如果未能解决你的问题,请参考以下文章

WebRTC:对多个对等连接使用相同的 SDP?

远程桌面错误:由于安全设置错误,客户端无法连接到远程计算机

ssh密码正确后没有提示

将图像编码为 h264 和 rtp 输出:没有 sprop-parameter-sets 的 SDP 文件无法播放

如何处理C++编译webrtc无法成功获取sdp的问题?

为什么软件定义边界(SDP)更适合远程访问应用场景?