我对该主题比较陌生,因此我的知识可能有一些根本的鸿沟,但是我试图使用GStreamer使用IPv6(在Windows 10上)将MPEG2-TS流发送到嵌入式设备。嵌入式设备通过USB以太网适配器连接到媒体转换器(RJ45到BroadR-Reach)。
如果我使用IPv4进行广播(例如192.168.1.255),则一切正常。我可以在设备上毫无问题地接收流。有效的示例命令:
gst-launch-1.0.exe -v filesrc location=d:/video.ts do-timestamp=false ! \ "video/mpegts, systemstream=(boolean)true, packetsize=(int)188" ! \ tsparse set-timestamps=true ! rtpmp2tpay mtu=1200 pt=127 ! \ udpsink host=192.168.1.255 port=5001
现在我需要通过多播对IPv6进行此操作,我不知道该怎么做!
假定嵌入式设备的IPv6地址为fe80::1:2:3
,而PC上以太网接口的IPv6地址为fe80::1:2:4
。我将哪个地址用作多播?我已经尝试过ff0x::1:2:4
和ff1x::1:2:4
(其中x = 1,2,3),但是数据是通过计算机的主网络接口传输的(例如WiFi接口,已使用Wireshark进行了检查)。>
如果我尝试添加multicast-iface
的选项,GStreamer会出现以下错误:
无法加入多播组:加入多播组时出错: 请求的地址在其上下文中无效。
答案 0 :(得分:0)
好吧,所以在向各种邮件列表和论坛发布类似的问题之后,我了解到您不能以这种方式绑定到接口,此外,多播流量始终通过具有最低度量标准的接口进行路由。因此,实现我想要的目标的唯一可能性是:
由于无法相对于网络路由/度量标准对Windows计算机进行任何永久性更改,因此我使用了第3个选项的修改版本,即使用USB在Linux上运行GStreamer的VirtualBox虚拟机-将以太网适配器设置为唯一的活动网络接口。