# PlainTransport Producer not receiving RTP packets - SSRC mismatch

**URL:** <https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914>\
**Category:** Integration\
**Created:** [November 14, 2025, 12:28pm UTC](https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914 "2025-11-14T12:28:53Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mikel](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/mikel/32/2992_2.png) [@Mikel](https://mediasoup.discourse.group/u/Mikel)\
**Post date:** [November 14, 2025, 12:28pm UTC](https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914/1 "2025-11-14T12:28:53Z")

</div>

Hi, I’m experiencing an issue with PlainTransport where incoming RTP packets are being rejected with “no suitable Producer for received RTP packet” warnings, despite setting the same ssrc.

### Setup

I have a video routing application with the following flow:

```auto
Browser1 → WebRtcTransport → Mediasoup → PlainTransport_OUT → External_SDK
External_SDK → PlainTransport_IN → Mediasoup → WebRtcTransport → Browser1

```

Each user has their own LinuxSDK that receives video from Mediasoup via PlainTransport, processes it, and sends it back to Mediasoup via another PlainTransport (self-loopback for now).

```auto
// Works fine
const outTransport = await router.createPlainTransport(config.mediasoup.plainTransport);
await outTransport.connect({ ip: sdkIp, port: 42987 });

const consumer = await outTransport.consume({
producerId: webRtcProducer.id,
rtpCapabilities: router.rtpCapabilities,
paused: false,
});

// Mediasoup sends with SSRC: 937728398

```

```auto
const inTransport = await router.createPlainTransport(config.mediasoup.plainTransport);
await inTransport.connect({ ip: sdkIp, port: 42987 });

// Create producer WITHOUT specifying SSRC (relying on comedia)
const producer = await inTransport.produce({
kind: ‘video’,
rtpParameters: {
mid: ‘0’,
codecs: [{
mimeType: ‘video/VP8’,
payloadType: 96,
clockRate: 90000,
parameters: {},
rtcpFeedback: [
{ type: ‘transport-cc’, parameter: ‘’ },
{ type: ‘ccm’, parameter: ‘fir’ },
{ type: ‘nack’, parameter: ‘’ },
{ type: ‘nack’, parameter: ‘pli’ },
],
}],
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: {} },
],
encodings: [{
ssrc: 937728398,
}], // Empty to let comedia detect
rtcp: { cname: ‘linuxsdk-stream’, reducedSize: true },
}
});

```

### Issue

The PlainTransport Producer is created successfully, but when RTP packets with SSRC `937728398` arrive from the LinuxSDK, they are rejected with “no suitable Producer” warnings.

Logs:

mediasoup:WARN:Channel [pid:29068] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:937728398, payloadType:96] +9ms

### Environment

- mediasoup: 3.19.3

- Node.js: v18+

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [November 14, 2025, 1:08pm UTC](https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914/2 "2025-11-14T13:08:45Z")

</div>

“Creating the producer without specifying SSRC because we rely on Comedia” is not a thing and never was.

You need to specify ssrc or mid ir rid in rtpParameters and those values must match what the RTP packet contains. So no issue here.

---

<div class="post-metadata">

