# Gstreamer -\> PlainTransport send opus

**URL:** <https://mediasoup.discourse.group/t/gstreamer-plaintransport-send-opus/2394>\
**Category:** Integration\
**Created:** [February 2, 2021, 4:16pm UTC](https://mediasoup.discourse.group/t/gstreamer-plaintransport-send-opus/2394 "2021-02-02T16:16:30Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![hdoru](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/hdoru/32/696_2.png) [@hdoru](https://mediasoup.discourse.group/u/hdoru)\
**Post date:** [February 2, 2021, 4:16pm UTC](https://mediasoup.discourse.group/t/gstreamer-plaintransport-send-opus/2394/1 "2021-02-02T16:16:30Z")

</div>

hello everyone

`gst-launch-1.0 audiotestsrc ! audioresample ! audio/x-raw,channels=2,rate=48000 ! opusenc bitrate=20000 ! rtpopuspay pt=101 ssrc=1112223 ! udpsink host=127.0.0.1 port=20157`

gstreamer sending rtp packet to mediasoup

MediaSoup PlainTransport =\>

```auto
 this.AudioProducer = await this.AudioPlainTransPort.produce(
                  {
                    kind : 'audio',
                    rtpParameters :
                    {
                      codecs :
                      [
                        {
                          mimeType : 'audio/opus',
                          clockRate : 48000,
                          payloadType : 101,
                          channels : 2,
                          rtcpFeedback : [],
                          parameters : { 'sprop-stereo': 1 }
                        }
                      ],
                      encodings : [{ ssrc: 1112223 }]
                    },
                    paused: false
                  });

```

but AudioProducer stats is empty

```auto
 this.AudioProducer.getStats()
                          .then(stats => console.warn("this.AudioProducer => "+JSON.stringify(stats)));

```

output  
this.AudioProducer =\> []

---

<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:** [February 2, 2021, 4:23pm UTC](https://mediasoup.discourse.group/t/gstreamer-plaintransport-send-opus/2394/2 "2021-02-02T16:23:29Z")

</div>

There are tons of debugs and log tags in mediasoup to diagnose what is wrong with received RTP (if any). Use them.

---

<div class="post-metadata">

**Author:** ![hdoru](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/hdoru/32/696_2.png) [@hdoru](https://mediasoup.discourse.group/u/hdoru)\
**Post date:** [February 2, 2021, 4:59pm UTC](https://mediasoup.discourse.group/t/gstreamer-plaintransport-send-opus/2394/3 "2021-02-02T16:59:27Z")

</div>

mediasoup:Router createPlainTransport() +60ms  
mediasoup:Channel request() [method:router.createPlainTransport, id:10] +17ms  
mediasoup:Channel request succeeded [method:router.createPlainTransport, id:10] +1ms  
mediasoup:Transport constructor() +49ms  
mediasoup:PlainTransport constructor() +72ms  
mediasoup:PlainTransport connect() +0ms  
mediasoup:Channel request() [method:transport.connect, id:11] +0ms  
mediasoup:Transport consume() +0ms  
mediasoup:Channel request() [method:transport.consume, id:12] +0ms  
mediasoup:Channel request succeeded [method:transport.connect, id:11] +1ms  
mediasoup:Channel request succeeded [method:transport.consume, id:12] +0ms  
mediasoup:Consumer constructor() +19ms  
mediasoup:Consumer resume() +0ms  
mediasoup:Channel request() [method:consumer.resume, id:13] +0ms  
mediasoup:Channel request succeeded [method:consumer.resume, id:13] +1ms  
mediasoup:Router createWebRtcTransport() +3ms  
mediasoup:Channel request() [method:router.createWebRtcTransport, id:12] +1ms  
mediasoup:Channel request succeeded [method:router.createWebRtcTransport, id:12] +1ms  
mediasoup:Transport constructor() +5ms  
mediasoup:WebRtcTransport constructor() +37ms  
mediasoup:Transport consume() +2ms  
mediasoup:Channel request() [method:transport.consume, id:13] +4ms  
mediasoup:Channel request succeeded [method:transport.consume, id:13] +1ms  
mediasoup:Consumer constructor() +8ms  
mediasoup:WebRtcTransport connect() +9ms  
mediasoup:Channel request() [method:transport.connect, id:14] +5ms  
mediasoup:Channel request succeeded [method:transport.connect, id:14] +0ms  
mediasoup:Producer getStats() +2s  
mediasoup:Channel request() [method:producer.getStats, id:15] +986ms  
mediasoup:Channel request succeeded [method:producer.getStats, id:15] +1ms  
⚠ this.AudioProducer =\> []  
mediasoup:Consumer getStats() +2s  
mediasoup:Channel request() [method:consumer.getStats, id:16] +1s  
mediasoup:Channel request succeeded [method:consumer.getStats, id:16] +1ms  
⚠ this.audioConsumer =\> [{“bitrate”:0,“byteCount”:0,“firCount”:0,“fractionLost”:0,“kind”:“audio”,“mimeType”:“audio/opus”,“nackCount”:0,“nackPacketCount”:0,“packetCount”:0,“packetsDiscarded”:0,“packetsLost”:0,“packetsRepaired”:0,“packetsRetransmitted”:0,“pliCount”:0,“score”:10,“ssrc”:327253245,“timestamp”:1351609,“type”:“outbound-rtp”}]  
mediasoup:Producer getStats() +2s  
mediasoup:Channel request() [method:producer.getStats, id:17] +990ms  
mediasoup:Channel request succeeded [method:producer.getStats, id:17] +0ms  
⚠ this.AudioProducer =\> []

---

<div class="post-metadata">

**Author:** ![hdoru](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/hdoru/32/696_2.png) [@hdoru](https://mediasoup.discourse.group/u/hdoru)\
**Post date:** [February 2, 2021, 5:00pm UTC](https://mediasoup.discourse.group/t/gstreamer-plaintransport-send-opus/2394/4 "2021-02-02T17:00:02Z")

</div>

export DEBUG=“mediasoup\*” && npm run startserver

```auto
  "worker": {
        "rtcMinPort": 20000,
        "rtcMaxPort": 65535,
        "logLevel": "debug",
        "logTags:": [
            "info",
            "ice",
            "dtls",
            "rtp",
            "srtp",
            "rtcp",
            "rtx",
            "bwe",
            "score",
            "simulcast",
            "svc"
        ]
    }

```

no error in logs

---

<div class="post-metadata">

**Author:** ![hdoru](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/hdoru/32/696_2.png) [@hdoru](https://mediasoup.discourse.group/u/hdoru)\
**Post date:** [February 3, 2021, 9:04am UTC](https://mediasoup.discourse.group/t/gstreamer-plaintransport-send-opus/2394/5 "2021-02-03T09:04:43Z")

</div>

```auto
#!/usr/bin/env bash

AUDIO_SSRC=1112223
AUDIO_PT=100
MEDIA_FILE='/home/hd/Downloads/hd2.mp4'
audioTransportPort=55517
audioTransportRtcpPort=55928
gst-launch-1.0 rtpbin name=rtpbin filesrc location=${MEDIA_FILE} ! qtdemux name=demux demux.audio_0 ! queue ! decodebin ! audioresample ! audioconvert ! opusenc ! rtpopuspay pt=100 ssrc=1112223 ! rtpbin.send_rtp_sink_1 rtpbin.send_rtp_src_1 ! udpsink host=127.0.0.1 port=${audioTransportPort} rtpbin.send_rtcp_src_1 ! udpsink host=127.0.0.1 port=${audioTransportRtcpPort} sync=false async=false

```

```auto
this.AudioPlainTransPort = await this.Router.createPlainTransport(
              { 
                listenIp : '127.0.0.1',
                rtcpMux : false,
                comedia : true
                                                  
              });
              const audioRtpPort = this.AudioPlainTransPort.tuple.localPort;
              const audioRtcpPort = this.AudioPlainTransPort.rtcpTuple.localPort;
              const ip = this.AudioPlainTransPort.tuple.localIp;
              
              
              console.log("audio ip =>>>"+ip);
              console.log("audio rtp port =>>>"+audioRtpPort);
              console.log("audio rtcp port =>>>"+audioRtcpPort);

              var random_ssrc = Date.now();
              this.AudioProducer = await this.AudioPlainTransPort.produce(
                  {
                    kind : 'audio',
                    rtpParameters :
                    {
                      codecs :
                      [
                        {
                          mimeType : 'audio/opus',
                          clockRate : 48000,
                          payloadType : 100,
                          channels : 2,
                          rtcpFeedback	: [],
						            	parameters	: { 'sprop-stereo': 1}
                        }
                      ],
                      encodings : [{ ssrc: 1112223 }]
                    }
                  });
                  console.log( "id "+this.AudioProducer.id+" audio :"+JSON.stringify(this.AudioProducer.rtpParameters ));
                  setInterval(() =>
                  {
                      if(this.AudioProducer != null)
                      {
                          this.AudioProducer.getStats()
                          .then(stats => console.warn("this.AudioProducer => "+JSON.stringify(stats)));
                      }
                      
                  }, 2000);

```

output

```auto
audio ip =>>>127.0.0.1
audio rtp port =>>>55517
audio rtcp port =>>>55928
id 492fd75c-c160-47f1-9aa7-1178e59c8180 audio :{"codecs":[{"mimeType":"audio/opus","clockRate":48000,"payloadType":100,"channels":2,"rtcpFeedback":[],"parameters":{"sprop-stereo":1}}],"encodings":[{"ssrc":1112223,"dtx":false}],"headerExtensions":[],"rtcp":{"reducedSize":true,"cname":"768b7cdf"}}

```

It working this way
