通过特定网络接口使用IPv6的GStreamer多播

通过特定网络接口使用IPv6的GStreamer多播,gstreamer,ipv6,multicast,rtp,mpeg2-ts,Gstreamer,Ipv6,Multicast,Rtp,Mpeg2 Ts,我对这个主题比较陌生,所以我的知识可能有一些基本的差距,但我正在尝试使用GStreamer向使用IPv6(在Windows 10上)的嵌入式设备发送MPEG2-TS流。嵌入式设备通过USB以太网适配器连接到媒体转换器(RJ45-to-BroadR-Reach) 如果我使用IPv4进行广播(例如192.168.1.255),一切正常。我可以在设备上接收流,没有任何问题。工作正常的示例命令: gst-launch-1.0.exe-v filesrc location=d:/video.ts do t

我对这个主题比较陌生,所以我的知识可能有一些基本的差距,但我正在尝试使用GStreamer向使用IPv6(在Windows 10上)的嵌入式设备发送MPEG2-TS流。嵌入式设备通过USB以太网适配器连接到媒体转换器(RJ45-to-BroadR-Reach)

如果我使用IPv4进行广播(例如192.168.1.255),一切正常。我可以在设备上接收流,没有任何问题。工作正常的示例命令:

gst-launch-1.0.exe-v filesrc location=d:/video.ts do timestamp=false\
“视频/mpegts,systemstream=(布尔值)true,packetsize=(int)188”\
tsparse set timestamps=true!rtpmp2tpay mtu=1200 pt=127\
udpsink主机=192.168.1.255端口=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检查的)

如果我尝试添加
多播iface
选项,GStreamer会出现以下错误:

无法加入多播组:加入多播组时出错: 请求的地址在其上下文中无效


好的,在向各种邮件列表和论坛发布了类似的问题之后,我了解到您不能以这种方式绑定到接口,此外,多播流量总是通过具有最低度量的接口进行路由。因此,实现我想要的目标的唯一可能性是:

  • 使用所讨论的接口的度量
  • 为所需地址范围添加路由
  • 以某种方式强制所有来自GStreamer的流量通过所需接口(例如ForceBindIP)
由于我无法对Windows机器的网络路由/指标进行任何永久性更改,因此我选择了第三个选项的修改版本,即在Linux上运行GStreamer的VirtualBox虚拟机,其中USB以太网适配器设置为唯一的活动网络接口