**Author:** ![Mikel](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/mikel/32/2992_2.png) [@Mikel](https://mediasoup.discourse.group/u/Mikel)\
**Post date:** [November 17, 2025, 7:41am UTC](https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914/3 "2025-11-17T07:41:00Z")

</div>

That is a comment that I wrote when I was trying different things. If you read the rest, you can see that I specify the ssrc

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [November 17, 2025, 7:56am UTC](https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914/4 "2025-11-17T07:56:05Z")

</div>

The ssrc and payload type of the Consumer are not the same as those in its associated Producer. You should use consumer.rtpParameters.

---

<div class="post-metadata">

**Author:** ![Mikel](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/mikel/32/2992_2.png) [@Mikel](https://mediasoup.discourse.group/u/Mikel)\
**Post date:** [November 19, 2025, 10:51am UTC](https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914/5 "2025-11-19T10:51:36Z")

</div>

I don’t understand what do you mean with using consumer.rtpParameters.

Mediasoup-Server:

```auto
const producer = await inTransport.produce({

                kind: 'video',

                rtpParameters: {

                    codecs: [

                        {

                            mimeType: 'video/VP8',

                            clockRate: 90000,

                            payloadType: 96,

                            parameters: {

                                'x-google-start-bitrate': 1000,

                            },

                            rtcpFeedback: [

                                { type: 'transport-cc' },

                                { type: 'ccm', parameter: 'fir' },

                                { type: 'nack' },

                                { type: 'nack', parameter: 'pli' },

                            ],

                        },

                    ],

                    encodings: [{

                        ssrc: 937728398,

                    }],

                    rtcp: {

                        cname: peer.id + '/linuxsdk-stream',

                        reducedSize: true,

                    },

                }

            });

            if (!mediasoupRouter.canConsume({

                producerId: producer.id,

                rtpCapabilities,

            })) {

                console.error('Client cannot consume the stream');

                return;

            }

            const consumer = await transport.consume({

                producerId: producer.id,

                rtpCapabilities,

                paused: true

            });

            console.log('✅ WebRTC Consumer created:', {

                id: consumer.id,

                ssrc: consumer.rtpParameters.encodings[0]?.ssrc,

                rtxSsrc: consumer.rtpParameters.encodings[0]?.rtx?.ssrc

            });

            peer.addConsumer('in', consumer);

            return {

                remotePeerId: remotePeer,

                producerId: producer.id,

                id: consumer.id,

                kind: consumer.kind,

                rtpParameters: consumer.rtpParameters,

                type: consumer.type,

                producerPaused: consumer.producerPaused

            };

```

Mediasoup-client:

```auto
if (!resp.data) {

                console.error('No data in consume response');

                return;

            }

            const { remotePeerId, id, producerId, kind, rtpParameters, producerPaused } = resp.data;

            console.log('Consuming stream:', { kind, rtpParameters });

            try {

                const consumer = await (consumeTransport as Transport).consume({

                    id,

                    producerId,

                    kind,

                    rtpParameters,

                });

                console.log('Consumer created:', {

                    id: consumer.id,

                    track: consumer.track,

                    paused: consumer.paused,

                    producerPaused: producerPaused

                });

                consumer.resume();

                const remoteStream = new MediaStream();

                remoteStream.addTrack(consumer.track);

                console.log('Remote stream created:', {

                    tracks: remoteStream.getTracks().map(t => ({

                        kind: t.kind,

                        enabled: t.enabled,

                        readyState: t.readyState

                    }))

                });

                setStreams(prev => {

                    console.log('Setting stream for:', remotePeerId);

                    return { ...prev, [remotePeerId]: remoteStream };

                });

            } catch (err) {

                console.error('Error creating consumer:', err);

            }

```

This code section is correct? The result is still the same, mediasoup server logs printing no suitable Producer for received RTP packet and the client doesn’t have any errors/warnings but the stream just shows a gray background with a loading circle. In Chrome’s WebRTC Internals I can see that the client isn’t receiving any packets.

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [November 19, 2025, 11:17am UTC](https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914/6 "2025-11-19T11:17:59Z")

</div>

- You create a Producer in mediasoup server side which has ssrc 1111 and payloadType 100 (for example).
- You create a Consumer to send that stream to an endpoint.
- Such a Consumer has **different** output RTP values, for example, its ssrc may be 2222 and its payloadType may be 105.
- You can get those values from `consumer.rtpParameters`.
- So if such a Consumer sends the stream to an endpoint that later sends the stream back to mediasoup via a new Producer (and it doesn’t modify the ssrc and payloadType of the packets), then the ssrc and payloadType of the new Producer must be 2222 and 105, this is, the values in the `consumer.rtpParameters` rather than the value sin the original `producer.rtpParameters`.

---

<div class="post-metadata">

**Author:** ![Mikel](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/mikel/32/2992_2.png) [@Mikel](https://mediasoup.discourse.group/u/Mikel)\
**Post date:** [November 20, 2025, 9:49am UTC](https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914/7 "2025-11-20T09:49:23Z")

</div>

I’ve updated my code to work as you say, but still the same behaviour.

Produce:

```auto
const onProduce = async (event, ws, websock) => {

        const { kind, rtpParameters } = event;

        let room = rooms.get(event.room.id);

        let peer = room.getPeer(event.peerId);

        let transport = peer.getWebRtcTransport('out');

        let outProducer = await transport.produce({ kind, rtpParameters });

        peer.addProducer('out', outProducer);

        const resp = {

            id: outProducer.id,

        }

        const { transport: outTransport, outParams } = await createPlainTransport(mediasoupRouter);

        peer.addPlainTransport('out', outTransport);

        if (!outTransport.connected) {

            console.log(event.sdkInfo);

            await outTransport.connect({

                ip: event.sdkInfo.ip,

                port: event.sdkInfo.port,

            });

            outTransport.connected = true;

        }

        const consumer = await outTransport.consume({

            producerId: outProducer.id,

            rtpCapabilities: mediasoupRouter.rtpCapabilities,

            paused: false,

        });

        console.log('✅ PlainRTP Consumer created:', {

            id: consumer.id,

            ssrc: consumer.rtpParameters.encodings[0]?.ssrc,

            rtxSsrc: consumer.rtpParameters.encodings[0]?.rtx?.ssrc

        });

        ssrcMap.set(peer.id, consumer.rtpParameters);

        await consumer.resume();

        peer.addConsumer('out', consumer);

        send(ws, 'produced', resp);

        broadcast(websock, 'newProducer', { id: outProducer.id, roomId: event.room.id, peerId: event.peerId });

    };

```

Consume:

```auto
    const onConsume = async (event, ws) => {

        let room = rooms.get(event.room.id);

        let peer = room.getPeer(event.peerId);

        let inTransport = peer.getPlainTransport('in');

        let transport = peer.getWebRtcTransport('in');

        const res = await createConsumer(peer, inTransport, transport, event.rtpCapabilities, event.remotePeerId);

        send(ws, 'consumed', res);

    };

    const createConsumer = async (peer, inTransport, transport, rtpCapabilities, remotePeer) => {

        try {

            const rtpParameters = ssrcMap.get(remotePeer);

            const producer = await inTransport.produce({

                kind: 'video',

                rtpParameters: {

                    codecs: rtpParameters.codecs,

                    encodings: rtpParameters.encodings

                }

            });

            console.log('✅ PlainRTP Producer created:', {

                id: producer.id,

                transportId: inTransport.id,

                ssrc: rtpParameters.encodings[0]?.ssrc,

                rtxSsrc: rtpParameters.encodings[0]?.rtx?.ssrc

            });

            if (!mediasoupRouter.canConsume({

                producerId: producer.id,

                rtpCapabilities,

            })) {

                console.error('Client cannot consume the stream');

                return;

            }

            const consumer = await transport.consume({

                producerId: producer.id,

                rtpCapabilities,

                paused: true

            });

            console.log('✅ WebRTC Consumer created:', {

                id: consumer.id,

                ssrc: consumer.rtpParameters.encodings[0]?.ssrc,

                rtxSsrc: consumer.rtpParameters.encodings[0]?.rtx?.ssrc

            });

            peer.addConsumer('in', consumer);

            return {

                remotePeerId: remotePeer,

                producerId: producer.id,

                id: consumer.id,

                kind: consumer.kind,

                rtpParameters: consumer.rtpParameters,

                type: consumer.type,

                producerPaused: consumer.producerPaused

            };

        } catch (error) {

            console.error('Error in createConsumer:', error);

            return null;

        }

    };

```

---

<div class="post-metadata">

**Author:** ![Mikel](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/mikel/32/2992_2.png) [@Mikel](https://mediasoup.discourse.group/u/Mikel)\
**Post date:** [November 20, 2025, 9:54am UTC](https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914/8 "2025-11-20T09:54:57Z")

</div>

Mediasoup logs:

`mediasoup:Worker worker process running [pid:13576] +259ms`  
`mediasoup:Worker createRouter() +1ms`  
`mediasoup:Channel request() [method:WORKER_CREATE_ROUTER] +3ms`  
`mediasoup:Channel request succeeded [method:WORKER_CREATE_ROUTER, id:1] +1ms`  
`mediasoup:Router constructor() +0ms`  
`{`  
`type: ‘getRouterRtpCapabilities’,`  
`room: { id: ‘NGUgmGfs4m’, type: 10 },`  
`peerId: ‘sip:linux_u3@test.org’`  
`}`  
`{“type”:“routerRtpCapabilities”,“data”:{“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/H264”,“clockRate”:90000,“parameters”:{“level-asymmetry-allowed”:1},“rtcpFeedback”:[{“type”:“nack”,“parameter”:“”},{“type”:“nack”,“parameter”:“pli”},{“type”:“ccm”,“parameter”:“fir”},{“type”:“goog-remb”,“parameter”:“”},{“type”:“transport-cc”,“parameter”:“”}],“preferredPayloadType”:96},{“kind”:“video”,“mimeType”:“video/rtx”,“preferredPayloadType”:101,“clockRate”:90000,“parameters”:{“apt”:96},“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”:“https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension”,“preferredId”:8,“preferredEncrypt”:false,“direction”:“recvonly”},{“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”},{“kind”:“audio”,“uri”:“http://www.webrtc.org/experiments/rtp-hdrext/playout-delay”,“preferredId”:14,“preferredEncrypt”:false,“direction”:“sendrecv”},{“kind”:“video”,“uri”:“http://www.webrtc.org/experiments/rtp-hdrext/playout-delay”,“preferredId”:14,“preferredEncrypt”:false,“direction”:"sendrecv”``}]}}`  
`{`  
`type: ‘getRouterRtpCapabilities’,`  
`room: { id: ‘NGUgmGfs4m’, type: 10 },`  
`peerId: ‘sip:linux_u4@test.org’`  
`}`  
`{“type”:“routerRtpCapabilities”,“data”:{“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/H264”,“clockRate”:90000,“parameters”:{“level-asymmetry-allowed”:1},“rtcpFeedback”:[{“type”:“nack”,“parameter”:“”},{“type”:“nack”,“parameter”:“pli”},{“type”:“ccm”,“parameter”:“fir”},{“type”:“goog-remb”,“parameter”:“”},{“type”:“transport-cc”,“parameter”:“”}],“preferredPayloadType”:96},{“kind”:“video”,“mimeType”:“video/rtx”,“preferredPayloadType”:101,“clockRate”:90000,“parameters”:{“apt”:96},“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”:“https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension”,“preferredId”:8,“preferredEncrypt”:false,“direction”:“recvonly”},{“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”},{“kind”:“audio”,“uri”:“http://www.webrtc.org/experiments/rtp-hdrext/playout-delay”,“preferredId”:14,“preferredEncrypt”:false,“direction”:“sendrecv”},{“kind”:“video”,“uri”:“http://www.webrtc.org/experiments/rtp-hdrext/playout-delay”,“preferredId”:14,“preferredEncrypt”:false,“direction”:"sendrecv”``}]}}`  
`{`  
`type: ‘createProducerTransport’,`  
`forceTcp: false,`  
`rtpCapabilities: {`  
`codecs: [[Object], [Object], [Object] ],`  
`headerExtensions: [`  
`[Object], [Object],`  
`[Object], [Object],`  
`[Object], [Object],`  
`[Object]`  
`]`  
`},`  
`room: { id: ‘NGUgmGfs4m’ },`  
`peerId: ‘sip:linux_u3@test.org’`  
`}`  
`mediasoup:Router createWebRtcTransport() +1m`  
`mediasoup:Channel request() [method:ROUTER_CREATE_WEBRTCTRANSPORT] +1m`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::WebRtcTransport() | UDP socket buffer sizes [send:64512, recv:65536] +1ms`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::WebRtcTransport() | TCP sockets buffer sizes [send:64512, recv:65536] +1ms`  
`mediasoup:Channel request succeeded [method:ROUTER_CREATE_WEBRTCTRANSPORT, id:2] +0ms`  
`mediasoup:Transport constructor() +0ms`  
`mediasoup:WebRtcTransport constructor() +0ms`  
`mediasoup:Transport setMaxIncomingBitrate() [bitrate:1500000] +0ms`  
`mediasoup:Channel request() [method:TRANSPORT_SET_MAX_INCOMING_BITRATE] +4ms`  
`mediasoup:Channel request succeeded [method:TRANSPORT_SET_MAX_INCOMING_BITRATE, id:3] +0ms`  
`{“type”:“producerTransportCreated”,“data”:{“id”:“5c5240f1-c86a-4551-b4ca-b2380668e02e”,“iceParameters”:{“usernameFragment”:“geb97l012z6qq1vap38awaxi3wvfva4j”,“password”:“m0xfdv67058c8zl4bpqc6c7wdulh546l”,“iceLite”:true},“iceCandidates”:[{“foundation”:“udpcandidate”,“priority”:1076302079,“ip”:“censored”,“address”:“censored”,“protocol”:“udp”,“port”:10024,“type”:“host”},{“foundation”:“tcpcandidate”,“priority”:1076276479,“ip”:“censored”,“address”:“censored”,“protocol”:“tcp”,“port”:10063,“type”:“host”,“tcpType”:“passive”}],“dtlsParameters”:{“fingerprints”:[{“algorithm”:“sha-512”,“value”:“D1:11:A0:CF:09:77:C9:92:AC:2A:9E:2E:2B:77:26:C7:8A:99:B0:5E:49:AF:08:58:73:2D:5A:65:15:A8:3B:E0:70:46:81:D3:59:93:4E:AB:F4:00:EB:44:42:FE:D6:D2:50:EB:18:ED:47:3A:07:62:B6:8C:A6:21:52:2B:AA:1C”},{“algorithm”:“sha-1”,“value”:“12:10:A4:86:9E:7B:1A:AA:24:A3:AD:71:C6:82:DE:B9:53:8A:B0:40”},{“algorithm”:“sha-256”,“value”:“1F:CB:DF:66:2F:0D:42:E2:B4:07:F6:D0:47:78:BE:DE:7E:40:27:07:20:77:9D:80:88:87:E4:64:00:04:C2:AE”},{“algorithm”:“sha-224”,“value”:“1B:47:20:89:C5:15:4E:7C:90:13:F2:94:1F:3B:A1:65:F9:A3:24:35:41:89:3F:66:2D:23:98:76”},{“algorithm”:“sha-384”,“value”:“41:DB:5A:D3:82:EC:7D:A7:04:EA:E4:43:1E:C8:E2:DA:56:8B:3D:E7:9A:87:03:9F:E4:0E:CC:11:AE:68:32:97:7C:32:70:BA:F2:B2:C0:3C:34:83:24:A2:D3:37:F9:4C”}],“role”:“auto”}}}`  
`{`  
`type: ‘connectProducerTransport’,`  
`dtlsParameters: { role: ‘client’, fingerprints: [[Object] ] },`  
`transportId: ‘5c5240f1-c86a-4551-b4ca-b2380668e02e’,`  
`room: { id: ‘NGUgmGfs4m’ },`  
`peerId: ‘sip:linux_u3@test.org’`  
`}`  
`mediasoup:WebRtcTransport connect() +602ms`  
`mediasoup:Channel request() [method:WEBRTCTRANSPORT_CONNECT] +602ms`  
`mediasoup:Channel request succeeded [method:WEBRTCTRANSPORT_CONNECT, id:4] +0ms`  
`{“type”:“producerTransportConnected”,“data”:{}}`  
`{`  
`type: ‘produce’,`  
`transportId: ‘5c5240f1-c86a-4551-b4ca-b2380668e02e’,`  
`kind: ‘video’,`  
`rtpParameters: {`  
`mid: ‘0’,`  
`codecs: [[Object], [Object] ],`  
`headerExtensions: [`  
`[Object], [Object],`  
`[Object], [Object],`  
`[Object], [Object],`  
`[Object], [Object]`  
`],`  
`encodings: [[Object] ],`  
`rtcp: { cname: ‘0arGBs0IjfKA2a+F’, reducedSize: true }`  
`},`  
`room: { id: ‘NGUgmGfs4m’ },`  
`peerId: ‘sip:linux_u3@test.org’,`  
`sdkInfo: { ip: ‘censored’, port: censored}`  
`}`  
`mediasoup:Transport produce() +614ms`  
`mediasoup:Channel request() [method:TRANSPORT_PRODUCE] +15ms`  
`mediasoup:Channel request succeeded [method:TRANSPORT_PRODUCE, id:5] +1ms`  
`mediasoup:Producer constructor() +0ms`  
`mediasoup:Router createPlainTransport() +627ms`  
`mediasoup:Channel request() [method:ROUTER_CREATE_PLAINTRANSPORT] +2ms`  
`mediasoup:Channel request succeeded [method:ROUTER_CREATE_PLAINTRANSPORT, id:6] +0ms`  
`mediasoup:Transport constructor() +8ms`  
`mediasoup:PlainTransport constructor() +0ms`  
`{ ip: ‘censored’, port: censored }`  
`mediasoup:PlainTransport connect() +1ms`  
`mediasoup:Channel request() [method:PLAINTRANSPORT_CONNECT] +2ms`  
`mediasoup:Channel request succeeded [method:PLAINTRANSPORT_CONNECT, id:7] +1ms`  
`mediasoup:Transport consume() +2ms`  
`mediasoup:Channel request() [method:TRANSPORT_CONSUME] +2ms`  
`mediasoup:Channel [pid:13576] RTC::SimpleConsumer::RTC::SimpleConsumer::CreateRtpStream() | [ssrc:578082769, payloadType:96] +0ms`  
`mediasoup:Channel [pid:13576] RTC::SimpleConsumer::RTC::SimpleConsumer::CreateRtpStream() | NACK supported +1ms`  
`mediasoup:Channel [pid:13576] RTC::SimpleConsumer::RTC::SimpleConsumer::CreateRtpStream() | PLI supported +0ms`  
`mediasoup:Channel [pid:13576] RTC::SimpleConsumer::RTC::SimpleConsumer::CreateRtpStream() | FIR supported +0ms`  
`mediasoup:Channel request succeeded [method:TRANSPORT_CONSUME, id:8] +0ms`  
`mediasoup:Consumer constructor() +0ms`  
`✅ PlainRTP Consumer created: {`  
`id: ‘e2897f75-b5a3-4bae-a1be-bf899f6dfc05’,`  
`ssrc: 578082769,`  
`rtxSsrc: 578082770`  
`}`  
`mediasoup:Consumer resume() +1ms`  
`mediasoup:Channel request() [method:CONSUMER_RESUME] +2ms`  
`mediasoup:Channel request succeeded [method:CONSUMER_RESUME, id:9] +0ms`  
`{“type”:“produced”,“data”:{“id”:“21eab043-102e-4162-94bc-9c3256a7f94e”}}`  
`{`  
`type: ‘createConsumerTransport’,`  
`forceTcp: false,`  
`room: { id: ‘NGUgmGfs4m’ },`  
`peerId: ‘sip:linux_u4@test.org’,`  
`sdkInfo: { ip: ‘censored’, port: censored }`  
`}`  
`mediasoup:Router createWebRtcTransport() +11ms`  
`mediasoup:Channel request() [method:ROUTER_CREATE_WEBRTCTRANSPORT] +2ms`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::WebRtcTransport() | UDP socket buffer sizes [send:64512, recv:65536] +1ms`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::WebRtcTransport() | TCP sockets buffer sizes [send:64512, recv:65536] +0ms`  
`mediasoup:Channel request succeeded [method:ROUTER_CREATE_WEBRTCTRANSPORT, id:10] +1ms`  
`mediasoup:Transport constructor() +9ms`  
`mediasoup:WebRtcTransport constructor() +31ms`  
`mediasoup:Transport setMaxIncomingBitrate() [bitrate:1500000] +0ms`  
`mediasoup:Channel request() [method:TRANSPORT_SET_MAX_INCOMING_BITRATE] +1ms`  
`mediasoup:Channel request succeeded [method:TRANSPORT_SET_MAX_INCOMING_BITRATE, id:11] +0ms`  
`mediasoup:Router createPlainTransport() +3ms`  
`mediasoup:Channel request() [method:ROUTER_CREATE_PLAINTRANSPORT] +0ms`  
`mediasoup:Channel request succeeded [method:ROUTER_CREATE_PLAINTRANSPORT, id:12] +1ms`  
`mediasoup:Transport constructor() +2ms`  
`mediasoup:PlainTransport constructor() +12ms`  
`mediasoup:PlainTransport connect() +0ms`  
`mediasoup:Channel request() [method:PLAINTRANSPORT_CONNECT] +1ms`  
`mediasoup:Channel request succeeded [method:PLAINTRANSPORT_CONNECT, id:13] +0ms`  
`{“type”:“consumerTransportCreated”,“data”:{“id”:“04129bd6-0793-4e6e-a1b2-2dc0ac9c3e0b”,“iceParameters”:{“usernameFragment”:“haj2iahz2lfg6wepav8fvreg3m8pfp3a”,“password”:“vklowwb9gfpe82ozcxap5d4epg6nl7tk”,“iceLite”:true},“iceCandidates”:[{“foundation”:“udpcandidate”,“priority”:1076302079,“ip”:“censored”,“address”:“censored”,“protocol”:“udp”,“port”:10093,“type”:“host”},{“foundation”:“tcpcandidate”,“priority”:1076276479,“ip”:“censored”,“address”:“censored”,“protocol”:“tcp”,“port”:10014,“type”:“host”,“tcpType”:“passive”}],“dtlsParameters”:{“fingerprints”:[{“algorithm”:“sha-512”,“value”:“D1:11:A0:CF:09:77:C9:92:AC:2A:9E:2E:2B:77:26:C7:8A:99:B0:5E:49:AF:08:58:73:2D:5A:65:15:A8:3B:E0:70:46:81:D3:59:93:4E:AB:F4:00:EB:44:42:FE:D6:D2:50:EB:18:ED:47:3A:07:62:B6:8C:A6:21:52:2B:AA:1C”},{“algorithm”:“sha-1”,“value”:“12:10:A4:86:9E:7B:1A:AA:24:A3:AD:71:C6:82:DE:B9:53:8A:B0:40”},{“algorithm”:“sha-256”,“value”:“1F:CB:DF:66:2F:0D:42:E2:B4:07:F6:D0:47:78:BE:DE:7E:40:27:07:20:77:9D:80:88:87:E4:64:00:04:C2:AE”},{“algorithm”:“sha-224”,“value”:“1B:47:20:89:C5:15:4E:7C:90:13:F2:94:1F:3B:A1:65:F9:A3:24:35:41:89:3F:66:2D:23:98:76”},{“algorithm”:“sha-384”,“value”:“41:DB:5A:D3:82:EC:7D:A7:04:EA:E4:43:1E:C8:E2:DA:56:8B:3D:E7:9A:87:03:9F:E4:0E:CC:11:AE:68:32:97:7C:32:70:BA:F2:B2:C0:3C:34:83:24:A2:D3:37:F9:4C”}],“role”:“auto”}}}`  
`{`  
`type: ‘consume’,`  
`transportId: ‘04129bd6-0793-4e6e-a1b2-2dc0ac9c3e0b’,`  
`room: { id: ‘NGUgmGfs4m’ },`  
`peerId: ‘sip:linux_u4@test.org’,`  
`remotePeerId: ‘sip:linux_u3@test.org’,`  
`rtpCapabilities: {`  
`codecs: [[Object], [Object], [Object] ],`  
`headerExtensions: [`  
`[Object], [Object],`  
`[Object], [Object],`  
`[Object], [Object],`  
`[Object]`  
`]`  
`}`  
`}`  
`mediasoup:Transport produce() +5ms`  
`mediasoup:Channel request() [method:TRANSPORT_PRODUCE] +5ms`  
`mediasoup:Channel request succeeded [method:TRANSPORT_PRODUCE, id:14] +1ms`  
`mediasoup:Producer constructor() +23ms`  
`✅ PlainRTP Producer created: {`  
`id: ‘3d757381-4c6c-4162-bc12-e2069e75a388’,`  
`transportId: ‘8a4a36d1-1f47-418b-b302-7906ac6d5883’,`  
`ssrc: 578082769,`  
`rtxSsrc: 578082770`  
`}`  
`mediasoup:Transport consume() +3ms`  
`mediasoup:Channel request() [method:TRANSPORT_CONSUME] +2ms`  
`mediasoup:Channel [pid:13576] RTC::SimpleConsumer::RTC::SimpleConsumer::CreateRtpStream() | [ssrc:931841448, payloadType:96] +0ms`  
`mediasoup:Channel [pid:13576] RTC::SimpleConsumer::RTC::SimpleConsumer::CreateRtpStream() | FIR supported +1ms`  
`mediasoup:Channel [pid:13576] RTC::SimpleConsumer::RTC::SimpleConsumer::CreateRtpStream() | NACK supported +0ms`  
`mediasoup:Channel [pid:13576] RTC::SimpleConsumer::RTC::SimpleConsumer::CreateRtpStream() | PLI supported +0ms`  
`mediasoup:Channel request succeeded [method:TRANSPORT_CONSUME, id:15] +0ms`  
`mediasoup:Consumer constructor() +16ms`  
`✅ WebRTC Consumer created: {`  
`id: ‘9b1df618-574e-4c93-98f0-8a2b96a930b9’,`  
`ssrc: 931841448,`  
`rtxSsrc: 931841449`  
`}`  
`{“type”:“consumed”,“data”:{“``remotePeerId":"sip:linux_u3@test.org``”,“producerId”:“3d757381-4c6c-4162-bc12-e2069e75a388”,“id”:“9b1df618-574e-4c93-98f0-8a2b96a930b9”,“kind”:“video”,“rtpParameters”:{“codecs”:[{“mimeType”:“video/H264”,“payloadType”:96,“clockRate”:90000,“parameters”:{“level-asymmetry-allowed”:1,“packetization-mode”:0,“profile-level-id”:“42e01f”},“rtcpFeedback”:[{“type”:“transport-cc”,“parameter”:“”},{“type”:“ccm”,“parameter”:“fir”},{“type”:“nack”,“parameter”:“”},{“type”:“nack”,“parameter”:“pli”}]},{“mimeType”:“video/rtx”,“payloadType”:101,“clockRate”:90000,“parameters”:{“apt”:96},“rtcpFeedback”:``}],“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”:“http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01”,“id”:5,“encrypt”:false,“parameters”:{}},{“uri”:“urn:3gpp:video-orientation”,“id”:11,“encrypt”:false,“parameters”:{}},{“uri”:“urn:ietf:params:rtp-hdrext:toffset”,“id”:12,“encrypt”:false,“parameters”:{}},{“uri”:“http://www.webrtc.org/experiments/rtp-hdrext/playout-delay”,“id”:14,“encrypt”:false,“parameters”:{}}],“encodings”:[{“ssrc”:931841448,“rtx”:{“ssrc”:931841449}}],“rtcp”:{“cname”:“f553903b”,“reducedSize”:true},“mid”:“0”},“type”:“simple”,"producerPaused”:false``}}`  
`{`  
`type: ‘connectConsumerTransport’,`  
`dtlsParameters: { role: ‘client’, fingerprints: [[Object] ] },`  
`transportId: ‘04129bd6-0793-4e6e-a1b2-2dc0ac9c3e0b’,`  
`room: { id: ‘NGUgmGfs4m’ },`  
`peerId: ‘sip:linux_u4@test.org’`  
`}`  
`mediasoup:WebRtcTransport connect() +20ms`  
`mediasoup:Channel request() [method:WEBRTCTRANSPORT_CONNECT] +8ms`  
`mediasoup:Channel request succeeded [method:WEBRTCTRANSPORT_CONNECT, id:16] +1ms`  
`{“type”:“consumerTransportConnected”,“data”:{}}`  
`mediasoup:Channel [pid:13576] RTC::IceServer::RTC::IceServer::HandleTuple() | transition from state ‘new’ to ‘connected’ [hasUseCandidate:false, hasNomination:false, nomination:0] +10ms`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::OnIceServerSelectedTuple() | ICE selected tuple +1ms`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::OnIceServerConnected() | ICE connected +0ms`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::MayRunDtlsTransport() | running DTLS transport in local role ‘server’ +1ms`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::OnDtlsTransportConnecting() | DTLS connecting`  
`+0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::Run() | running [role:server] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | DTLS handshake start +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘before SSL initialization’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | role: server, waiting:‘before SSL initialization’] +1ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘before SSL initialization’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read client hello’] +1ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write server hello’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write certificate’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write key exchange’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write certificate request’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write server done’] +1ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | role: server, waiting:‘SSLv3/TLS write server done’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write server done’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read client certificate’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read client key exchange’] +1ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read certificate verify’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read change cipher spec’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read finished’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write change cipher spec’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write finished’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | DTLS handshake done +1ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::CheckRemoteFingerprint() | valid remote fingerprint +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::GetNegotiatedSrtpCryptoSuite() | chosen SRTP crypto suite: SRTP_AEAD_AES_256_GCM +0ms`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::OnDtlsTransportConnected() | DTLS connected +0ms`  
`mediasoup:WARN:Channel [pid:13576] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:1234, payloadType:127] +0ms`  
`mediasoup:WARN:Channel [pid:13576] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:1234, payloadType:127] +1ms`  
`mediasoup:Channel [pid:13576] RTC::IceServer::RTC::IceServer::HandleTuple() | transition from state ‘new’ to ‘connected’ [hasUseCandidate:false, hasNomination:false, nomination:0] +9ms`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::OnIceServerSelectedTuple() | ICE selected tuple +1ms`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::OnIceServerConnected() | ICE connected +0ms`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::MayRunDtlsTransport() | running DTLS transport in local role ‘server’ +0ms`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::OnDtlsTransportConnecting() | DTLS connecting`  
`+1ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::Run() | running [role:server] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | DTLS handshake start +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘before SSL initialization’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | role: server, waiting:‘before SSL initialization’] +0ms`  
`mediasoup:WARN:Channel [pid:13576] `  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘before SSL initialization’] +1ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read client hello’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write server hello’] +1ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write certificate’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write key exchange’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write certificate request’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write server done’] +1ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | role: server, waiting:‘SSLv3/TLS write server done’] +0ms`  
`mediasoup:WARN:Channel [pid:13576] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:1234, payloadType:127] +2ms`  
`mediasoup:WARN:Channel [pid:13576] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:1234, payloadType:127] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write server done’] +1ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read client certificate’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read client key exchange’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read certificate verify’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read change cipher spec’] +1ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read finished’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write change cipher spec’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write finished’] +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | DTLS handshake done +0ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::CheckRemoteFingerprint() | valid remote fingerprint +1ms`  
`mediasoup:Channel [pid:13576] RTC::DtlsTransport::RTC::DtlsTransport::GetNegotiatedSrtpCryptoSuite() | chosen SRTP crypto suite: SRTP_AEAD_AES_256_GCM +0ms`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::OnDtlsTransportConnected() | DTLS connected +0ms`  
`mediasoup:WARN:Channel [pid:13576] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:1234, payloadType:127] +0ms`  
`mediasoup:WARN:Channel [pid:13576] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:1234, payloadType:127] +1ms`  
`mediasoup:WARN:Channel [pid:13576] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:1234, payloadType:127] +2ms`  
`mediasoup:Channel [pid:13576] RTC::Producer::RTC::Producer::GetRtpStream() | ignoring RTX packet for not yet created RtpStream (ssrc lookup) +29ms`  
`mediasoup:WARN:Channel [pid:13576] RTC::Producer::RTC::Producer::ReceiveRtpPacket() | no stream found for received packet [ssrc:1411536650] +22ms`  
`mediasoup:Channel [pid:13576] RTC::Producer::RTC::Producer::CreateRtpStream() | [encodingIdx:0, ssrc:1718950167, rid:, payloadType:108] +4ms`  
`mediasoup:Channel [pid:13576] RTC::Producer::RTC::Producer::CreateRtpStream() | FIR supported +0ms`  
`mediasoup:Channel [pid:13576] RTC::Producer::RTC::Producer::CreateRtpStream() | NACK supported +1ms`  
`mediasoup:Channel [pid:13576] RTC::Producer::RTC::Producer::CreateRtpStream() | PLI supported +0ms`  
`mediasoup:Channel [pid:13576] RTC::Producer::RTC::Producer::ReceiveRtpPacket() | key frame received [ssrc:1718950167, seq:28177] +0ms`  
`mediasoup:Channel [pid:13576] RTC::SimpleConsumer::RTC::SimpleConsumer::SendRtpPacket() | sync key frame received [ssrc:541516544, seq:28177, ts:3054433867] +0ms`  
`mediasoup:Channel [pid:13576] RTC::SimpleConsumer::RTC::SimpleConsumer::SendRtpPacket() | sending sync packet [ssrc:578082769, seq:8390, ts:3054433867] from original [seq:28177] +0ms`  
`mediasoup:Channel [pid:13576] RTC::IceServer::RTC::IceServer::HandleTuple() | transition from state ‘connected’ to ‘completed’ [hasUseCandidate:true, hasNomination:false, nomination:0] +1ms`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::OnIceServerCompleted() | ICE completed +0ms`  
`mediasoup:Channel [pid:13576] RTC::IceServer::RTC::IceServer::HandleTuple() | transition from state ‘connected’ to ‘completed’ [hasUseCandidate:true, hasNomination:false, nomination:0] +18ms`  
`mediasoup:Channel [pid:13576] RTC::WebRtcTransport::RTC::WebRtcTransport::OnIceServerCompleted() | ICE completed +0ms`  
`mediasoup:WARN:Channel [pid:13576] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:578082769, payloadType:96] +15ms`

