Closed kalan4iki closed 7 months ago
Please specify how to reproduce. Is this when activating the camera? Or when consuming media?
When consuming microphone
Can you please enable debug logs and paste here the failing remote SDP? You should see a log line before the error with content "setRemoteDescription()" and the full SDP.
mediasoup-client:Chrome55 receive() | calling pc.setRemoteDescription() [offer:
v=0
o=mediasoup-client 10000 4 IN IP4 0.0.0.0
s=-
t=0 0
a=ice-lite
a=fingerprint:sha-256 04:B1:4E:DB:7D:0A:4B:79:C6:6E:66:36:47:EF:27:2D:56:FE:4B:98:7C:C0:68:2B:FC:CB:F1:52:4E:19:7D:1D
a=msid-semantic: WMS *
a=group:BUNDLE audio
m=audio 7 UDP/TLS/RTP/SAVPF 100
c=IN IP4 127.0.0.1
a=rtpmap:100 opus/48000/2
a=fmtp:100 maxplaybackrate=48000;stereo=1;useinbandfec=1;sprop-stereo=1;usedtx=1
a=rtcp-fb:100 nack
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:4 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:10 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:13 http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time
a=setup:actpass
a=mid:audio
a=sendonly
a=ice-ufrag:47fjmsj2cl7lnij85kkcv9ov1icm8fgh
a=ice-pwd:q1l9wmx8qb1vdkpuneyi932dz8qk6xqz
a=candidate:udpcandidate 1 udp 1076302079 192.168.1.81 10009 typ host
a=end-of-candidates
a=ice-options:renomination
a=ssrc:861658784 cname:{1f5eee17-586b-410a-b230-86175184b39b}
a=ssrc:861658784 msid:q3mhSYAR-4nc1mIzAAAD-videoType 361ed17e-857f-4d7f-95a7-1af0831fba5e
a=ssrc:253623017 cname:{1f5eee17-586b-410a-b230-86175184b39b}
a=ssrc:253623017 msid:q3mhSYAR-4nc1mIzAAAD-videoType 48b5376d-5f75-4dc2-a624-14272804f565
a=rtcp-mux
a=rtcp-rsize
a=ssrc:861658784 cname:{1f5eee17-586b-410a-b230-86175184b39b} a=ssrc:861658784 msid:q3mhSYAR-4nc1mIzAAAD-videoType 361ed17e-857f-4d7f-95a7-1af0831fba5e a=ssrc:253623017 cname:{1f5eee17-586b-410a-b230-86175184b39b} a=ssrc:253623017 msid:q3mhSYAR-4nc1mIzAAAD-videoType 48b5376d-5f75-4dc2-a624-14272804f565
So this is wrong, there should be only one ssrc value. Issue probably triggered by the usage of NACK for OPUS. Will check later.
But if in the meantime you could log and paste here the parameters given to recvTransport.consume()
that would help.
{
producerId: '78e71dbf-9b2d-4a57-85e5-125dcac50fa6',
rtpCapabilities: {
codecs: [
{
kind: 'audio',
mimeType: 'audio/opus',
clockRate: 48000,
channels: 2,
rtcpFeedback: [
{ type: 'nack', parameter: '' },
{ type: 'transport-cc', parameter: '' },
],
parameters: {},
preferredPayloadType: 100,
},
{
kind: 'video',
mimeType: 'video/VP8',
clockRate: 90000,
rtcpFeedback: [
{ type: 'nack', parameter: '' },
{ type: 'nack', parameter: 'pli' },
{ type: 'ccm', parameter: 'fir' },
{ type: 'goog-remb', parameter: '' },
{ type: 'transport-cc', parameter: '' },
],
parameters: { 'x-google-start-bitrate': 2000 },
preferredPayloadType: 101,
},
{
kind: 'video',
mimeType: 'video/rtx',
preferredPayloadType: 102,
clockRate: 90000,
parameters: { apt: 101 },
rtcpFeedback: [],
},
],
headerExtensions: [
{
kind: 'audio',
uri: 'urn:ietf:params:rtp-hdrext:sdes:mid',
preferredId: 1,
preferredEncrypt: false,
direction: 'sendrecv',
},
{
kind: 'video',
uri: 'urn:ietf:params:rtp-hdrext:sdes:mid',
preferredId: 1,
preferredEncrypt: false,
direction: 'sendrecv',
},
{
kind: 'video',
uri: 'urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id',
preferredId: 2,
preferredEncrypt: false,
direction: 'recvonly',
},
{
kind: 'video',
uri: 'urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id',
preferredId: 3,
preferredEncrypt: false,
direction: 'recvonly',
},
{
kind: 'audio',
uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time',
preferredId: 4,
preferredEncrypt: false,
direction: 'sendrecv',
},
{
kind: 'video',
uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time',
preferredId: 4,
preferredEncrypt: false,
direction: 'sendrecv',
},
{
kind: 'audio',
uri: 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01',
preferredId: 5,
preferredEncrypt: false,
direction: 'recvonly',
},
{
kind: 'video',
uri: 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01',
preferredId: 5,
preferredEncrypt: false,
direction: 'sendrecv',
},
{
kind: 'video',
uri: 'http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07',
preferredId: 6,
preferredEncrypt: false,
direction: 'sendrecv',
},
{
kind: 'video',
uri: 'urn:ietf:params:rtp-hdrext:framemarking',
preferredId: 7,
preferredEncrypt: false,
direction: 'sendrecv',
},
{
kind: 'audio',
uri: 'urn:ietf:params:rtp-hdrext:ssrc-audio-level',
preferredId: 10,
preferredEncrypt: false,
direction: 'sendrecv',
},
{
kind: 'video',
uri: 'urn:3gpp:video-orientation',
preferredId: 11,
preferredEncrypt: false,
direction: 'sendrecv',
},
{
kind: 'video',
uri: 'urn:ietf:params:rtp-hdrext:toffset',
preferredId: 12,
preferredEncrypt: false,
direction: 'sendrecv',
},
{
kind: 'audio',
uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time',
preferredId: 13,
preferredEncrypt: false,
direction: 'sendrecv',
},
{
kind: 'video',
uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time',
preferredId: 13,
preferredEncrypt: false,
direction: 'sendrecv',
},
],
},
appData: {
type: 'audioType',
peer: {
id: 'BBYFwfgI7raO-OK9AAAD',
data: {
user: {
color: '#0c57b9',
first_name: 'A',
id: 'ff87eb78-efc2-4b9e-a12e-2072f5091ed1',
last_name: 'Admin',
middle_name: 'D',
online: true,
full_name: 'Admin A D',
last_online: 'None',
username: 'admin_user',
external_id: '6b80fed3-bc39-4e35-a19d-de5c07057fe7',
email: 'admin_user@quarta.su',
token:
'CC3CB0A1ED456A4CDF9EA287587AFE3CE2F7ADA1958C5E1856EC50888F228500',
},
custom_id: 'ff87eb78-efc2-4b9e-a12e-2072f5091ed1',
},
connected_at: 1707909679346,
session_id: '6d57d9c9-badf-46d5-a8d1-f03829cb9a7e',
disconnected_at: null,
custom_id: 'ff87eb78-efc2-4b9e-a12e-2072f5091ed1',
},
},
enableRtx: true,
paused: false,
}
Sorry, I meant in mediasoup-client side.
{ "id": "a1e93d9c-7003-4082-9f6e-41cae71554d5", "producerId": "8968bbe3-2ff0-4a16-bfea-b2bdd977f6ae", "kind": "audio", "rtpParameters": { "codecs": [ { "mimeType": "audio/opus", "payloadType": 100, "clockRate": 48000, "channels": 2, "parameters": { "maxplaybackrate": 48000, "stereo": 1, "useinbandfec": 1, "sprop-stereo": 1, "usedtx": 1 }, "rtcpFeedback": [ { "type": "nack", "parameter": "" } ] } ], "headerExtensions": [ { "uri": "urn:ietf:params:rtp-hdrext:sdes:mid", "id": 1, "encrypt": false, "parameters": {} }, { "uri": "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time", "id": 4, "encrypt": false, "parameters": {} }, { "uri": "urn:ietf:params:rtp-hdrext:ssrc-audio-level", "id": 10, "encrypt": false, "parameters": {} }, { "uri": "http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time", "id": 13, "encrypt": false, "parameters": {} } ], "encodings": [ { "ssrc": 251983012 } ], "rtcp": { "cname": "{acc4f34c-9116-40b7-b9af-16eb21200aa7}", "reducedSize": true }, "mid": "2" }, "appData": { "type": "audioType", "peer": { "id": "16WTY-U6COCia3CAAAAD", "data": { "user": { "id": "ff87eb78-efc2-4b9e-a12e-2072f5091ed1", "external_id": "6b80fed3-bc39-4e35-a19d-de5c07057fe7", "first_name": "A", "last_name": "Admin", "middle_name": "D", "email": "admin_user@quarta.su", "username": "admin_user", "online": true, "last_online": null, "full_name": "Admin A D", "token": "CC3CB0A1ED456A4CDF9EA287587AFE3CE2F7ADA1958C5E1856EC50888F228500", "color": "#0c57b9" }, "custom_id": "ff87eb78-efc2-4b9e-a12e-2072f5091ed1" }, "connected_at": 1707910313317, "session_id": "6d57d9c9-badf-46d5-a8d1-f03829cb9a7e", "disconnected_at": null, "custom_id": "ff87eb78-efc2-4b9e-a12e-2072f5091ed1" } }, "streamId": "16WTY-U6COCia3CAAAAD-videoType" }
Thanks. The bug is in mediasoup-client when calling consume() with OPUS codec and enableRtx:true. Will fix soon.
I cannot reproduce the issue with very similar settngs and Chrome 121.0.6167.184. The remote SDP that mediasoup-client generates only has a a=ssrc
line as expected.
v=0
o=mediasoup-client 10000 2 IN IP4 0.0.0.0
s=-
t=0 0
a=ice-lite
a=fingerprint:sha-224 3F:C5:76:3A:23:DA:9D:D1:90:BB:93:2D:74:D2:C6:98:9A:C8:BB:03:00:12:68:9B:E6:D6:5F:D8
a=msid-semantic: WMS *
a=group:BUNDLE datachannel 0
m=application 7 UDP/DTLS/SCTP webrtc-datachannel
c=IN IP4 127.0.0.1
a=setup:actpass
a=mid:datachannel
a=ice-ufrag:87ist39j6rg9sosjdgrp60y43ohyltpc
a=ice-pwd:ypw2jlvh4xyzqie9ralboqk6l6b0r3z6
a=candidate:udpcandidate 1 udp 1076302079 192.168.1.38 44444 typ host
a=candidate:tcpcandidate 1 tcp 1076276479 192.168.1.38 44444 typ host tcptype passive
a=end-of-candidates
a=ice-options:renomination
a=sctp-port:5000
a=max-message-size:262144
m=audio 7 UDP/TLS/RTP/SAVPF 100
c=IN IP4 127.0.0.1
a=rtpmap:100 opus/48000/2
a=fmtp:100 minptime=10;useinbandfec=1;sprop-stereo=1;usedtx=1
a=rtcp-fb:100 nack
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:4 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:10 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=setup:actpass
a=mid:0
a=msid:ygestolh-mic-webcam 8caa1fcb-0822-4f02-9bb1-4ac03a97649b
a=sendonly
a=ice-ufrag:87ist39j6rg9sosjdgrp60y43ohyltpc
a=ice-pwd:ypw2jlvh4xyzqie9ralboqk6l6b0r3z6
a=candidate:udpcandidate 1 udp 1076302079 192.168.1.38 44444 typ host
a=candidate:tcpcandidate 1 tcp 1076276479 192.168.1.38 44444 typ host tcptype passive
a=end-of-candidates
a=ice-options:renomination
a=ssrc:434378758 cname:yD9jP5w0Yl4NDece
a=rtcp-mux
a=rtcp-rsize
But now I see that you are using Chrome55
SUPER OLD handler, why? Are you calling device = new Device({ handlerName: 'Chrome55' })
? and why?
mediasoup-client:Chrome55 receive() | calling pc.setRemoteDescription()
Closing since the bug is invalid. Chrome55
handler doesn't work on Chrome 121 because Chrome55
mediasoup-client handler uses Plan-B which is no longer available in modern Chrome versions.
Bug Report
Your environment
Issue description
The problem with the new chrome update is reproduced even on the demo:
DOMException: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote offer sdp: Media section has more than one track specified with a=ssrc lines which is not supported with Unified Plan.