# an example of

**URL:** <https://mediasoup.discourse.group/t/an-example-of/2401>\
**Category:** mediasoup libraries\
**Created:** [February 2, 2021, 11:59pm UTC](https://mediasoup.discourse.group/t/an-example-of/2401 "2021-02-02T23:59:59Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![artvan](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@artvan](https://mediasoup.discourse.group/u/artvan)\
**Post date:** [February 2, 2021, 11:59pm UTC](https://mediasoup.discourse.group/t/an-example-of/2401/1 "2021-02-02T23:59:59Z")

</div>

could someone help me with a basic example. I am trying to understand the [transport.consume()](https://mediasoup.org/documentation/v3/mediasoup/api/#transport-consume) api

according to the docs [https://mediasoup.org/documentation/v3/mediasoup/rtp-parameters-and-capabilities/#RtpCapabilities](https://mediasoup.org/documentation/v3/mediasoup/rtp-parameters-and-capabilities/#RtpCapabilities) these should be passed with a create broadcaster request, but I can’t find an example of what the format should be.

following the link [https://mediasoup.org/documentation/v3/mediasoup/rtp-parameters-and-capabilities/#RtpCodecCapability](https://mediasoup.org/documentation/v3/mediasoup/rtp-parameters-and-capabilities/#RtpCodecCapability) I am assuming I need an array that reflects

```auto
codecs: {
	{	channels: 2
		clockRate: 48000
		kind: "audio"
		mimeType: "audio/opus"
	},
	{	clockRate: 90000,
		kind: "video",
		mimeType: "video/VP8",
		parameters: {
			x-google-start-bitrate: 1000 },
		preferredPayloadType: 101,
		rtcpFeedback: { 
			{type: "nack", parameter: ""},
			{type: "nack", parameter: "pli"},
			{type: "ccm", parameter: "fir"},
			{type: "goog-remb", parameter: ""},
			{type: "transport-cc", parameter: ""} }
	}
}
headerExtensions: {...} //etc

```

I am trying to get a gstreamer app as a consumer for the gstreamer demo producer.  
Can someone provide a basic example of how you format such an array.

---

<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 3, 2021, 12:09am UTC](https://mediasoup.discourse.group/t/an-example-of/2401/2 "2021-02-03T00:09:57Z")

</div>

A good example of those `rtpCapabilities` is mediasoup `router.rtpCapabilities` (documented in the API section).

Also: [mediasoup :: Communication Between Client and Server](https://mediasoup.org/documentation/v3/communication-between-client-and-server/#consuming-media-in-an-external-endpoint)

---

<div class="post-metadata">

**Author:** ![artvan](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@artvan](https://mediasoup.discourse.group/u/artvan)\
**Post date:** [February 3, 2021, 2:27pm UTC](https://mediasoup.discourse.group/t/an-example-of/2401/3 "2021-02-03T14:27:25Z")

</div>

for those needing a template that works for me, feel free to suggest corrections or omissions.

```auto
    rtpCapabilities:="{
	\"headerExtensions\" :
      [
        {
          \"kind\" : \"video\",
          \"uri\" : \"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\", 
          \"preferredId\" : 4,
          \"preferredEncrypt\" : false
        },
        {
          \"kind\" : \"audio\",
          \"uri\" : \"urn:ietf:params:rtp-hdrext:ssrc-audio-level\",
          \"preferredId\" : 8,
          \"preferredEncrypt\" : false
        },
        {
          \"kind\" : \"video\",
          \"uri\" : \"urn:3gpp:video-orientation\",
          \"preferredId\" : 9,
          \"preferredEncrypt\" : false
        },
        {
          \"kind\" : \"video\",
          \"uri\" : \"urn:ietf:params:rtp-hdrext:toffset\",
          \"preferredId\" : 10,
          \"preferredEncrypt\" : false
        }
      ],
      \"codecs\": [
		{
            \"kind\": \"audio\",
			\"mimeType\": \"audio/opus\",
            \"payloadType\":\"${AUDIO_PT}\",
            \"clockRate\":48000
        },
        {
            \"rtcpFeedback\": [
				{\"type\": \"nack\", \"parameter\": \"\"},
				{\"type\": \"nack\", \"parameter\": \"pli\"},
				{\"type\": \"ccm\", \"parameter\": \"fir\"},
				{\"type\": \"goog-remb\", \"parameter\": \"\"},
				{\"type\": \"transport-cc\", \"parameter\": \"\"} 
			],
            \"clockRate\":90000,
            \"payloadType\":\"${VIDEO_PT}\",
            \"kind\": \"video\",
			\"mimeType\": \"video/vp8\"
        }
    ]
}"

```

---

<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 3, 2021, 2:44pm UTC](https://mediasoup.discourse.group/t/an-example-of/2401/4 "2021-02-03T14:44:49Z")

</div>

Actually rtpCapabilities in consume() must represent the real RTP capabilities/features supported by the consuming endpoint. Does it?

For example: it doesn’t make any sense that you announce REMB or transport-cc support if your endpoint does not support them (mediasoup server will assume that it does and will behave different).

---

<div class="post-metadata">

**Author:** ![artvan](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@artvan](https://mediasoup.discourse.group/u/artvan)\
**Post date:** [February 3, 2021, 3:44pm UTC](https://mediasoup.discourse.group/t/an-example-of/2401/5 "2021-02-03T15:44:57Z")

</div>

yes it does, it is just for a template example that passes the validation test
