我有一个封闭的第三方系统,它发送我想在同一台计算机上的两个不同程序中访问的单播 UDP 流 (MPEG-TS)。我无法更改源上的任何内容,甚至无法更改 IP 或端口。
除了编写我自己的小程序来捕获流然后创建新流并重新发送两者之外,还有其他选择吗?
似乎两个目标程序中只有一个处理多播,所以我需要两个单播流。
我有一个封闭的第三方系统,它发送我想在同一台计算机上的两个不同程序中访问的单播 UDP 流 (MPEG-TS)。我无法更改源上的任何内容,甚至无法更改 IP 或端口。
除了编写我自己的小程序来捕获流然后创建新流并重新发送两者之外,还有其他选择吗?
似乎两个目标程序中只有一个处理多播,所以我需要两个单播流。
您应该能够使用socat
将单播 UDP 转发到多播组,或者只是将数据保存到文件中并稍后处理。
这是一个示例(这是在 Linux 上 - 没有任何 Windows 框)。监听单播端口4242
,转发到多播(如果你在同一台机器上做所有事情,224.10.10.10:5252
你可能需要添加选项):ip-multicast-loop
~$ socat UDP-LISTEN:4242 UDP-DATAGRAM:224.10.10.10:5252
接收多播(需要接口地址或名称),转发到单播192.168.0.1:6666
:
~$ socat UDP-RECVFROM:5252,ip-add-membership=224.10.10.10:eth0,reuseaddr,fork \
UDP-DATAGRAM:192.168.0.1:6666
使用不同的目标地址运行上述两个(reuseaddr
选项允许它们在同一台机器上运行)。