Chrome WebRTC Internals:

 ![image](https://global.discourse-cdn.com/free1/uploads/mediasoup/original/2X/7/7c4e04951652f01c9893f834ba4bcb6ec700e519.png)

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [November 20, 2025, 10:01am UTC](https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914/9 "2025-11-20T10:01:22Z")

</div>

> [@Mikel](#):
>
> ### Setup
> 
> I have a video routing application with the following flow:
> 
> ```auto
> Browser1 → WebRtcTransport → Mediasoup → PlainTransport_OUT → External_SDK
> External_SDK → PlainTransport_IN → Mediasoup → WebRtcTransport → Browser1
> 
> ```
> 
> Each user has their own LinuxSDK that receives video from Mediasoup via PlainTransport, processes it, and sends it back to Mediasoup via another PlainTransport (self-loopback for now).

I’m afraid I cannot verify your whole code. But what you need to check is what that Externam SDK does. It’s hard to believe that it just receives RTP packets and then sends these same RTP packets back to mediasoup server. Probably that SDK is decoding those packets and them encoding the media and generating different RTP packets that sends to mediasoup, and hence those packets have different ssrc, payload type, etc, and those are the values you must pass on the rtpParameters when you call transport.produce() in mediasoup server side.

---

<div class="post-metadata">

**Author:** ![Mikel](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/mikel/32/2992_2.png) [@Mikel](https://mediasoup.discourse.group/u/Mikel)\
**Post date:** [November 20, 2025, 10:11am UTC](https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914/10 "2025-11-20T10:11:31Z")

</div>

The SDK is just doing a RTP pass-through. This are the logs of the SDK.

`Learned mediasoup address: censored, SSRC: 1234 (pass-through mode)`  
`RTP relay [0]: PT=127, Seq=5444, TS=173742133, SSRC=1234 (unchanged)`  
`RTP relay [16]: PT=96, Seq=8390, TS=3054433867, SSRC=578082769 (unchanged)`  
`RTP relay [27]: PT=72, Seq=6, TS=578082769, SSRC=2688225 (unchanged)`  
`RTP relay [28]: PT=96, Seq=8401, TS=3054469867, SSRC=578082769 (unchanged)`  
`RTP relay [66]: PT=72, Seq=6, TS=578082769, SSRC=2688226 (unchanged)`  
`RTP relay [67]: PT=96, Seq=8439, TS=3054577867, SSRC=578082769 (unchanged)`  
`RTP relay [100]: PT=96, Seq=8472, TS=3054649867, SSRC=578082769 (unchanged)`  
`RTP relay [121]: PT=72, Seq=6, TS=578082769, SSRC=2688228 (unchanged)`  
`RTP relay [122]: PT=96, Seq=8493, TS=3054704587, SSRC=578082769 (unchanged)`

I can show you some wireshark traffic if you want

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [November 20, 2025, 10:28am UTC](https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914/11 "2025-11-20T10:28:57Z")

</div>

> [@Mikel](#):
>
> RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:1234, payloadType:127] +0ms

The SDK is also re-forwarding the mediasoup special “probator” video stream (ssrc 1234). It shouldn’t. Or you can just ignore it but then of course you will get that wargning:

> RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:1234, payloadType:127]

You must ensure that you are calling `transport.producer()` with `rtpParameters.encodings` including this ssrc:

> RTP relay [16]: PT=96, Seq=8390, TS=3054433867, SSRC=578082769

And such ssrc 578082769 is the ssrc of the `consumer.rtpParameters.encoding` as told in previous comments.

And must also include the ssrc of the RTX stream. Again, just must call `transport.produce()` with those `consumer.rtpParameters`. And then periodically check `producer.getStats()` and/or `producer.dump()` to see what’s going on.

---

<div class="post-metadata">

**Author:** ![Mikel](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/mikel/32/2992_2.png) [@Mikel](https://mediasoup.discourse.group/u/Mikel)\
**Post date:** [November 20, 2025, 11:01am UTC](https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914/12 "2025-11-20T11:01:39Z")

</div>

Okey, in the SDK I will ignore the “probator”.

Right now I’m creating the producer with the `consumer.rtpParameters`, you can check on a previous reply. I’ll check the `producer.getStats()`.

Mediasoup → SDK consumer

`✅ PlainRTP Consumer created: {`  
`id: ‘e2897f75-b5a3-4bae-a1be-bf899f6dfc05’,`  
`ssrc: 578082769,`  
`rtxSsrc: 578082770`  
`}`

SDK → Mediasoup producer

`✅ PlainRTP Producer created: {`  
`id: ‘3d757381-4c6c-4162-bc12-e2069e75a388’,`  
`transportId: ‘8a4a36d1-1f47-418b-b302-7906ac6d5883’,`  
`ssrc: 578082769,`  
`rtxSsrc: 578082770`  
`}`

---

<div class="post-metadata">

**Author:** ![Mikel](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/mikel/32/2992_2.png) [@Mikel](https://mediasoup.discourse.group/u/Mikel)\
**Post date:** [November 24, 2025, 8:44am UTC](https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914/13 "2025-11-24T08:44:38Z")

</div>

Now I’m ignoring the “probator” and I checked the `producer.getStats()` and `plainTransport.getStats()` but they are empty.

Code:

```auto
const createConsumer = async (peer, inTransport, transport, rtpCapabilities, remotePeer) => {

        try {

            const rtpParameters = ssrcMap.get(remotePeer);

            const producer = await inTransport.produce({

                kind: 'video',

                rtpParameters: rtpParameters

            });

            console.log('✅ PlainRTP Transport check:', JSON.stringify(inTransport, null, 2));

            console.log('✅ PlainRTP Producer created:', JSON.stringify({

                id: producer.id,

                kind: producer.kind,

                type: producer.type,

                paused: producer.paused,

                rtpParameters: producer.rtpParameters

            }, null, 2));

            console.log('🔍 Verification:', {

                'Producer ID': producer.id,

                'PlainTransport ID': inTransport.id,

                'Producer exists': !!producer,

                'Transport connected': inTransport.connected

            });

            setInterval(async () => {

                const producerStats = await producer.getStats();
                console.log('Producer stats:', producerStats);
                const transportStats = await inTransport.getStats();
                console.log('PlainTransport stats:', transportStats);

            }, 1000);

            if (!mediasoupRouter.canConsume({

                producerId: producer.id,

                rtpCapabilities,

            })) {

                console.error('Client cannot consume the stream');

                return;

            }

            const consumer = await transport.consume({

                producerId: producer.id,

                rtpCapabilities,

                paused: true

            });

            console.log('✅ WebRTC Consumer created:', {

                id: consumer.id,

                ssrc: consumer.rtpParameters.encodings[0]?.ssrc,

                rtxSsrc: consumer.rtpParameters.encodings[0]?.rtx?.ssrc

            });

            peer.addConsumer('in', consumer);

            return {

                remotePeerId: remotePeer,

                producerId: producer.id,

                id: consumer.id,

                kind: consumer.kind,

                rtpParameters: consumer.rtpParameters,

                type: consumer.type,

                producerPaused: consumer.producerPaused

            };

        } catch (error) {

            console.error('Error in createConsumer:', error);

            return null;

        }

    };

```

Logs:  
`{`  
`type: ‘createConsumerTransport’,`  
`forceTcp: false,`  
`room: { id: ‘F9pYKLcSCv’ },`  
`peerId: ‘sip:linux_u4@test.org’,`  
`sdkInfo: { ip: ‘censored’, port: censored }`  
`}`  
`mediasoup:Router createWebRtcTransport() +14ms`  
`mediasoup:Channel request() [method:ROUTER_CREATE_WEBRTCTRANSPORT] +4ms`  
`mediasoup:Channel [pid:26104] RTC::WebRtcTransport::RTC::WebRtcTransport::WebRtcTransport() | UDP socket buffer sizes [send:64512, recv:65536] +1ms`  
`mediasoup:Channel [pid:26104] RTC::WebRtcTransport::RTC::WebRtcTransport::WebRtcTransport() | TCP sockets buffer sizes [send:64512, recv:65536] +1ms`  
`mediasoup:Channel request succeeded [method:ROUTER_CREATE_WEBRTCTRANSPORT, id:10] +0ms`  
`mediasoup:Transport constructor() +12ms`  
`mediasoup:WebRtcTransport constructor() +33ms`  
`mediasoup:Transport setMaxIncomingBitrate() [bitrate:1500000] +0ms`  
`mediasoup:Channel request() [method:TRANSPORT_SET_MAX_INCOMING_BITRATE] +1ms`  
`mediasoup:Channel request succeeded [method:TRANSPORT_SET_MAX_INCOMING_BITRATE, id:11] +0ms`  
`mediasoup:Router createPlainTransport() +4ms`  
`mediasoup:Channel request() [method:ROUTER_CREATE_PLAINTRANSPORT] +1ms`  
`mediasoup:Channel request succeeded [method:ROUTER_CREATE_PLAINTRANSPORT, id:12] +0ms`  
`mediasoup:Transport constructor() +2ms`  
`mediasoup:PlainTransport constructor() +15ms`  
`mediasoup:PlainTransport connect() +0ms`  
`mediasoup:Channel request() [method:PLAINTRANSPORT_CONNECT] +1ms`  
`mediasoup:Channel request succeeded [method:PLAINTRANSPORT_CONNECT, id:13] +1ms`  
`✅ PlainRTP Transport created: {`  
`“_events”: {},`  
`“_eventsCount”: 7,`  
`“_maxListeners”: null,`  
`“internal”: {`  
`“routerId”: “fd16d662-a746-4811-8f42-17b633d1eb91”,`  
`“transportId”: “7f498465-5bf7-4a7f-aaf4-e61a2e0191ad”`  
`},`  
`“channel”: {`  
`“_events”: {},`  
`“_eventsCount”: 6,`  
`“_maxListeners”: null`  
`},`  
`“consumers”: {},`  
`“dataProducers”: {},`  
`“dataConsumers”: {},`  
`“connected”: true`  
`}`  
`{“type”:“consumerTransportCreated”,“data”:{“id”:“1dad8a34-fe1a-466b-9b87-f8270c2bcb49”,“iceParameters”:{“usernameFragment”:“p6z6qmx3q9jg68mtef4jnbik7i0dz5zi”,“password”:“j8dksc3h87tacqcb0te59dgi1oujljt4”,“iceLite”:true},“iceCandidates”:[{“foundation”:“udpcandidate”,“priority”:1076302079,“ip”:“censored”,“address”:“censored”,“protocol”:“udp”,“port”:10054,“type”:“host”},{“foundation”:“tcpcandidate”,“priority”:1076276479,“ip”:“censored”,“address”:“censored”,“protocol”:“tcp”,“port”:10061,“type”:“host”,“tcpType”:“passive”}],“dtlsParameters”:{“fingerprints”:[{“algorithm”:“sha-384”,“value”:“8B:98:4B:4D:F2:B6:C8:FB:B1:17:3A:6C:2E:52:9C:12:DA:51:20:B8:26:97:29:CE:91:10:A4:C8:E9:FE:0E:4D:84:CE:C5:F1:CD:39:2E:57:54:FD:DE:9F:F6:BF:90:2F”},{“algorithm”:“sha-1”,“value”:“F9:14:4F:0E:FF:3A:E9:44:8F:D9:F3:56:A9:CA:B0:41:7B:74:8D:DE”},{“algorithm”:“sha-224”,“value”:“2E:F8:16:A1:C5:4E:59:96:EE:4A:31:C0:80:1B:1A:4C:D8:14:63:E5:60:5F:97:14:57:13:E4:07”},{“algorithm”:“sha-512”,“value”:“E0:A3:EA:C7:61:73:6C:5C:BE:AA:3E:28:43:D0:6B:7B:74:CD:66:5B:A3:EA:98:B6:2E:6D:F5:45:05:BF:1D:E7:51:FB:15:35:F9:A8:1A:7B:DF:D4:9E:D3:6B:10:A3:47:DD:4C:35:6E:E4:27:AF:DD:66:97:02:47:48:F9:EE:BB”},{“algorithm”:“sha-256”,“value”:“35:5B:70:24:97:76:A7:56:DE:B8:07:1F:51:D1:34:0B:3D:35:F8:9F:C7:8B:F0:31:AD:A8:FE:76:BE:6C:4B:7B”}],“role”:“auto”}}}`  
`{`  
`type: ‘consume’,`  
`transportId: ‘1dad8a34-fe1a-466b-9b87-f8270c2bcb49’,`  
`room: { id: ‘F9pYKLcSCv’ },`  
`peerId: ‘sip:linux_u4@test.org’,`  
`remotePeerId: ‘sip:linux_u3@test.org’,`  
`rtpCapabilities: {`  
`codecs: [[Object], [Object], [Object] ],`  
`headerExtensions: [`  
`[Object], [Object],`  
`[Object], [Object],`  
`[Object], [Object],`  
`[Object]`  
`]`  
`}`  
`}`  
`mediasoup:Transport produce() +6ms`  
`mediasoup:Channel request() [method:TRANSPORT_PRODUCE] +6ms`  
`mediasoup:Channel request succeeded [method:TRANSPORT_PRODUCE, id:14] +0ms`  
`mediasoup:Producer constructor() +27ms`  
`✅ PlainRTP Transport check: {`  
`“_events”: {},`  
`“_eventsCount”: 7,`  
`“_maxListeners”: null,`  
`“internal”: {`  
`“routerId”: “fd16d662-a746-4811-8f42-17b633d1eb91”,`  
`“transportId”: “7f498465-5bf7-4a7f-aaf4-e61a2e0191ad”`  
`},`  
`“channel”: {`  
`“_events”: {},`  
`“_eventsCount”: 7,`  
`“_maxListeners”: null`  
`},`  
`“consumers”: {},`  
`“dataProducers”: {},`  
`“dataConsumers”: {},`  
`“connected”: true`  
`}`  
`✅ PlainRTP Producer created: {`  
`“id”: “0fa8cf1e-7547-490d-ab3a-97209f312648”,`  
`“kind”: “video”,`  
`“type”: “simple”,`  
`“paused”: false,`  
`“rtpParameters”: {`  
`“codecs”: [`  
`{`  
`“mimeType”: “video/H264”,`  
`“payloadType”: 96,`  
`“clockRate”: 90000,`  
`“parameters”: {`  
`“level-asymmetry-allowed”: 1,`  
`“packetization-mode”: 0,`  
`“profile-level-id”: “42e01f”`  
`},`  
`“rtcpFeedback”: [`  
`{`  
`“type”: “nack”,`  
`“parameter”: “”`  
`},`  
`{`  
`“type”: “nack”,`  
`“parameter”: “pli”`  
`},`  
`{`  
`“type”: “ccm”,`  
`“parameter”: “fir”`  
`},`  
`{`  
`“type”: “transport-cc”,`  
`“parameter”: “”`  
`}`  
`]`  
`},`  
`{`  
`“mimeType”: “video/rtx”,`  
`“payloadType”: 101,`  
`“clockRate”: 90000,`  
`“parameters”: {`  
`“apt”: 96`  
`},`  
`“rtcpFeedback”: `  
`}`  
`],`  
`“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”: “``http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01”``,`  
`“id”: 5,`  
`“encrypt”: false,`  
`“parameters”: {}`  
`},`  
`{`  
`“uri”: “urn:3gpp:video-orientation”,`  
`“id”: 11,`  
`“encrypt”: false,`  
`“parameters”: {}`  
`},`  
`{`  
`“uri”: “urn:ietf:params:rtp-hdrext:toffset”,`  
`“id”: 12,`  
`“encrypt”: false,`  
`“parameters”: {}`  
`},`  
`{`  
`“uri”: “``http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time”``,`  
`“id”: 13,`  
`“encrypt”: false,`  
`“parameters”: {}`  
`},`  
`{`  
`“uri”: “``http://www.webrtc.org/experiments/rtp-hdrext/playout-delay”``,`  
`“id”: 14,`  
`“encrypt”: false,`  
`“parameters”: {}`  
`}`  
`],`  
`“encodings”: [`  
`{`  
`“ssrc”: 187838411,`  
`“rtx”: {`  
`“ssrc”: 187838412`  
`},`  
`“dtx”: false`  
`}`  
`],`  
`“rtcp”: {`  
`“cname”: “+9KTgndhToyomd1v”,`  
`“reducedSize”: true`  
`},`  
`“mid”: “0”`  
`}`  
`}`  
`🔍 Verification: {`  
`‘Producer ID’: ‘0fa8cf1e-7547-490d-ab3a-97209f312648’,`  
`‘PlainTransport ID’: ‘7f498465-5bf7-4a7f-aaf4-e61a2e0191ad’,`  
`‘Producer exists’: true,`  
`‘Transport connected’: true`  
`}`  
`mediasoup:Transport consume() +8ms`  
`mediasoup:Channel request() [method:TRANSPORT_CONSUME] +7ms`  
`mediasoup:Channel [pid:26104] RTC::SimpleConsumer::RTC::SimpleConsumer::CreateRtpStream() | [ssrc:134486767, payloadType:96] +2ms`  
`mediasoup:Channel [pid:26104] RTC::SimpleConsumer::RTC::SimpleConsumer::CreateRtpStream() | FIR supported +0ms`  
`mediasoup:Channel [pid:26104] RTC::SimpleConsumer::RTC::SimpleConsumer::CreateRtpStream() | NACK supported +0ms`  
`mediasoup:Channel [pid:26104] RTC::SimpleConsumer::RTC::SimpleConsumer::CreateRtpStream() | PLI supported +0ms`  
`mediasoup:Channel request succeeded [method:TRANSPORT_CONSUME, id:15] +1ms`  
`mediasoup:Consumer constructor() +27ms`  
`✅ WebRTC Consumer created: {`  
`id: ‘2ac06512-1565-4fd4-b848-2b6504d91299’,`  
`ssrc: 134486767,`  
`rtxSsrc: 134486768`  
`}`  
`{“type”:“consumed”,“data”:{“``remotePeerId":"sip:linux_u3@test.org``”,“producerId”:“0fa8cf1e-7547-490d-ab3a-97209f312648”,“id”:“2ac06512-1565-4fd4-b848-2b6504d91299”,“kind”:“video”,“rtpParameters”:{“codecs”:[{“mimeType”:“video/H264”,“payloadType”:96,“clockRate”:90000,“parameters”:{“level-asymmetry-allowed”:1,“packetization-mode”:0,“profile-level-id”:“42e01f”},“rtcpFeedback”:[{“type”:“transport-cc”,“parameter”:“”},{“type”:“ccm”,“parameter”:“fir”},{“type”:“nack”,“parameter”:“”},{“type”:“nack”,“parameter”:“pli”}]},{“mimeType”:“video/rtx”,“payloadType”:101,“clockRate”:90000,“parameters”:{“apt”:96},“rtcpFeedback”:``}],“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”:“http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01”,“id”:5,“encrypt”:false,“parameters”:{}},{“uri”:“urn:3gpp:video-orientation”,“id”:11,“encrypt”:false,“parameters”:{}},{“uri”:“urn:ietf:params:rtp-hdrext:toffset”,“id”:12,“encrypt”:false,“parameters”:{}},{“uri”:“http://www.webrtc.org/experiments/rtp-hdrext/playout-delay”,“id”:14,“encrypt”:false,“parameters”:{}}],“encodings”:[{“ssrc”:134486767,“rtx”:{“ssrc”:134486768}}],“rtcp”:{“cname”:“+9KTgndhToyomd1v”,“reducedSize”:true},“mid”:“0”},“type”:“simple”,"producerPaused”:false``}}`  
`{`  
`type: ‘connectConsumerTransport’,`  
`dtlsParameters: { role: ‘client’, fingerprints: [[Object] ] },`  
`transportId: ‘1dad8a34-fe1a-466b-9b87-f8270c2bcb49’,`  
`room: { id: ‘F9pYKLcSCv’ },`  
`peerId: ‘sip:linux_u4@test.org’`  
`}`  
`mediasoup:WebRtcTransport connect() +27ms`  
`mediasoup:Channel request() [method:WEBRTCTRANSPORT_CONNECT] +8ms`  
`mediasoup:Channel request succeeded [method:WEBRTCTRANSPORT_CONNECT, id:16] +0ms`  
`{“type”:“consumerTransportConnected”,“data”:{}}`  
`mediasoup:Channel [pid:26104] RTC::IceServer::RTC::IceServer::HandleTuple() | transition from state ‘new’ to ‘connected’ [hasUseCandidate:false, hasNomination:false, nomination:0] +11ms`  
`mediasoup:Channel [pid:26104] RTC::WebRtcTransport::RTC::WebRtcTransport::OnIceServerSelectedTuple() | ICE selected tuple +0ms`  
`mediasoup:Channel [pid:26104] RTC::WebRtcTransport::RTC::WebRtcTransport::OnIceServerConnected() | ICE connected +0ms`  
`mediasoup:Channel [pid:26104] RTC::WebRtcTransport::RTC::WebRtcTransport::MayRunDtlsTransport() | running DTLS transport in local role ‘server’ +1ms`  
`mediasoup:Channel [pid:26104] RTC::WebRtcTransport::RTC::WebRtcTransport::OnDtlsTransportConnecting() | DTLS connecting +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::Run() | running [role:server] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | DTLS handshake start +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘before SSL initialization’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | role: server, waiting:‘before SSL initialization’] +1ms`  
`mediasoup:Channel [pid:26104] RTC::IceServer::RTC::IceServer::HandleTuple() | transition from state ‘new’ to ‘connected’ [hasUseCandidate:false, hasNomination:false, nomination:0] +0ms`  
`mediasoup:Channel [pid:26104] RTC::WebRtcTransport::RTC::WebRtcTransport::OnIceServerSelectedTuple() | ICE selected tuple +0ms`  
`mediasoup:Channel [pid:26104] RTC::WebRtcTransport::RTC::WebRtcTransport::OnIceServerConnected() | ICE connected +1ms`  
`mediasoup:Channel [pid:26104] RTC::WebRtcTransport::RTC::WebRtcTransport::MayRunDtlsTransport() | running DTLS transport in local role ‘server’ +2ms`  
`mediasoup:Channel [pid:26104] RTC::WebRtcTransport::RTC::WebRtcTransport::OnDtlsTransportConnecting() | DTLS connecting +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::Run() | running [role:server] +1ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | DTLS handshake start +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘before SSL initialization’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | role: server, waiting:‘before SSL initialization’] +1ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘before SSL initialization’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read client hello’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write server hello’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write certificate’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write key exchange’] +1ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write certificate request’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write server done’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | role: server, waiting:‘SSLv3/TLS write server done’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘before SSL initialization’] +1ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read client hello’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write server hello’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write certificate’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write key exchange’] +1ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write certificate request’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write server done’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | role: server, waiting:‘SSLv3/TLS write server done’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write server done’] +1ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read client certificate’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read client key exchange’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read certificate verify’] +1ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read change cipher spec’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read finished’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write change cipher spec’] +1ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write finished’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | DTLS handshake done +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::CheckRemoteFingerprint() | valid remote fingerprint +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::GetNegotiatedSrtpCryptoSuite() | chosen SRTP crypto suite: SRTP_AEAD_AES_256_GCM +1ms`  
`mediasoup:Channel [pid:26104] RTC::WebRtcTransport::RTC::WebRtcTransport::OnDtlsTransportConnected() | DTLS connected +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write server done’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read client certificate’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read client key exchange’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read certificate verify’] +1ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read change cipher spec’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS read finished’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write change cipher spec’] +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | [role:server, action:‘SSLv3/TLS write finished’] +1ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::OnSslInfo() | DTLS handshake done +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::CheckRemoteFingerprint() | valid remote fingerprint +0ms`  
`mediasoup:Channel [pid:26104] RTC::DtlsTransport::RTC::DtlsTransport::GetNegotiatedSrtpCryptoSuite() | chosen SRTP crypto suite: SRTP_AEAD_AES_256_GCM +0ms`  
`mediasoup:Channel [pid:26104] RTC::WebRtcTransport::RTC::WebRtcTransport::OnDtlsTransportConnected() | DTLS connected +0ms`  
`mediasoup:Channel [pid:26104] RTC::Producer::RTC::Producer::GetRtpStream() | ignoring RTX packet for not yet created RtpStream (ssrc lookup) +1ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Producer::RTC::Producer::ReceiveRtpPacket() | no stream found for received packet [ssrc:1982669892] +0ms`  
`mediasoup:Channel [pid:26104] RTC::Producer::RTC::Producer::CreateRtpStream() | [encodingIdx:0, ssrc:134283648, rid:, payloadType:108] +1ms`  
`mediasoup:Channel [pid:26104] RTC::Producer::RTC::Producer::CreateRtpStream() | FIR supported +1ms`  
`mediasoup:Channel [pid:26104] RTC::Producer::RTC::Producer::CreateRtpStream() | NACK supported +0ms`  
`mediasoup:Channel [pid:26104] RTC::Producer::RTC::Producer::CreateRtpStream() | PLI supported +0ms`  
`mediasoup:Channel [pid:26104] RTC::Producer::RTC::Producer::ReceiveRtpPacket() | key frame received [ssrc:134283648, seq:9481] +0ms`  
`mediasoup:Channel [pid:26104] RTC::SimpleConsumer::RTC::SimpleConsumer::SendRtpPacket() | sync key frame received [ssrc:391738667, seq:9481, ts:2718455265] +1ms`  
`mediasoup:Channel [pid:26104] RTC::SimpleConsumer::RTC::SimpleConsumer::SendRtpPacket() | sending sync packet [ssrc:187838411, seq:14302, ts:2718455265] from original [seq:9481] +0ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +16ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +1ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +1ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +15ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +4ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +8ms`  
`mediasoup:Channel [pid:26104] RTC::IceServer::RTC::IceServer::HandleTuple() | transition from state ‘connected’ to ‘completed’ [hasUseCandidate:true, hasNomination:false, nomination:0] +42ms`  
`mediasoup:Channel [pid:26104] RTC::WebRtcTransport::RTC::WebRtcTransport::OnIceServerCompleted() | ICE completed +1ms`  
`mediasoup:Channel [pid:26104] RTC::IceServer::RTC::IceServer::HandleTuple() | transition from state ‘connected’ to ‘completed’ [hasUseCandidate:true, hasNomination:false, nomination:0] +0ms mediasoup:Channel [pid:26104] RTC::WebRtcTransport::RTC::WebRtcTransport::OnIceServerCompleted() | ICE completed +1ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +11ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +19ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +60ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +68ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +15ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +1ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +68ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +37ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +34ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +21ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +42ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +1ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +89ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +1ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +4ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +0ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +61ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +1ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +0ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +0ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +0ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +40ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +35ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +1ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +30ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +34ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +29ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +36ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +0ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +35ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +0ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +40ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +1ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +25ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +0ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +43ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +1ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +14ms`  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +14ms`  
`mediasoup:Producer getStats() +1s`  
`mediasoup:Channel request() [method:PRODUCER_GET_STATS] +919ms`  
`mediasoup:Channel request succeeded [method:PRODUCER_GET_STATS, id:17] +0ms`  
`Producer stats: `  
`mediasoup:WARN:Channel [pid:26104] RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] +58ms`

`mediasoup:PlainTransport getStats() +1s`  
`mediasoup:Channel request() [method:TRANSPORT_GET_STATS] +1ms`  
`mediasoup:Channel request succeeded [method:TRANSPORT_GET_STATS, id:20] +0ms`  
`PlainTransport stats: [`  
`{`  
`transportId: ‘b4763184-59cb-4ff1-9865-02b10c12c53a’,`  
`timestamp: 3036252608,`  
`sctpState: undefined,`  
`bytesReceived: 0,`  
`recvBitrate: 0,`  
`bytesSent: 0,`  
`sendBitrate: 0,`  
`rtpBytesReceived: 0,`  
`rtpRecvBitrate: 0,`  
`rtpBytesSent: 0,`  
`rtpSendBitrate: 0,`  
`rtxBytesReceived: 0,`  
`rtxRecvBitrate: 0,`  
`rtxBytesSent: 0,`  
`rtxSendBitrate: 0,`  
`probationBytesSent: 0,`  
`probationSendBitrate: 0,`  
`availableOutgoingBitrate: undefined,`  
`availableIncomingBitrate: 0,`  
`maxIncomingBitrate: undefined,`  
`maxOutgoingBitrate: undefined,`  
`minOutgoingBitrate: undefined,`  
`rtpPacketLossReceived: 0,`  
`rtpPacketLossSent: undefined,`  
`type: ‘plain-rtp-transport’,`  
`rtcpMux: true,`  
`comedia: false,`  
`tuple: {`  
`localIp: ‘censored’,`  
`localAddress: ‘censored’,`  
`localPort: 10067,`  
`remoteIp: ‘censored’,`  
`remotePort: censored,`  
`protocol: ‘udp’`  
`},`  
`rtcpTuple: undefined`  
`}`  
`]`

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [November 24, 2025, 11:00am UTC](https://mediasoup.discourse.group/t/plaintransport-producer-not-receiving-rtp-packets-ssrc-mismatch/6914/14 "2025-11-24T11:00:44Z")

</div>

I insist that I cannot check/verify your code.

You are getting this error:

```auto
RTC::Transport::RTC::Transport::ReceiveRtpPacket() | no suitable Producer for received RTP packet [ssrc:187838411, payloadType:96] 

```

So, what I would do is:

1. Ensure that your SDK client is sending RTP to the IP and port in which your mediasoup PlainTransport is listening for RTP. This is, `plainTransport.tuple.localAddress` and `plainTransport.tuple.localPort`.
2. Ensure that the Producer you are creating in the mediasoup PlainTransport has RTP parameters matching that SSRC and payload type.
3. Using wireshark or a similar tool, verify that the RTP packets that your SDK client sends to mediasoup have that SSRC and payload type and verify that those packets are being sent to the local IP and port of the PlainTransport where you are calling `produce()`.
