Gstreamer Mediasoupbin not able to receive the video stream when hosted on AWS

i am using mediasoupbin to receive video stream in gstreamer.
every thing works fine on local environment but i cannot receive video after hosting it on aws. I can receive the same video stream in the browser with mediasoup apis. There are no errors in logs it shows pipline is playing but does not display the video stream.
pipeline is something like this

gst-launch-1.0 mediasoupbin_py name=ms server-url="http://myawspublicIP:port/myapi" server-ip=awspublicip local-ip=127.0.0.1 \
    ms. ! "video/x-raw,producer-id=<video producer id>" ! autovideosink sync=false

mediasoupbin and Gstreamer logs from AWS

0:00:00.187206324 14251 0x55cab179f790 INFO                  python mediasoupbin.py:113:do_request_new_pad: ms do_request_new_pad name_template=video_src direction=1 name=None caps=None
INFO:Signaling:__init__ serverUrl=http://awspublicip:3000/rtpCapabilities broadcasterId=b99185189
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): awspublicip
DEBUG:urllib3.connectionpool:http://awspublicip:3000 "GET /rtpCapabilities HTTP/1.1" 200 2524
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): awspublicip
DEBUG:urllib3.connectionpool:http://awspublicip:3000 "POST /rtpCapabilities/broadcasters HTTP/1.1" 200 12
INFO:Signaling:room: {'peers': []}
0:00:00.986101772 14251 0x55cab179f790 INFO                  python mediasoupbin.py:182:on_pad_linked: video_src on_pad_linked video/x-raw, producer-id=(string)f6be70e3-2c02-40c8-944a-8f3a879b7f6c
INFO:MediaSoup:consume {'producerId': 'f6be70e3-2c02-40c8-944a-8f3a879b7f6c', 'local_ip': '192.168.0.105', 'local_rtpPort': 46002, 'local_rtcpPort': 51955}
INFO:Signaling:request createPlainRtpTransport
INFO:Signaling:do_createPlainRtpTransport {'type': 'plain', 'comedia': False, 'rtcpMux': False, 'enableSctp': False, 'appData': {}}
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): awspublicip
DEBUG:urllib3.connectionpool:http://awspublicip:3000 "POST /rtpCapabilities/broadcasters/b99185189/transports HTTP/1.1" 200 96
INFO:MediaSoup:consume createPlainRtpTransport {'id': '84da2c18-eae4-42c3-8618-5154638e1a1a', 'ip': 'awspublicip', 'port': 12881, 'rtcpPort': 31354}
INFO:Signaling:request plainRtpTransportConnect
INFO:Signaling:do_plainRtpTransportConnect {'transportId': '84da2c18-eae4-42c3-8618-5154638e1a1a', 'ip': '192.168.0.105', 'port': 46002, 'rtcpPort': 51955}
INFO:Signaling:do_transportProduce {'transportId': '84da2c18-eae4-42c3-8618-5154638e1a1a', 'ip': '192.168.0.105', 'port': 46002, 'rtcpPort': 51955}
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): awspublicip
DEBUG:urllib3.connectionpool:http://awspublicip:3000 "POST /rtpCapabilities/broadcasters/b99185189/transports/84da2c18-eae4-42c3-8618-5154638e1a1a/connect HTTP/1.1" 200 2
INFO:MediaSoup:consume plainRtpTransportConnect {}
INFO:Signaling:request transportConsume
INFO:Signaling:do_transportConsume {'producerId': 'f6be70e3-2c02-40c8-944a-8f3a879b7f6c', 'transportId': '84da2c18-eae4-42c3-8618-5154638e1a1a', 'paused': True, 'rtpCapabilities': {'codecs': [{'mimeType': 'audio/opus', 'clockRate': 48000, 'kind': 'audio', 'preferredPayloadType': 100, 'channels': 2, 'parameters': {'useinbandfec': 1}, 'rtcpFeedback': []}, {'mimeType': 'video/VP8', 'clockRate': 90000, 'kind': 'video', 'preferredPayloadType': 101, 'parameters': {}, 'rtcpFeedback': [{'type': 'nack'}]}, {'mimeType': 'video/VP9', 'clockRate': 90000, 'kind': 'video', 'preferredPayloadType': 103, 'parameters': {}, 'rtcpFeedback': [{'type': 'nack'}]}, {'mimeType': 'video/H264', 'clockRate': 90000, 'kind': 'video', 'preferredPayloadType': 107, 'parameters': {'packetization-mode': 1, 'profile-level-id': '42e01f', 'level-asymmetry-allowed': 1}, 'rtcpFeedback': [{'type': 'nack'}]}, {'mimeType': 'video/H265', 'clockRate': 90000, 'kind': 'video', 'preferredPayloadType': 109, 'parameters': {}, 'rtcpFeedback': [{'type': 'nack'}]}]}}
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): awspublicip
DEBUG:urllib3.connectionpool:http://awspublicip:3000 "POST /rtpCapabilities/broadcasters/b99185189/transports/84da2c18-eae4-42c3-8618-5154638e1a1a/consume HTTP/1.1" 200 492
INFO:MediaSoup:consume transportConsume {'id': 'c5940dd8-c45e-48cc-a73c-d6cedb9a278d', 'producerId': 'f6be70e3-2c02-40c8-944a-8f3a879b7f6c', 'kind': 'video', 'rtpParameters': {'codecs': [{'mimeType': 'video/H264', 'payloadType': 107, 'clockRate': 90000, 'parameters': {'level-asymmetry-allowed': 1, 'packetization-mode': 1, 'profile-level-id': '42e01f'}, 'rtcpFeedback': [{'type': 'nack', 'parameter': ''}]}], 'headerExtensions': [], 'encodings': [{'ssrc': 748690711}], 'rtcp': {'cname': '1EsjQPgz4AhigNmd', 'reducedSize': True, 'mux': True}, 'mid': '0'}, 'type': 'simple'}
INFO:Signaling:on producer:remove
0:00:02.186461115 14251 0x55cab179f790 INFO                  python mediasoupbin.py:280:_consume_done: ms _consume_done {'producerId': 'f6be70e3-2c02-40c8-944a-8f3a879b7f6c', 'local_ip': '192.168.0.105', 'local_rtpPort': 46002, 'local_rtcpPort': 51955, 'transportId': '84da2c18-eae4-42c3-8618-5154638e1a1a', 'ip': 'awspublicip', 'rtpPort': 12881, 'rtcpPort': 31354, 'sctpParameters': None, 'kind': 'video', 'consumerId': 'c5940dd8-c45e-48cc-a73c-d6cedb9a278d', 'encoding_name': 'H264', 'codec': 'h264', 'clockRate': 90000, 'pt': 107, 'ssrc': 748690711}
0:00:02.186581839 14251 0x55cab179f790 DEBUG                 python mediasoupbin.py:283:_consume_done: ms _produce_done desc=
rtpbin name=rtpbin latency=200 rtp-profile=avpf do-retransmission=true

