具有双以太网接口的ffmpeg工作错误

时间:2012-05-22 08:38:34

标签: linux ffmpeg multicast

具有双接口的服务器。

  1. One(eht0)用于为互联网用户提供http / ssh服务的WAN。

  2. 另一个(eth1)用于从Intranet接收组播数据。

  3.   

    218.108.132.177是公共网络网关。

         

    125.210.198.1是专用网络网关。

         

    233.49.3。* / 24是多播地址。

         

    10.0.11。* / 24是组播数据的来源。

    当路由表如下所示,ffmpeg无法从eth1读取udp数据,ffmpeg挂起:

    rrca@rcasnap02:~$ route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    218.108.132.176 *               255.255.255.252 U     0      0        0 eth0
    125.210.198.0   *               255.255.255.240 U     0      0        0 eth1
    default         218.108.132.177 0.0.0.0         UG    100    0        0 eth0
    default         125.210.198.1   0.0.0.0         UG    100    0        0 eth1
    

    rrca@rcasnap02:~$ route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    218.108.132.176 *               255.255.255.252 U     0      0        0 eth0
    125.210.198.0   *               255.255.255.240 U     0      0        0 eth1
    default         218.108.132.177 0.0.0.0         UG    100    0        0 eth0
    10.0.11.0       125.210.198.1   0.0.0.0         UG    100    0        0 eth1
    

    rrca@rcasnap02:~$ route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    218.108.132.176 *               255.255.255.252 U     0      0        0 eth0
    125.210.198.0   *               255.255.255.240 U     0      0        0 eth1
    default         218.108.132.177 0.0.0.0         UG    100    0        0 eth0
    233.49.3.0      125.210.198.1   255.255.255.0   UG    100    0        0 eth1
    

    我想ffmpeg正常工作,但现在我认为路由表中的两条默认路由会互相干扰,我会尝试删除公共网关路由,或者私有网关路由是公共的默认网关路由,ffmpeg运行良好,我认为它从eth1读取多播。但路由表不是这样,ffmpeg无法从eth1读取数据,我认为它读取eth0上的数据(这不是私有网络接口)。 / p>

    如何做ffmpeg同时适用于两个接口?

2 个答案:

答案 0 :(得分:4)

您需要为多播流量配置正确的路由。内核对所有传入的多播流量进行原始检查:如果它到达与用于发送此类流量的接口不同的接口,则将其丢弃。

只需在eth1接口上设置多播路由:

# route add -net 224.0.0.0/8 dev eth1

或者,禁用原点检查:

# echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter

答案 1 :(得分:0)

虽然答案是正确的,因为需要一条路由,但我的设备将视频流发送到239.255时,我必须路由 224.0.0.0/4 (其中最多239.255.255.255) .42.42