# !broadcaster.data.rtpCapabilities is for producer or consumer

**URL:** <https://mediasoup.discourse.group/t/broadcaster-data-rtpcapabilities-is-for-producer-or-consumer/2400>\
**Category:** mediasoup-demo\
**Created:** [February 2, 2021, 11:25pm UTC](https://mediasoup.discourse.group/t/broadcaster-data-rtpcapabilities-is-for-producer-or-consumer/2400 "2021-02-02T23:25:22Z")\
**Posts on this page:** 2\
**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:25pm UTC](https://mediasoup.discourse.group/t/broadcaster-data-rtpcapabilities-is-for-producer-or-consumer/2400/1 "2021-02-02T23:25:22Z")

</div>

I am working my through the mediasoup api, using the demo as a reference.  
I have got ffmpeg and gstreamer examples working as a producers, but when trying to connect a gstreamer producer to gstreamer consumer, the API response is getting an error message that is not specific.

following the docs [https://mediasoup.org/documentation/v3/communication-between-client-and-server/#consuming-media-in-an-external-endpoint](https://mediasoup.org/documentation/v3/communication-between-client-and-server/#consuming-media-in-an-external-endpoint) the steps for the consumer I am doing are

```auto
#create the producer video stream and get producerId
res=$(${HTTPIE_COMMAND} \
	POST ${SERVER_URL}/rooms/${ROOM_ID}/broadcasters/${BROADCASTER_ID}/transports/${videoTransportId}/producers \
	kind="video" \
	rtpParameters:="{ \"codecs\": [{ \"mimeType\":\"video/vp8\", \"payloadType\":${VIDEO_PT}, \"clockRate\":90000 }], \"encodings\": [{ \"ssrc\":${VIDEO_SSRC} }] }" \
    )

eval "$(echo ${res} | jq -r '@sh "myProducerId=\(.id)"')"
# -----------
# ${myProducerId} used below in consumer
# ----------

#create a broadcaster
${HTTPIE_COMMAND} \
	POST ${SERVER_URL}/rooms/${ROOM_ID}/broadcasters \
	id="${BROADCASTER_ID}" \
	displayName="rxname" \
	device:='{"name": "rx"}'

#create plain transport
res=$(${HTTPIE_COMMAND} \
	POST ${SERVER_URL}/rooms/${ROOM_ID}/broadcasters/${BROADCASTER_ID}/transports \
	type="plain" \
	comedia:=true \
	rtcpMux:=false \
	2> /dev/null)

#eval the response andf get the details
eval "$(echo ${res} | jq -r '@sh "videoTransportId=\(.id) videoTransportIp=\(.ip) videoTransportPort=\(.port) videoTransportRtcpPort=\(.rtcpPort)"')"

#generate the consumer
${HTTPIE_COMMAND} -v \
    POST ${SERVER_URL}/rooms/${ROOM_ID}/broadcasters/${BROADCASTER_ID}/transports/${videoTransportId}/consume \
    producerId=${myProducerId}

```

this however throws an error from

> Room.js

```auto
if (!broadcaster.data.rtpCapabilities)
			throw new Error('broadcaster does not have rtpCapabilities');

```

So my question is, what does this broadcaster refer to, the producer or the consumer?

---

<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, 11:00am UTC](https://mediasoup.discourse.group/t/broadcaster-data-rtpcapabilities-is-for-producer-or-consumer/2400/2 "2021-02-03T11:00:12Z")

</div>

after some trial and error, I believe in my case this is reference to the consumer as I did not find a reference in the created producer

example of producer

```auto
${HTTPIE_COMMAND} \
	POST ${SERVER_URL}/rooms/${ROOM_ID}/broadcasters \
	id="${BROADCASTER_ID}" \
	displayName="Broadcaster" \
	device:='{"name": "GStreamer"}'

```

example of consumer

```auto
POST ${SERVER_URL}/rooms/${ROOM_ID}/broadcasters \
	id="${BROADCASTER_ID}" \
	displayName="rxname" \
	device:='{"name": "rx"}' \
       rtpCapabilities:=

```
