首页 文章

如何在几个程序中接收相同的udp-stream?

提问于
浏览
2

我有一个封闭的第三方系统,它发送一个单播UDP流(MPEG-TS),我想在同一台计算机上的两个不同程序中访问它 . 我不能在源上改变任何东西,甚至不能改变IP或端口 .

除了编写我自己的小程序以捕获流然后创建新流并重新发送两个选项之外,还有其他选择吗?

似乎两个目标程序中只有一个处理多播,因此我需要两个单播流 .

1 回答

  • 4

    您应该能够使用socat将单播UDP转发到多播组,或者只是将数据保存到文件中并稍后处理 .

    编辑0:

    这是一个例子(这是在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 选项允许它们在同一台机器上运行) .

相关问题