无法使用 RIST 协议接收多播 RIST 流,但 RTP 可以工作

无法使用 RIST 协议接收多播 RIST 流,但 RTP 可以工作

我正在使用 gstreamer 来多播 RIST 流:

gst-launch-1.0 filesrc location=test.mts ! tee name=t ! queue ! typefind ! rtpmp2tpay ! ristsink address=239.255.0.1 port=5004 t. ! queue ! tsdemux ! fakesink sync=true

然后在我的客户端上,我将 RIST 流转换为标准 RTP 并在 VLC 中对其进行测试:

gst-launch-1.0 ristsrc address=239.255.0.1 port=5004 ! queue ! udpsink host=127.0.0.1 port=5010

这不起作用,流无法播放。但如果我通过 rtpsrc 接收它,它就可以工作:

gst-launch-1.0 rtpsrc address=239.255.0.1 port=5004 ! queue ! udpsink host=127.0.0.1 port=5010

请记住,我仍在服务器上使用 ristsink,但使用 rtpsink 接收。

同样,如果我尝试在 VLC 中播放,rist://@239.255.0.1:5004则会失败。但是rtp://@239.255.0.1:5004可以播放。

如果我使用 RTP 接收器,我将失去 RIST 的优势。因此,我非常希望此设置能够与 ristsrc 和 rist:// 配合使用,但我不知道我遗漏了什么。

编辑:

如果我使用单播,RIST 似乎可以正常工作。

gst-launch-1.0 filesrc location=shadient.ts ! tee name=t ! queue ! typefind ! rtpmp2tpay ! ristsink address=127.0.0.1 port=5004 t. ! queue ! tsdemux ! fakesink sync=true

gst-launch-1.0 ristsrc address=127.0.0.1 port=5004 ! queue ! udpsink host=127.0.0.1 port=5010

答案1

这个问题最终有了一个简单的解决方案。我只需要multicast-loopback在接收端将其设置为 true ristsrc。不过我不太清楚为什么这样做有效,如果有人能解释一下我会很高兴。

相关内容