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 the steps for the consumer I am doing are
#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
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?