首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Temasys AdapterJS与Microsoft一起工作?

如何使用Temasys AdapterJS与Microsoft一起工作?
EN

Stack Overflow用户
提问于 2016-04-05 20:33:25
回答 2查看 578关注 0票数 1

我使用Temasys AdapterJS与Microsoft一起工作。有人用过吗有人能帮我吗?此代码创建了“优惠”:

代码语言:javascript
复制
function onIceCandidate() {
    if(event.candidate) {
        iceCandidates.push(event.candidate);
    } else {
        http
        .connect({
            id: id,
            desc: getLocalDescription(),
            ice: getIceCandidates()
        })
        .then(function(data) {
            pc.setRemoteDescription(new SessionDescription(data.desc));
            array.forEach(data.ice, function(ice) {
                pc.addIceCandidate(new IceCandidate(ice));
            });
            return data;
        })
        .catch(onError);
    }
}

有两个候选人的候选人:1 udp 1 0.0.0.0 9类型endOfCandidates‘在其候选人中。当我试图创建答案时,我会收到以下错误:DOMException: Error processing ICE候选人

有谁知道为什么会增加这两位候选人吗?

社民党的提议形成如下:

代码语言:javascript
复制
v=0
o=thisisadapterortc 8169639915646943137 2 IN IP4 127.0.0.1
s=-
t=0 0
m=audio 9 UDP/TLS/RTP/SAVPF 104 9 106 0 8 103 97 13 118 101
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=rtpmap:104 SILK/16000
a=rtcp-fb:104 x-message app send:dsh recv:dsh
a=rtpmap:9 G722/8000
a=rtcp-fb:9 x-message app send:dsh recv:dsh
a=rtpmap:106 OPUS/48000/2
a=rtcp-fb:106 x-message app send:dsh recv:dsh
a=rtpmap:0 PCMU/8000
a=rtcp-fb:0 x-message app send:dsh recv:dsh
a=rtpmap:8 PCMA/8000
a=rtcp-fb:8 x-message app send:dsh recv:dsh
a=rtpmap:103 SILK/8000
a=rtcp-fb:103 x-message app send:dsh recv:dsh
a=rtpmap:97 RED/8000
a=rtpmap:13 CN/8000
a=rtpmap:118 CN/16000
a=rtpmap:101 telephone-event/8000
a=rtcp-mux
a=ice-ufrag:IYVg
a=ice-pwd:bdVmapCbC5RoHpUEZV/alNHC
a=setup:actpass
a=fingerprint:sha-256 89:F6:17:47:CA:69:2E:8A:73:DD:05:91:68:9B:0A:61:72:2A:9D:CE:07:61:74:9C:D6:7A:CD:33:12:C0:72:86
a=mid:g7svev9ig3
a=recvonly
a=ssrc:1001 cname:ulxmndn6vb
m=video 9 UDP/TLS/RTP/SAVPF 122 123
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=rtpmap:122 X-H264UC/90000
a=rtcp-fb:122 x-message app send:src,x-pli recv:src,x-pli
a=rtpmap:123 x-ulpfecuc/90000
a=rtcp-mux
a=ice-ufrag:+5BB
a=ice-pwd:RTkgr1+iK09AOSArgK5f+KV+
a=setup:actpass
a=fingerprint:sha-256 7C:1B:A4:1C:FC:96:7B:2C:8B:1D:C2:96:AA:07:33:9A:F9:13:1A:22:68:6A:57:53:02:D9:55:90:8E:80:7E:03
a=mid:35x7e5ynh9
a=recvonly
a=ssrc:3003 cname:ulxmndn6vb

如果它不包含任何候选行(如“a=candidate:.”),这是否正常?不包含任何ip地址?因为我又收到一个错误:DOMException:未能设置远程提供sdp:会话错误代码: ERROR_CONTENT。会话错误描述:未能设置远程视频描述发送参数..

应该创建答案的代码:

代码语言:javascript
复制
socket.on('add offer', function (data) {
    received_offer(data.id, data.desc);
    console.log(data.ice);
    for(var i = 0, l = data.ice.length; i < l; i++) {
        // Do I need to add these ice candidates?
        //if(false === /0\.0\.0\.0/.test(data.ice[i].candidate)) {
            pc[data.id].addIceCandidate(new ice_candidate(data.ice[i]));
        //}
    }
});

navigator.getUserMedia(
    {audio: true, video: true},
    function(s) {
        stream = s;
        document.getElementById("stream").src = URL.createObjectURL(stream);
    },
    function(error) {console.error(error)}
);

function received_offer(id, desc) {
    pc[id] = new peer_connection({iceServers: [
        {url: "stun:stun.l.google.com:19302"}
    ]});
    pc[id].onicecandidate = on_ice_candidate.bind(null, id);
    pc[id].addStream(stream);
    console.log(desc.sdp);
    pc[id].setRemoteDescription(new session_description(desc), function() {
        pc[id].createAnswer(
            create_answer_success.bind(null, id),
            create_answer_error,
            {
                "mandatory": {
                    "OfferToReceiveAudio": true,
                    "OfferToReceiveVideo": true
                },
                    "optional": [{
                    "DtlsSrtpKeyAgreement": true
                }]
            }
        );
    }, function(err) {
        console.log(err);
    });
}

function create_answer_success(id, desc) {
    pc[id].setLocalDescription(desc);
}

function create_answer_error(error) {
    console.error("create_answer_error(): error:", error);
}

function on_ice_candidate(id, event){
    if (event.candidate) {
        if(!ice[id]) ice[id] = [];
        ice[id].push(event.candidate);
    } else {
        var res = {id: id ,desc: pc[id].localDescription ,ice: ice[id]};
        socket.emit('answer', res);
    }
}

我不明白是怎么回事?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-06 05:21:41

“未能设置远程视频描述发送参数”的原因是Chrome没有正确处理未知的视频编解码器。请参见https://bugs.chromium.org/p/webrtc/issues/detail?id=4957当前,边缘和任何其他浏览器之间没有视频编解码器互操作性。

带有typ endOfCandidates的冰候选可以被安全地忽略。这是一次针对边缘的攻击。

票数 1
EN

Stack Overflow用户

发布于 2016-04-06 04:04:37

您是否试图将Edge连接到Chrome / Firefox?

当前,边缘到边缘连接只起作用。请注意,Edge对createOffer()、createAnswer()、setLocalDescription()和setRemoteDescription()使用了承诺。

关于边缘案件:

pc.createOffer(offerOptions).then(createOfferSuccessCb).catch(createOfferFailreCb);

Temasys AdapterJS从webrtc/适配器编译代码库,以跟上最新技术的发展。

有关更多信息,请参见这个github链接:https://github.com/webrtc/adapter/issues/165

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36436511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档