udpsrc name=rtp_udpsrc caps=application/x-rtp,media=video,clock-rate=90000,encoding-name=H264,payload=107
    ! rtpbin.recv_rtp_sink_0

rtpbin.
    ! rtph264depay 
    ! avdec_h264 name=sink

rtpbin.send_rtcp_src_0 
    ! udpsink name=rtcp_udpsink host=awspublicip port=31354 sync=false async=false 

udpsrc name=rtcp_udpsrc 
    ! rtpbin.recv_rtcp_sink_0 

INFO:MediaSoup:resumeConsumer 84da2c18-eae4-42c3-8618-5154638e1a1a c5940dd8-c45e-48cc-a73c-d6cedb9a278d
INFO:Signaling:request consumerResume
INFO:Signaling:do_consumerResume {'transportId': '84da2c18-eae4-42c3-8618-5154638e1a1a', 'consumerId': 'c5940dd8-c45e-48cc-a73c-d6cedb9a278d'}
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): awspublicip
DEBUG:urllib3.connectionpool:http://awspublicip:3000 "POST /rtpCapabilities/broadcasters/b99185189/transports/84da2c18-eae4-42c3-8618-5154638e1a1a/resume HTTP/1.1" 200 0
0:00:02.657270560 14251 0x55cab179f790 INFO                  python mediasoupbin.py:306:_resume_consumer_done: ms _resume_consumer_done
Setting pipeline to PAUSED ...
0:00:02.661493520 14251 0x55cab179f790 DEBUG                 python mediasoupbin.py:208:do_state_changed: ms do_state_changed oldstate=<enum GST_STATE_NULL of type Gst.State> newstate=<enum GST_STATE_READY of type Gst.State> pending=<enum GST_STATE_VOID_PENDING of type Gst.State>
0:00:02.661763232 14251 0x55cab179f790 DEBUG                 python mediasoupbin.py:208:do_state_changed: ms do_state_changed oldstate=<enum GST_STATE_READY of type Gst.State> newstate=<enum GST_STATE_PAUSED of type Gst.State> pending=<enum GST_STATE_VOID_PENDING of type Gst.State>
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
0:00:02.662921946 14251 0x55cab179f790 DEBUG                 python mediasoupbin.py:208:do_state_changed: ms do_state_changed oldstate=<enum GST_STATE_PAUSED of type Gst.State> newstate=<enum GST_STATE_PLAYING of type Gst.State> pending=<enum GST_STATE_VOID_PENDING of type Gst.State>
New clock: GstSystemClock

@vpalmisano can you please look into this issue

Usama try not to summon users, many can help but may not be able to. Happy holidays.

For remotely hosted, can you DTLS connect at all?
(You say under browser you can, if not mistaken)

If it can be connected then the issue is not with media-soup but your setup, you would need to ensure it’s not being blocked by ports/policy or your settings pushed through. There are examples posted in documentation that may help but generally speaking if above is true it’s networking related and not mediasoup at all.

1 Like