Webrtc 什么';答案SDP中缺少s(从web浏览器到android设备)

Webrtc 什么';答案SDP中缺少s(从web浏览器到android设备),webrtc,sdp,apprtc,peer-connection,Webrtc,Sdp,Apprtc,Peer Connection,我已经定制了这个项目。我可以从一个用户呼叫,其他用户可以接听或拒绝呼叫 当我从android呼叫网络浏览器时,我在android设备上看不到网络浏览器的视频源,但我只能在网络浏览器上看到android的视频源 网络浏览器版本:Chrome 58(桌面版) 安卓版本:棉花糖 提供SDP:(来自Android) v=0 o=-7916385280226465055 2英寸IP4 127.0.0.1 =- t=0 a=组:捆绑音频视频 a=msid语义:WMS ARDAMS___ m=音频9 UDP/

我已经定制了这个项目。我可以从一个用户呼叫,其他用户可以接听或拒绝呼叫

当我从android呼叫网络浏览器时,我在android设备上看不到网络浏览器的视频源,但我只能在网络浏览器上看到android的视频源

网络浏览器版本:Chrome 58(桌面版) 安卓版本:棉花糖

提供SDP:(来自Android) v=0 o=-7916385280226465055 2英寸IP4 127.0.0.1

=-

t=0

a=组:捆绑音频视频

a=msid语义:WMS ARDAMS___

m=音频9 UDP/TLS/RTP/SAVPF 111 103 9 102 0 8 105 13 126

c=在IP4中为0.0.0.0

a=rtcp:IP4 0.0.0.0中的9

a=冰抹布:xKDP

a=ice pwd:/hAtH4MAzGA/If6Fn+sT6Okj

a=ice选项:重新命名

a=指纹:sha-256 35:5A:08:8D:FA:18:41:B9:A6:E2:B4:9A:A7:EE:1E:61:CA:38:BC:5B:98:9F:D1:3E:1F:51:79:C8:F3:63:00:F8

a=设置:actpass

a=中间:音频

a=extmap:1 urn:ietf:params:rtp hdrext:ssrc音频电平

a=extmap:3

a=sendrecv

a=rtcp多路复用器

a=rtpmap:111 opus/48000/2

a=rtcp fb:111传输cc

a=fmtp:111分钟=10;useinbandfec=1

a=rtpmap:103 ISAC/16000

a=rtpmap:9 G722/8000

a=rtpmap:102 ILBC/8000

a=rtpmap:0 PCMU/8000

a=rtpmap:8 PCMA/8000

a=rtpmap:105 CN/16000

a=rtpmap:13 CN/8000

a=rtpmap:126电话事件/8000

a=ssrc:1281015102 cname:wYjcft96aVDGkQzC

a=ssrc:1281015102 msid:ARDAMS_u_;ARDAMSa0

a=ssrc:1281015102 mslabel:ARDAMS___

a=ssrc:1281015102标签:ARDAMSa0

m=视频9 UDP/TLS/RTP/SAVPF 100 101 116 117 96 97 98

c=在IP4中为0.0.0.0

a=rtcp:IP4 0.0.0.0中的9

a=冰抹布:xKDP

a=ice pwd:/hAtH4MAzGA/If6Fn+sT6Okj

a=ice选项:重新命名

a=指纹:sha-256 35:5A:08:8D:FA:18:41:B9:A6:E2:B4:9A:A7:EE:1E:61:CA:38:BC:5B:98:9F:D1:3E:1F:51:79:C8:F3:63:00:F8

a=设置:actpass

a=mid:视频

a=extmap:2 urn:ietf:params:rtp hdrext:toffset

a=extmap:3

a=extmap:4 urn:3gpp:视频方向

a=extmap:5

a=extmap:6

a=sendrecv

a=rtcp多路复用器

a=rtcp rsize

a=rtpmap:100 VP8/90000

a=rtcp fb:100 ccm fir

a=rtcp fb:100纳克

a=rtcp fb:100 nack pli

a=rtcp fb:100 goog remb

a=rtcp fb:100传输cc

a=rtpmap:101 VP9/90000

a=rtcp fb:101 ccm fir

a=rtcp fb:101 nack

a=rtcp fb:101 nack pli

a=rtcp fb:101 goog remb

a=rtcp fb:101传输cc

a=rtpmap:116红色/90000

a=rtpmap:117 ulpfec/90000

a=rtpmap:96 rtx/90000

a=fmtp:96 apt=100

a=rtpmap:97 rtx/90000

a=fmtp:97 apt=101

a=rtpmap:98 rtx/90000

a=fmtp:98 apt=116

a=ssrc组:FID 2034101263 3486873766

a=ssrc:2034101263 cname:wYjcft96aVDGkQzC

a=ssrc:2034101263 msid:ARDAMS_uuu u_ARDAMSv0

a=ssrc:2034101263 mslabel:ARDAMS___

a=ssrc:2034101263标签:ARDAMSv0

a=ssrc:3486873766 cname:wYjcft96aVDGkQzC

a=ssrc:3486873766 msid:ARDAMS_uuuuu_uArdamsv0

