我有一个封闭的第三方系统,它发送一个单播UDP流(MPEG-TS),我想在同一台计算机上的两个不同程序中访问它 . 我不能在源上改变任何东西,甚至不能改变IP或端口 .
除了编写我自己的小程序以捕获流然后创建新流并重新发送两个选项之外,还有其他选择吗?
似乎两个目标程序中只有一个处理多播,因此我需要两个单播流 .
您应该能够使用socat将单播UDP转发到多播组,或者只是将数据保存到文件中并稍后处理 .
这是一个例子(这是在Linux上 - 没有任何Windows框) . 收听单播端口 4242 ,转发到多播 224.10.10.10:5252 (如果您在同一台机器上执行所有操作,则可能必须添加 ip-multicast-loop 选项):
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 :
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 选项允许它们在同一台机器上运行) .
reuseaddr
1 回答
您应该能够使用socat将单播UDP转发到多播组,或者只是将数据保存到文件中并稍后处理 .
编辑0:
这是一个例子(这是在Linux上 - 没有任何Windows框) . 收听单播端口
4242
,转发到多播224.10.10.10:5252
(如果您在同一台机器上执行所有操作,则可能必须添加ip-multicast-loop
选项):接收多播(需要接口地址或名称),转发到单播
192.168.0.1:6666
:使用不同的目标地址运行上述两个(
reuseaddr
选项允许它们在同一台机器上运行) .