webrtcsdpapprtcpeer-connection

What's missing in Answer SDP (From web browser to android device)


I've customized Apprtc project. i can call from an user and other user can answer call or reject call

When I call from android to web browser, I can't See video source of web browser in android device but I can see video source of android in web browser only.

Web browser version: Chrome 58 (Desktop version) Android version: Marshmallow

Offer SDP: (From Android)

v=0 o=- 7916385280226465055 2 IN IP4 127.0.0.1

s=-

t=0 0

a=group:BUNDLE audio video

a=msid-semantic: WMS ARDAMS___

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

c=IN IP4 0.0.0.0

a=rtcp:9 IN IP4 0.0.0.0

a=ice-ufrag:xKDP

a=ice-pwd:/hAtH4MAzGA/If6Fn+sT6Okj

a=ice-options:renomination

a=fingerprint: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=setup:actpass

a=mid:audio

a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level

a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time

a=sendrecv

a=rtcp-mux

a=rtpmap:111 opus/48000/2

a=rtcp-fb:111 transport-cc

a=fmtp:111 minptime=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 telephone-event/8000

a=ssrc:1281015102 cname:wYjcft96aVDGkQzC

a=ssrc:1281015102 msid:ARDAMS___ ARDAMSa0

a=ssrc:1281015102 mslabel:ARDAMS___

a=ssrc:1281015102 label:ARDAMSa0

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

c=IN IP4 0.0.0.0

a=rtcp:9 IN IP4 0.0.0.0

a=ice-ufrag:xKDP

a=ice-pwd:/hAtH4MAzGA/If6Fn+sT6Okj

a=ice-options:renomination

a=fingerprint: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=setup:actpass

a=mid:video

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

a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time

a=extmap:4 urn:3gpp:video-orientation

a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01

a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay

a=sendrecv

a=rtcp-mux

a=rtcp-rsize

a=rtpmap:100 VP8/90000

a=rtcp-fb:100 ccm fir

a=rtcp-fb:100 nack

a=rtcp-fb:100 nack pli

a=rtcp-fb:100 goog-remb

a=rtcp-fb:100 transport-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 transport-cc

a=rtpmap:116 red/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-group:FID 2034101263 3486873766

a=ssrc:2034101263 cname:wYjcft96aVDGkQzC

a=ssrc:2034101263 msid:ARDAMS___ ARDAMSv0

a=ssrc:2034101263 mslabel:ARDAMS___

a=ssrc:2034101263 label:ARDAMSv0

a=ssrc:3486873766 cname:wYjcft96aVDGkQzC

a=ssrc:3486873766 msid:ARDAMS___ ARDAMSv0

a=ssrc:3486873766 mslabel:ARDAMS___

a=ssrc:3486873766 label:ARDAMSv0

Answer SDP: (From Web Browser)

v=0

o=mozilla...THIS_IS_SDPARTA-52.0.2 6548308332703463210 0 IN IP4 0.0.0.0

s=-

t=0 0

a=fingerprint: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=group:BUNDLE audio video

a=ice-options:trickle

a=msid-semantic:WMS *

m=audio 9 UDP/TLS/RTP/SAVPF 111 126

c=IN IP4 0.0.0.0

a=recvonly

a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level

a=fmtp:111 maxplaybackrate=48000;stereo=1;useinbandfec=1

a=fmtp:126 0-15

a=ice-pwd:8a4fad1c837809d3ee952922dbe2b927

a=ice-ufrag:ab799d79

a=mid:audio

a=rtcp-mux

a=rtpmap:111 opus/48000/2

a=rtpmap:126 telephone-event/8000/1

a=setup:active

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

m=video 9 UDP/TLS/RTP/SAVPF 100

c=IN IP4 0.0.0.0

a=recvonly

a=fmtp:100 max-fs=12288;max-fr=60

a=ice-pwd:8a4fad1c837809d3ee952922dbe2b927

a=ice-ufrag:ab799d79

a=mid:video

a=rtcp-fb:100 nack

a=rtcp-fb:100 nack pli

a=rtcp-fb:100 ccm fir

a=rtcp-fb:100 goog-remb

a=rtcp-mux

a=rtpmap:100 VP8/90000

a=setup:active

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

In peerconnection.cc current_tracks variable Not be filled:

void PeerConnection::UpdateRemoteStreamsList(
    const cricket::StreamParamsVec& streams,
    bool default_track_needed,
    cricket::MediaType media_type,
    StreamCollection* new_streams) {

  TrackInfos* current_tracks = GetRemoteTracks(media_type);

  // Find removed tracks. I.e., tracks where the track id or ssrc don't match
  // the new StreamParam.
  auto track_it = current_tracks->begin();
  while (track_it != current_tracks->end()) {

Solution

  • Your browser SDP has a=recvonly attribute which means local stream is not added to your Peerconnection. If your browser is sending audio/video track to remote and wants to receive remote streams then it should have a=sendrec in AnswerSDP.