I tried the example and it Works fine on android. In web I can see the connected users streams but can't produce video or audio. When I join a room the console shows:
InvalidAccessError: Failed to execute 'addTrack' on 'RTCPeerConnection': A sender already exists for the track.
[Logger::WebTransport] DEBUG: constructor() [url:wss://v3demo.mediasoup.org:4443/?roomId=ikogsiaz&peerId=nIKHVQdX, options:null]
[Peer] DEBUG: constructor()
[Logger::WebTransport] DEBUG: onOpen
[Peer] DEBUG: emit "open"
[Peer] DEBUG: request() [method:getRouterRtpCapabilities, id: 1111734]
{codecs: [{kind: audio, mimeType: audio/opus, clockRate: 48000, channels: 2, rtcpFeedback: [{type: transport-cc, parameter: }], parameters: {useinbandfec: 1, stereo: 1}, 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: 1500}, preferredPayloadType: 101}, {kind: video, mimeType: video/rtx, preferredPayloadType: 102, clockRate: 90000, parameters: {apt: 101}, rtcpFeedback: []}, {kind: video, mimeType: video/H264, clockRate: 90000, parameters: {packetization-mode: 1, level-asymmetry-allowed: 1, profile-level-id: 42e032}, rtcpFeedback: [{type: nack, parameter: }, {type: nack, parameter: pli}, {type: ccm, parameter: fir}, {type: goog-remb, parameter: }, {type: transport-cc, parameter: }], preferredPayloadType: 103}, {kind: video, mimeType: video/rtx, preferredPayloadType: 104, clockRate: 90000, parameters: {apt: 103}, rtcpFeedback: []}, {kind: video, mimeType: video/VP9, 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: 1500}, preferredPayloadType: 105}, {kind: video, mimeType: video/rtx, preferredPayloadType: 106, clockRate: 90000, parameters: {apt: 105}, 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}]}
mediasoup-client:Device load() [routerRtpCapabilities:Instance of 'RtpCapabilities']
mediasoup-client:Browser getNativeRtpCapabilities()
parsed: {version: 0, origin: {username: -, sessionId: 4496350646539198500, sessionVersion: 2, netType: IN, ipVer: 4, address: 127.0.0.1}, name: -, timing: {start: 0, stop: 0}, groups: [{type: BUNDLE, mids: 0 1}], extmapAllowMixed: [{extmap-allow-mixed: extmap-allow-mixed}], msidSemantic: {semantic: WMS, token: }, media: [{rtp: [{payload: 111, codec: opus, rate: 48000, encoding: 2}, {payload: 103, codec: ISAC, rate: 16000, encoding: null}, {payload: 104, codec: ISAC, rate: 32000, encoding: null}, {payload: 9, codec: G722, rate: 8000, encoding: null}, {payload: 0, codec: PCMU, rate: 8000, encoding: null}, {payload: 8, codec: PCMA, rate: 8000, encoding: null}, {payload: 106, codec: CN, rate: 32000, encoding: null}, {payload: 105, codec: CN, rate: 16000, encoding: null}, {payload: 13, codec: CN, rate: 8000, encoding: null}, {payload: 110, codec: telephone-event, rate: 48000, encoding: null}, {payload: 112, codec: telephone-event, rate: 32000, encoding: null}, {payload: 113, codec: telephone-event, rate: 16000, encoding: null}, {payload: 126, codec: telephone-event, rate: 8000, encoding: null}], fmtp: [{payload: 111, config: minptime=10;useinbandfec=1}], type: audio, port: 9, protocol: UDP/TLS/RTP/SAVPF, payloads: 111 103 104 9 0 8 106 105 13 110 112 113 126, connection: {version: 4, ip: 0.0.0.0}, rtcp: {port: 9, netType: IN, ipVer: 4, address: 0.0.0.0}, iceUfrag: 8Wwe, icePwd: 3pXMpoVw04FH8u6ABnEvGmkk, iceOptions: trickle, fingerprint: {type: sha-256, hash: 16:FF:B8:95:DF:47:16:1C:D3:E1:C2:AE:63:7F:EF:D5:48:CB:01:EE:0A:E6:9F:FA:59:8E:F9:DB:1F:C9:F9:6A}, setup: actpass, mid: 0, ext: [{value: 1, direction: null, uri: urn:ietf:params:rtp-hdrext:ssrc-audio-level, config: null}, {value: 2, direction: null, uri: http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time, config: null}, {value: 3, direction: null, uri: http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01, config: null}, {value: 4, direction: null, uri: urn:ietf:params:rtp-hdrext:sdes:mid, config: null}, {value: 5, direction: null, uri: urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id, config: null}, {value: 6, direction: null, uri: urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id, config: null}], direction: sendrecv, msid: - dcd479bf-0013-47d6-8235-c3fe487ae36b, rtcpMux: rtcp-mux, rtcpFb: [{payload: 111, type: transport-cc, subtype: null}], ssrcs: [{id: 169880542, attribute: cname, value: P7ucPSJoLAkEIeXB}, {id: 169880542, attribute: msid, value: - dcd479bf-0013-47d6-8235-c3fe487ae36b}, {id: 169880542, attribute: mslabel, value: -}, {id: 169880542, attribute: label, value: dcd479bf-0013-47d6-8235-c3fe487ae36b}]}, {rtp: [{payload: 96, codec: VP8, rate: 90000, encoding: null}, {payload: 97, codec: rtx, rate: 90000, encoding: null}, {payload: 98, codec: VP9, rate: 90000, encoding: null}, {payload: 99, codec: rtx, rate: 90000, encoding: null}, {payload: 100, codec: VP9, rate: 90000, encoding: null}, {payload: 101, codec: rtx, rate: 90000, encoding: null}, {payload: 102, codec: H264, rate: 90000, encoding: null}, {payload: 121, codec: rtx, rate: 90000, encoding: null}, {payload: 127, codec: H264, rate: 90000, encoding: null}, {payload: 120, codec: rtx, rate: 90000, encoding: null}, {payload: 125, codec: H264, rate: 90000, encoding: null}, {payload: 107, codec: rtx, rate: 90000, encoding: null}, {payload: 108, codec: H264, rate: 90000, encoding: null}, {payload: 109, codec: rtx, rate: 90000, encoding: null}, {payload: 35, codec: AV1X, rate: 90000, encoding: null}, {payload: 36, codec: rtx, rate: 90000, encoding: null}, {payload: 124, codec: H264, rate: 90000, encoding: null}, {payload: 119, codec: rtx, rate: 90000, encoding: null}, {payload: 123, codec: H264, rate: 90000, encoding: null}, {payload: 118, codec: rtx, rate: 90000, encoding: null}, {payload: 114, codec: red, rate: 90000, encoding: null}, {payload: 115, codec: rtx, rate: 90000, encoding: null}, {payload: 116, codec: ulpfec, rate: 90000, encoding: null}], fmtp: [{payload: 97, config: apt=96}, {payload: 98, config: profile-id=0}, {payload: 99, config: apt=98}, {payload: 100, config: profile-id=2}, {payload: 101, config: apt=100}, {payload: 102, config: level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f}, {payload: 121, config: apt=102}, {payload: 127, config: level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f}, {payload: 120, config: apt=127}, {payload: 125, config: level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f}, {payload: 107, config: apt=125}, {payload: 108, config: level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f}, {payload: 109, config: apt=108}, {payload: 36, config: apt=35}, {payload: 124, config: level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f}, {payload: 119, config: apt=124}, {payload: 123, config: level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f}, {payload: 118, config: apt=123}, {payload: 115, config: apt=114}], type: video, port: 9, protocol: UDP/TLS/RTP/SAVPF, payloads: 96 97 98 99 100 101 102 121 127 120 125 107 108 109 35 36 124 119 123 118 114 115 116, connection: {version: 4, ip: 0.0.0.0}, rtcp: {port: 9, netType: IN, ipVer: 4, address: 0.0.0.0}, iceUfrag: 8Wwe, icePwd: 3pXMpoVw04FH8u6ABnEvGmkk, iceOptions: trickle, fingerprint: {type: sha-256, hash: 16:FF:B8:95:DF:47:16:1C:D3:E1:C2:AE:63:7F:EF:D5:48:CB:01:EE:0A:E6:9F:FA:59:8E:F9:DB:1F:C9:F9:6A}, setup: actpass, mid: 1, ext: [{value: 14, direction: null, uri: urn:ietf:params:rtp-hdrext:toffset, config: null}, {value: 2, direction: null, uri: http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time, config: null}, {value: 13, direction: null, uri: urn:3gpp:video-orientation, config: null}, {value: 3, direction: null, uri: http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01, config: null}, {value: 12, direction: null, uri: http://www.webrtc.org/experiments/rtp-hdrext/playout-delay, config: null}, {value: 11, direction: null, uri: http://www.webrtc.org/experiments/rtp-hdrext/video-content-type, config: null}, {value: 7, direction: null, uri: http://www.webrtc.org/experiments/rtp-hdrext/video-timing, config: null}, {value: 8, direction: null, uri: http://www.webrtc.org/experiments/rtp-hdrext/color-space, config: null}, {value: 4, direction: null, uri: urn:ietf:params:rtp-hdrext:sdes:mid, config: null}, {value: 5, direction: null, uri: urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id, config: null}, {value: 6, direction: null, uri: urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id, config: null}], direction: sendrecv, msid: - bb36a3c7-c326-47dc-8575-3e14b0bbf904, rtcpMux: rtcp-mux, rtcpRsize: rtcp-rsize, rtcpFb: [{payload: 96, type: goog-remb, subtype: null}, {payload: 96, type: transport-cc, subtype: null}, {payload: 96, type: ccm, subtype: fir}, {payload: 96, type: nack, subtype: null}, {payload: 96, type: nack, subtype: pli}, {payload: 98, type: goog-remb, subtype: null}, {payload: 98, type: transport-cc, subtype: null}, {payload: 98, type: ccm, subtype: fir}, {payload: 98, type: nack, subtype: null}, {payload: 98, type: nack, subtype: pli}, {payload: 100, type: goog-remb, subtype: null}, {payload: 100, type: transport-cc, subtype: null}, {payload: 100, type: ccm, subtype: fir}, {payload: 100, type: nack, subtype: null}, {payload: 100, type: nack, subtype: pli}, {payload: 102, type: goog-remb, subtype: null}, {payload: 102, type: transport-cc, subtype: null}, {payload: 102, type: ccm, subtype: fir}, {payload: 102, type: nack, subtype: null}, {payload: 102, type: nack, subtype: pli}, {payload: 127, type: goog-remb, subtype: null}, {payload: 127, type: transport-cc, subtype: null}, {payload: 127, type: ccm, subtype: fir}, {payload: 127, type: nack, subtype: null}, {payload: 127, type: nack, subtype: pli}, {payload: 125, type: goog-remb, subtype: null}, {payload: 125, type: transport-cc, subtype: null}, {payload: 125, type: ccm, subtype: fir}, {payload: 125, type: nack, subtype: null}, {payload: 125, type: nack, subtype: pli}, {payload: 108, type: goog-remb, subtype: null}, {payload: 108, type: transport-cc, subtype: null}, {payload: 108, type: ccm, subtype: fir}, {payload: 108, type: nack, subtype: null}, {payload: 108, type: nack, subtype: pli}, {payload: 35, type: goog-remb, subtype: null}, {payload: 35, type: transport-cc, subtype: null}, {payload: 35, type: ccm, subtype: fir}, {payload: 35, type: nack, subtype: null}, {payload: 35, type: nack, subtype: pli}, {payload: 124, type: goog-remb, subtype: null}, {payload: 124, type: transport-cc, subtype: null}, {payload: 124, type: ccm, subtype: fir}, {payload: 124, type: nack, subtype: null}, {payload: 124, type: nack, subtype: pli}, {payload: 123, type: goog-remb, subtype: null}, {payload: 123, type: transport-cc, subtype: null}, {payload: 123, type: ccm, subtype: fir}, {payload: 123, type: nack, subtype: null}, {payload: 123, type: nack, subtype: pli}], ssrcGroups: [{semantics: FID, ssrcs: 985860932 3606149658}], ssrcs: [{id: 985860932, attribute: cname, value: P7ucPSJoLAkEIeXB}, {id: 985860932, attribute: msid, value: - bb36a3c7-c326-47dc-8575-3e14b0bbf904}, {id: 985860932, attribute: mslabel, value: -}, {id: 985860932, attribute: label, value: bb36a3c7-c326-47dc-8575-3e14b0bbf904}, {id: 3606149658, attribute: cname, value: P7ucPSJoLAkEIeXB}, {id: 3606149658, attribute: msid, value: - bb36a3c7-c326-47dc-8575-3e14b0bbf904}, {id: 3606149658, attribute: mslabel, value: -}, {id: 3606149658, attribute: label, value: bb36a3c7-c326-47dc-8575-3e14b0bbf904}]}]}
mediasoup-client:Device load() | got native RTP capabilities:Instance of 'RtpCapabilities'
generateProfileLevelIdForAnswer() | result: [profile:1, level:31
mediasoup-client:Device load() | got extended RTP capabilities:Instance of 'ExtendedRtpCapabilities'
mediasoup-client:Device load() | got receiving RTP capabilities:Instance of 'RtpCapabilities'
mediasoup-client:Browser getNativeSctpCapabilities()
mediasoup-client:Device load() | got native SCTP capabilities:Instance of 'SctpCapabilities'
mediasoup-client:Device load() successed
mediasoup-client:Browser close()
[Peer] DEBUG: request() [method:createWebRtcTransport, id: 3438750]
mediasoup-client:Device createSendTransport()
mediasoup-client:Transport constructor() [id:ddd1ca47-a15b-4edb-955d-c3285ff921bf, direction:send]
mediasoup-client:Browser run()
[Peer] DEBUG: request() [method:createWebRtcTransport, id: 1440835]
mediasoup-client:Device createRecvTransport()
mediasoup-client:Transport constructor() [id:9654281b-cf5e-4043-8e50-657553ba2a07, direction:recv]
mediasoup-client:Browser run()
[Peer] DEBUG: request() [method:join, id: 5993620]
mediasoup-client:Transport produce() [track:Track(id: 07f54d07-48d8-4b75-8a57-db63ddad03fb, kind: audio, label: Default - Microphone Array (Intel® Smart Sound Technology (Intel® SST)), enabled: true, muted: false)
mediasoup-client:Browser send() [kind:audio, tack.id:07f54d07-48d8-4b75-8a57-db63ddad03fb
InvalidAccessError: Failed to execute 'addTrack' on 'RTCPeerConnection': A sender already exists for the track.
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/html/dart2js/html_dart2js.dart 26949:48 addTrack]
packages/flutter_webrtc/src/web/rtc_peerconnection_impl.dart 330:24 addTrack
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54 runBody
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 123:5 _async
packages/flutter_webrtc/src/web/rtc_peerconnection_impl.dart 326:32 addTrack
packages/mediasoup_client_flutter/src/handlers/browser.dart 525:11 send
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 45:50 <fn>
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1613:54 runUnary
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 155:18 handleValue
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 707:44 handleValueCallback
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 736:13 _propagateToListeners
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 542:5 [_completeWithValue]
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 580:7 callback
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 40:11 _microtaskLoop
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 49:5 _startMicrotaskLoop
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 166:15 <fn>
mediasoup-client:Transport produce() [track:Track(id: c2c5a9f1-76f8-4c31-a29d-552391078dd3, kind: video, label: HP Wide Vision HD Camera (04ca:707f), enabled: true, muted: false)
mediasoup-client:Browser send() [kind:video, tack.id:c2c5a9f1-76f8-4c31-a29d-552391078dd3
InvalidAccessError: Failed to execute 'addTrack' on 'RTCPeerConnection': A sender already exists for the track.
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/html/dart2js/html_dart2js.dart 26949:48 addTrack]
packages/flutter_webrtc/src/web/rtc_peerconnection_impl.dart 330:24 addTrack
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54 runBody
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 123:5 _async
packages/flutter_webrtc/src/web/rtc_peerconnection_impl.dart 326:32 addTrack
packages/mediasoup_client_flutter/src/handlers/browser.dart 525:11 send
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 45:50 <fn>
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1613:54 runUnary
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 155:18 handleValue
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 707:44 handleValueCallback
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 736:13 _propagateToListeners
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 542:5 [_completeWithValue]
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 580:7 callback
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 40:11 _microtaskLoop
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 49:5 _startMicrotaskLoop
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 166:15 <fn>