a=ssrc:3486873766 mslabel:ARDAMS___

a=ssrc:3486873766标签:ARDAMSv0

回答SDP:(从网络浏览器) v=0

o=mozilla…这是IP4 0.0.0.0中的SDPARTA-52.0.2 6548308332703463210 0

=-

t=0

a=指纹:sha-256 E6:0F:6A:A6:35:E0:B3:8E:7A:0E:2E:20:A9:AB:0B:CA:1C:6D:33:6C:B6:D1:E4:2D:39:87:1E:93:4E:ED:BB:CF

a=组:捆绑音频视频

a=冰选项:涓流

a=msid语义:WMS*

m=音频9 UDP/TLS/RTP/SAVPF 111 126

c=在IP4中为0.0.0.0

a=再次

a=extmap:1 urn:ietf:params:rtp hdrext:ssrc音频电平

a=fmtp:111最大播放速率=48000;立体声=1;useinbandfec=1

a=fmtp:126 0-15

a=ice pwd:8a4fad1c837809d3ee952922dbe2b927

a=冰抹布:ab799d79

a=中间:音频

a=rtcp多路复用器

a=rtpmap:111 opus/48000/2

a=rtpmap:126电话事件/8000/1

a=设置:激活

a=ssrc:2269112214 cname:{b1e7d024-d327-4788-a5b1-a1b8291b5c8d}

m=视频9 UDP/TLS/RTP/SAVPF 100

c=在IP4中为0.0.0.0

a=再次

a=fmtp:100最大fs=12288;最大fr=60

a=ice pwd:8a4fad1c837809d3ee952922dbe2b927

a=冰抹布:ab799d79

a=mid:视频

a=rtcp fb:100纳克

a=rtcp fb:100 nack pli

a=rtcp fb:100 ccm fir

a=rtcp fb:100 goog remb

a=rtcp多路复用器

a=rtpmap:100 VP8/90000

a=设置:激活

a=ssrc:1613714278 cname:{b1e7d024-d327-4788-a5b1-a1b8291b5c8d}

在peerconnection.cc中,当前\u轨道变量未填充:
通过查看您的答案SDP,它不携带任何流/轨道。
可疑问题可能是,在浏览器中创建答案之前,您没有添加流。
您可以通过打开来检查PeerConnection API调用chrome://webrtc-internals/

PeerConnection API调用在浏览器/应答端应如下所示

pc = new RTCPeerConnection({"iceServers": [{"urls": "stun:stun.l.google.com:19302"}]}, 
                           {"optional": [{"DtlsSrtpKeyAgreement": true}]
        }); 

pc.setRemoteDescription(
        new RTCSessionDescription(jsep),
        function() {
            console.log(' OFFER accepted ');
        }, function(e) {
            console.log(' OFFER Failed ', e);
    });

pc.addStream(stream);

pc.createAnswer(function(answer) {
            console.log('got answer', answer);
            pc.setLocalDescription(answer, 
                    function() {
                        console.log('set local description sucesses ');
                    }, function(e) {
                        console.log('set local description failed ', e);
                    });
          // Send the answer to other user endpoint
        }, function() {
            console.log('Error: Unable to create answer');
        }, {
            'mandatory': {
                'OfferToReceiveAudio': true, 
                'OfferToReceiveVideo': true, 
            }
        });
}

因此,您的答案SDP应该包含
a=sendonly
行,而不是
a=recvonly

通过查看您的答案SDP,它不包含任何流/轨道。
可疑问题可能是,在浏览器中创建答案之前,您没有添加流。
您可以通过打开来检查PeerConnection API调用chrome://webrtc-internals/

PeerConnection API调用在浏览器/应答端应如下所示

pc = new RTCPeerConnection({"iceServers": [{"urls": "stun:stun.l.google.com:19302"}]}, 
                           {"optional": [{"DtlsSrtpKeyAgreement": true}]
        }); 

pc.setRemoteDescription(
        new RTCSessionDescription(jsep),
        function() {
            console.log(' OFFER accepted ');
        }, function(e) {
            console.log(' OFFER Failed ', e);
    });

pc.addStream(stream);

pc.createAnswer(function(answer) {
            console.log('got answer', answer);
            pc.setLocalDescription(answer, 
                    function() {
                        console.log('set local description sucesses ');
                    }, function(e) {
                        console.log('set local description failed ', e);
                    });
          // Send the answer to other user endpoint
        }, function() {
            console.log('Error: Unable to create answer');
        }, {
            'mandatory': {
                'OfferToReceiveAudio': true, 
                'OfferToReceiveVideo': true, 
            }
        });
}

因此,您的答案SDP应该包含
a=sendonly
行,而不是
a=recvonly
您的浏览器SDP具有
a=recvonly
属性,这意味着本地流不会添加到对等连接中。如果您的浏览器正在向remote发送音频/视频曲目,并且希望接收远程流,那么它在AnswerSDP中应该具有
a=sendrec

您的浏览器SDP具有
a=recvonly
属性,这意味着本地流不会添加到对等连接中。如果您的浏览器正在将音频/视频曲目发送到远程和