There’s something fishy with the output though. It’s definitely not complete as the terminating ] character is not there.
Seems like android logging doesn’t really like strings longer than 1023. Finally, here’s the full SDP:
[offer:v=0
o=- 5457277626985114896 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic: WMS
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:BaxM
a=ice-pwd:u2hP3RFlPwkWkbM2kNCpl683
a=ice-options:trickle
a=fingerprint:sha-256 4F:4A:E1:88:A2:58:E2:57:CC:82:4F:12:FD:D2:78:9F:6C:BA:E3:6F:1F:D9:E7:56:62:B1:CE:EA:15:74:F2:7F
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:- 3beaffea-365c-430d-8431-e8dd599bce2d
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:104 IS
AC/32000
a=rtpmap:9 G722/8000
a=rtpmap:102 ILBC/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:197478349 cname:kZ3ZPJwans9DPyCS
a=ssrc:197478349 msid:- 3beaffea-365c-430d-8431-e8dd599bce2d
a=ssrc:197478349 mslabel:-
a=ssrc:197478349 label:3beaffea-365c-430d-8431-e8dd599bce2d
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 127 121 125 120 124 107 108 109 123 119 122
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:BaxM
a=ice-pwd:u2hP3RFlPwkWkbM2kNCpl683
a=ice-options:trickle
a=fingerprint:sha-256 4F:4A:E1:88:A2:58:E2:57:CC:82:4F:12:FD:D2:78:9F:6C:BA:E3:6F:1F:D9:E7:56:62:B1:CE:EA:15:74:F2:7F
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:13 docs/native-code/rtp-hdrext/abs-send-time - src - Git at Google
a=extmap:12 urn:3gpp:video-orientation
a=e
xtmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:11 docs/native-code/rtp-hdrext/playout-delay - src - Git at Google
a=extmap:6 docs/native-code/rtp-hdrext/video-content-type - src - Git at Google
a=extmap:7 docs/native-code/rtp-hdrext/video-timing - src - Git at Google
a=extmap:8 draft-ietf-avtext-framemarking-07
a=extmap:9 docs/native-code/rtp-hdrext/color-space - src - Git at Google
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:- 07d9def7-75b7-448e-8fa7-140eb342e0f9
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=rtpmap:98 VP9/90000
a=rtcp-fb:98 goog-remb
a=rtcp-fb:98 transport-cc
a=rtcp-fb:98 ccm fir
a=rtcp-fb:98 nack
a=rtcp-fb:98 nack pli
a=fmt
p:98 profile-id=0
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=98
a=rtpmap:100 VP9/90000
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 transport-cc
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=fmtp:100 profile-id=2
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=100
a=rtpmap:127 H264/90000
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=rtcp-fb:127 ccm fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:121 rtx/90000
a=fmtp:121 apt=127
a=rtpmap:125 H264/90000
a=rtcp-fb:125 goog-remb
a=rtcp-fb:125 transport-cc
a=rtcp-fb:125 ccm fir
a=rtcp-fb:125 nack
a=rtcp-fb:125 nack pli
a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
a=rtpmap:120 rtx/90000
a=fmtp:120 apt=125
a=rtpmap:124 H264/90000
a=rtcp-fb:124 goog-remb
a=rtcp-fb:124 transport-cc
a=rtcp-fb:124 ccm fir
a=rtcp-fb:124 nack
a=rtcp-fb:124 nack pli
a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;pro
file-level-id=42e01f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=124
a=rtpmap:108 H264/90000
a=rtcp-fb:108 goog-remb
a=rtcp-fb:108 transport-cc
a=rtcp-fb:108 ccm fir
a=rtcp-fb:108 nack
a=rtcp-fb:108 nack pli
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:123 red/90000
a=rtpmap:119 rtx/90000
a=fmtp:119 apt=123
a=rtpmap:122 ulpfec/90000
a=ssrc-group:FID 3557271638 2368792470
a=ssrc:3557271638 cname:kZ3ZPJwans9DPyCS
a=ssrc:3557271638 msid:- 07d9def7-75b7-448e-8fa7-140eb342e0f9
a=ssrc:3557271638 mslabel:-
a=ssrc:3557271638 label:07d9def7-75b7-448e-8fa7-140eb342e0f9
a=ssrc:2368792470 cname:kZ3ZPJwans9DPyCS
a=ssrc:2368792470 msid:- 07d9def7-75b7-448e-8fa7-140eb342e0f9
a=ssrc:2368792470 mslabel:-
a=ssrc:2368792470 label:07d9def7-75b7-448e-8fa7-140eb342e0f9
]
Device::GetRtpCapabilities()
gives the computed capabilities after matching native ones and remote (Router) ones.
Please log private this->extendedRtpCapabilities
generated in Device::Load()
.
This is the method with more debug messages:
void Device::Load(const json& routerRtpCapabilities)
{
MSC_TRACE();if (this->loaded)
throw Exception(“Already loaded”);
else if (!routerRtpCapabilities.is_object())
throw Exception(“Missing routerRtpCapabilities”);// Get Native RTP capabilities.
auto nativeRtpCapabilities = Handler::GetNativeRtpCapabilities();// Get extended RTP capabilities.
this->extendedRtpCapabilities =
ortc::getExtendedRtpCapabilities(nativeRtpCapabilities, routerRtpCapabilities);MSC_DEBUG(“nativeRtpCapabilities: %s”, nativeRtpCapabilities.dump().c_str()); // added for debug
MSC_DEBUG(“routerRtpCapabilities: %s”, routerRtpCapabilities.dump().c_str()); // added for debug
MSC_DEBUG(“this->extendedRtpCapabilities: %s”, this->extendedRtpCapabilities.dump().c_str()); // added for debug// Check whether we can produce audio/video.
this->canProduceByKind[“audio”] = ortc::canSend(“audio”, this->extendedRtpCapabilities);
this->canProduceByKind[“video”] = ortc::canSend(“video”, this->extendedRtpCapabilities);// Generate our receiving RTP capabilities for receiving media.
this->recvRtpCapabilities = ortc::getRecvRtpCapabilities(this->extendedRtpCapabilities);MSC_DEBUG(“succeeded”);
this->loaded = true;
}
And this is the output:
D/mediasoupclient-jni: [DEBUG] Device::Load() | nativeRtpCapabilities: {“codecs”:[{“channels”:1,“clockRate”:8000,“kind”:“audio”,“mimeType”:“audio/PCMU”,“parameters”:{},“preferredPayloadType”:0,“rtcpFeedback”:},{“channels”:1,“clockRate”:8000,“kind”:“audio”,“mimeType”:“audio/PCMA”,“parameters”:{},“preferredPayloadType”:8,“rtcpFeedback”:},{“channels”:1,“clockRate”:8000,“kind”:“audio”,“mimeType”:“audio/G722”,“parameters”:{},“preferredPayloadType”:9,“rtcpFeedback”:},{“channels”:1,“clockRate”:8000,“kind”:“audio”,“mimeType”:“audio/CN”,“parameters”:{},“preferredPayloadType”:13,“rtcpFeedback”:},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/VP8”,“parameters”:{},“preferredPayloadType”:96,“rtcpFeedback”:[{“type”:“goog-remb”},{“type”:“transport-cc”},{“parameter”:“fir”,“type”:“ccm”},{“type”:“nack”},{“parameter”:“pli”,“type”:“nack”}]},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/rtx”,“parameters”:{“apt”:96},“preferredPayloadType”:97,“rtcpFeedback”:},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/VP9”,“parameters”:{“profile-id”:0},“preferredPayloadType”:98,“rtcpFeedback”:[{“type”:“goog-remb”},{“type”:“transport-cc”},{“parameter”:“fir”,“type”:“ccm”},{“type”:“nack”},{“parameter”:“pli”,“type”:“nack”}]},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/rtx”,“parameters”:{“apt”:98},“preferredPayloadType”:99,“rtcpFeedback”:},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/VP9”,“parameters”:{“profile-id”:2},“preferredPayloadType”:100,“rtcpFeedback”:[{“type”:“goog-remb”},{“type”:“transport-cc”},{“parameter”:“fir”,“type”:“ccm”},{“type”:“nack”},{“parameter”:“pli”,“type”:“nack”}]},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/rtx”,“parameters”:{“apt”:100},“preferredPayloadType”:101,“rtcpFeedback”:},{“channels”:1,“clockRate”:8000,“kind”:“audio”,“mimeType”:“audio/ILBC”,“parameters”:{},“preferredPayloadType”:102,“rtcpFeedback”:},{“channels”:1,“clockRate”:16000,“kind”:“audio”,“mimeType”:“audio/ISAC”,“parameters”:{},“preferredPayloadType”:103,“rtcpFeedback”:},{“channels”:1,“clockRate”:32000,“kind”:“audio”,“mimeType”:“D/mediasoupclient-jni: audio/ISAC”,“parameters”:{},“preferredPayloadType”:104,“rtcpFeedback”:},{“channels”:1,“clockRate”:16000,“kind”:“audio”,“mimeType”:“audio/CN”,“parameters”:{},“preferredPayloadType”:105,“rtcpFeedback”:},{“channels”:1,“clockRate”:32000,“kind”:“audio”,“mimeType”:“audio/CN”,“parameters”:{},“preferredPayloadType”:106,“rtcpFeedback”:},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/rtx”,“parameters”:{“apt”:124},“preferredPayloadType”:107,“rtcpFeedback”:},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/H264”,“parameters”:{“level-asymmetry-allowed”:1,“packetization-mode”:0,“profile-level-id”:“42e01f”},“preferredPayloadType”:108,“rtcpFeedback”:[{“type”:“goog-remb”},{“type”:“transport-cc”},{“parameter”:“fir”,“type”:“ccm”},{“type”:“nack”},{“parameter”:“pli”,“type”:“nack”}]},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/rtx”,“parameters”:{“apt”:108},“preferredPayloadType”:109,“rtcpFeedback”:},{“channels”:1,“clockRate”:48000,“kind”:“audio”,“mimeType”:“audio/telephone-event”,“parameters”:{},“preferredPayloadType”:110,“rtcpFeedback”:},{“channels”:2,“clockRate”:48000,“kind”:“audio”,“mimeType”:“audio/opus”,“parameters”:{“minptime”:10,“useinbandfec”:1},“preferredPayloadType”:111,“rtcpFeedback”:[{“type”:“transport-cc”}]},{“channels”:1,“clockRate”:32000,“kind”:“audio”,“mimeType”:“audio/telephone-event”,“parameters”:{},“preferredPayloadType”:112,“rtcpFeedback”:},{“channels”:1,“clockRate”:16000,“kind”:“audio”,“mimeType”:“audio/telephone-event”,“parameters”:{},“preferredPayloadType”:113,“rtcpFeedback”:},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/rtx”,“parameters”:{“apt”:123},“preferredPayloadType”:119,“rtcpFeedback”:},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/rtx”,“parameters”:{“apt”:125},“preferredPayloadType”:120,“rtcpFeedback”:},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/rtx”,“parameters”:{“apt”:127},“preferredPayloadType”:121,“rtcpFeedback”:},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/ulpfec”,“parameters”:{},“preferredPayloadType”:122,“rtcpFeedback”:},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/red”,“parameters”:{},“preferredPayloadType”:123,“rtcpFeedback”:},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/H264”,“parameters”:{“level-asymmetry-allowed”:1,“packetization-mode”:1,“profile-level-id”:“42e01f”},“preferredPayloadType”:124,“rtcpFeedback”:[{“type”:“goog-remb”},{“type”:“transport-cc”},{“parameter”:“fir”,“type”:“ccm”},{“type”:“nack”},{“parameter”:“pli”,“type”:“nack”}]},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/H264”,“parameters”:{“level-asymmetry-allowed”:1,“packetization-mode”:0,“profile-level-id”:“42001f”},“preferredPayloadType”:125,“rtcpFeedback”:[{“type”:“goog-remb”},{“type”:“transport-cc”},{“parameter”:“fir”,“type”:“ccm”},{“type”:“nack”},{“parameter”:“pli”,“type”:“nack”}]},{“channels”:1,“clockRate”:8000,“kind”:“audio”,“mimeType”:“audio/telephone-event”,“parameters”:{},“preferredPayloadType”:126,“rtcpFeedback”:},{“clockRate”:90000,“kind”:“video”,“mimeType”:“video/H264”,“parameters”:{“level-asymmetry-allowed”:1,“packetization-mode”:1,“profile-level-id”:“42001f”},“preferredPayloadType”:127,“rtcpFeedback”:[{“type”:“goog-remb”},{“type”:“transport-cc”},{“parameter”:“fir”,“type”:“ccm”},{“type”:“nack”},{“parameter”:“pli”,“type”:“nack”}]}],“fecMechanisms”:,“headerExtensions”:[{“kind”:“audio”,“preferredId”:1,“uri”:“urn:ietf:params:rtp-hdrext:ssrc-audio-level”},{“kind”:“audio”,“preferredId”:2,“uri”:“http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"},{“kind”:“audio”,“preferredId”:3,“uri”:“urn:ietf:params:rtp-hdrext:sdes:mid”},{“kind”:“audio”,“preferredId”:4,“uri”:“urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id”},{“kind”:“audio”,“preferredId”:5,“uri”:“urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id”},{“kind”:“video”,“preferredId”:14,“uri”:“urn:ietf:params:rtp-hdrext:toffset”},{“kind”:“video”,“preferredId”:13,“uri”:“http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time”},{“kind”:“video”,“preferredId”:12,“uri”:“urn:3gpp:video-orientation”},{“kind”:“video”,“preferredId”:2,“uri”:“http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01”},{“kind”:“video”,“preferredId”:11,“uri”:“http://www.webrtc.org/experiments/rtp-hdrext/playout-delay”},{“kind”:“video”,“preferredId”:6,“uri”:“http://www.webrtc.org/experiments/rtp-hdrext/video-content-type”},{“kind”:“video”,“preferredId”:7,“uri”:“http://www.webrtc.org/experiments/rtp-hdrext/video-timing”},{“kind”:“video”,“preferredId”:8,“uri”:“http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07”},{“kind”:“video”,“preferredId”:9,“uri”:“http://www.webrtc.org/experiments/rtp-hdrext/color-space”},{“kind”:“video”,“preferredId”:3,“uri”:“urn:ietf:params:rtp-hdrext:sdes:mid”},{“kind”:“video”,“preferredId”:4,“uri”:“urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id”},{“kind”:“video”,“preferredId”:5,“uri”:"urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id”}]}
[DEBUG] Device::Load() | routerRtpCapabilities: {"codecs":[{"channels":1,"clockRate":90000,"kind":"video","mimeType":"video/VP8","parameters":{},"preferredPayloadType":96,"rtcpFeedback":[{"parameter":"","type":"nack"},{"parameter":"pli","type":"nack"},{"parameter":"fir","type":"ccm"},{"parameter":"","type":"goog-remb"},{"parameter":"","type":"transport-cc"}]},{"channels":1,"clockRate":90000,"kind":"video","mimeType":"video/rtx","parameters":{"apt":96},"preferredPayloadType":100,"rtcpFeedback":[]}],"headerExtensions":[{"direction":"recvonly","kind":"audio","preferredEncrypt":false,"preferredId":1,"uri":"urn:ietf:params:rtp-hdrext:sdes:mid"},{"direction":"recvonly","kind":"video","preferredEncrypt":false,"preferredId":1,"uri":"urn:ietf:params:rtp-hdrext:sdes:mid"},{"direction":"recvonly","kind":"video","preferredEncrypt":false,"preferredId":2,"uri":"urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id"},{"direction":"recvonly","kind":"video","preferredEncrypt":false,"preferredId":3,"uri":"urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"},{"direction":"sendrecv","kind":"audio","preferredEncrypt":false,"preferredId":4,"uri":"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"},{"direction":"sendrecv","kind":"video","preferredEncrypt":false,"preferredId":4,"uri":"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"},{"direction":"recvonly","kind":"audio","preferredEncrypt":false,"preferredId":5,"uri":"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"},{"direction":"sendrecv","kind":"video","preferredEncrypt":false,"preferredId":5,"uri":"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"},{"direction":"sendrecv","kind":"video","preferredEncrypt":false,"preferredId":6,"uri":"http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07"},{"direction":"sendrecv","kind":"video","preferredEncrypt":false,"preferredId":7,"uri":"urn:ietf:params:rtp-hdrext:framemarking"},{"direction":"sendrecv","kind":"audio","preferredEncrypt":false,"preferredId":10,"uri":"urn:ietf:params:rtp-hdrext:ssrc-audio-level"},{"direction":"sendrecv","kind":"video","preferredEncrypt":false,"preferredId":11,"uri":"urn:3gpp:video-orientation"},{"direction":"sendrecv","kind":"video","preferredEncrypt":false,"preferredId":12,"uri":"urn:ietf:params:rtp-hdrext:toffset"}]}
[DEBUG] Device::Load() | this->extendedRtpCapabilities: {"codecs":[],"fecMechanisms":[],"headerExtensions":[{"direction":"sendonly","kind":"audio","recvId":1,"sendId":3,"uri":"urn:ietf:params:rtp-hdrext:sdes:mid"},{"direction":"sendonly","kind":"video","recvId":1,"sendId":3,"uri":"urn:ietf:params:rtp-hdrext:sdes:mid"},{"direction":"sendonly","kind":"video","recvId":2,"sendId":4,"uri":"urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id"},{"direction":"sendonly","kind":"video","recvId":3,"sendId":5,"uri":"urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"},{"direction":null,"kind":"video","recvId":4,"sendId":13,"uri":"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"},{"direction":"sendonly","kind":"audio","recvId":5,"sendId":2,"uri":"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"},{"direction":null,"kind":"video","recvId":5,"sendId":2,"uri":"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"},{"direction":null,"kind":"video","recvId":6,"sendId":8,"uri":"http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07"},{"direction":null,"kind":"audio","recvId":10,"sendId":1,"uri":"urn:ietf:params:rtp-hdrext:ssrc-audio-level"},{"direction":null,"kind":"video","recvId":11,"sendId":12,"uri":"urn:3gpp:video-orientation"},{"direction":null,"kind":"video","recvId":12,"sendId":14,"uri":"urn:ietf:params:rtp-hdrext:toffset"}]}
What looks weird to me is this (routerRtpCapabilities):
"rtcpFeedback": [
{
"parameter": "", <------- ??
"type": "nack"
},
{
"parameter": "pli",
"type": "nack"
},
{
"parameter": "fir",
"type": "ccm"
},
{
"parameter": "", <------- ??
"type": "goog-remb"
},
{
"parameter": "", <------- ??
"type": "transport-cc"
}
]
On the server:
Array(5) [Object, Object, Object, Object, Object]
length:5
proto:Array(0) [, …]
0:Object {type: “nack”, parameter: “”}
1:Object {type: “nack”, parameter: “pli”}
2:Object {type: “ccm”, parameter: “fir”}
3:Object {type: “goog-remb”, parameter: “”}
4:Object {type: “transport-cc”, parameter: “”}
No, this is not weird. It’s ok.
It’s the channels on the video (from router). I guess it should not be present.
Why not?
In https://github.com/versatica/mediasoup/blob/v3/src/RtpParameters.ts
/**
* The number of channels supported (e.g. two for stereo). Just for audio.
* Default 1.
*/
channels?: number;
It’s ok if channels:1
for video. However not sure which versions you are using, there may have been changes regarding this recently.
Confirmed that this issue happens with libmediasoupclient 3.0.8 (latest release) and any previous version if mediasoup version is one of the latest.
Can you try libmediasoupclient v3 branch? Although I don’t know if it’s ready. @jmillan?
Setting channels to undefined on the server solved this problem.
I think you’re right, I should definitely update!
Thanks a lot for pointing out the debugging tips. It was a useful experience!
Sure, will do.
Wait a bit, there is ongoing work on it. You may try with an older version of mediasoup.
Try mediasoup 3.4.0 which was previous to those changes.
Thanks!
I have bellow code.
mMediasoupDevice.createRecvTransport(recvTransportListener, id, iceParameters, iceCandidates, dtlsParameters, null);
private RecvTransport.Listener recvTransportListener =
new RecvTransport.Listener() {
private String listenerTAG = TAG + "_RecvTrans";
@Override
public void onConnect(Transport transport, String dtlsParameters) {
Logger.e(listenerTAG, "onConnect()");
}
@Override
public void onConnectionStateChange(Transport transport, String connectionState) {
Logger.e(listenerTAG, "onConnectionStateChange: " + connectionState);
}
};
When “mMediasoupDevice.createRecvTransport” initialized it not call to “onConnect” or “onConnectionStateChange”. Can you help me haiyangwu?
Please, don’t add direct mentions.
onConnect will be called when you create your first Producer or Consumer.
Android native client can be used in unity?