gpt4 book ai didi

android - 构造失败 'RTCSessionDescription' : parameter 1 ('descriptionInitDict' ) is not an object

转载 作者:行者123 更新时间:2023-12-05 00:22:01 26 4
gpt4 key购买 nike

我正在尝试在 Android 和 Chrome 上的 Web 应用程序之间进行电话 session 。当 Android 将优惠发送到 Web 应用程序时,我在 Chrome 控制台上收到以下错误:

构造“RTCSessionDescription”失败:参数 1(“descriptionInitDict”)不是对象。

这是屏幕截图:

enter image description here

在 Android 上,我有这样的代码:

PeerConnectionFactory.initializeAndroidGlobals(listener, true, true,
true, mEGLcontext);

这就是我创建对等连接对象的方式:

this.pc = factory.createPeerConnection(RTCConfig.getIceServer(), RTCConfig.getMediaConstraints(), this);

RTCConfig.getMediaConstraints()函数定义如下:

public static MediaConstraints getMediaConstraints(){
// Initialize PeerConnection
MediaConstraints pcMediaConstraints = new MediaConstraints();
pcMediaConstraints.optional.add(new MediaConstraints.KeyValuePair(
"DtlsSrtpKeyAgreement", "true"));
pcMediaConstraints.mandatory.add(new MediaConstraints.KeyValuePair(
"OfferToReceiveAudio", "true"));
pcMediaConstraints.mandatory.add(new MediaConstraints.KeyValuePair(
"OfferToReceiveVideo", "true"));

return pcMediaConstraints;
}

RTCConfig.getICEServer()函数定义为:

public static LinkedList<PeerConnection.IceServer> getIceServer(){ 
// Initialize ICE server list
LinkedList<PeerConnection.IceServer> iceServers = new LinkedList<PeerConnection.IceServer>();
iceServers.add(new PeerConnection.IceServer("stun:stun.l.google.com:19302"));
return iceServers;
}

在 Web 应用程序上,我以这种方式创建对等连接对象:

var pc = new RTCPeerConnection(
{'iceServers': [
createIceServer(isChrome
? 'stun:stun.l.google.com:19302'
: 'stun:23.21.150.121', null, null)
]},
{optional: [ {"DtlsSrtpKeyAgreement": true}]});

这是 Web 应用程序处理优惠的方式:

pc.setRemoteDescription(new RTCSessionDescription(data.sdp), function () {
$log.debug('Setting remote description by offer');
pc.createAnswer(function (sdp) {
pc.setLocalDescription(sdp);
socket.emit('msg', { by: currentId, to: data.by, sdp: sdp, type: 'answer' });
}, function (e) {
$log.error(e);
});
}, function (e) {
$log.error(e);
});

网络到网络之间的电话 session 运行良好。当 Android 将优惠发送到 Web 应用程序时,它不起作用。此外,当 Web 将优惠发送到 android 时,不会调用 SdpObserver 的 onCreateSuccess(final SessionDescription sdp)。

我在互联网上找不到此错误的解决方案。我无法理解descriptionInitDict的含义。

最佳答案

浏览器端的data.sdp是什么类型?如果它是一个字符串,我认为它是基于你给它的名称,那就是问题所在。您应该传递一个具有两个属性的对象:typesdp。看看官方规范here

关于android - 构造失败 'RTCSessionDescription' : parameter 1 ('descriptionInitDict' ) is not an object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33193631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com