GStreamer gst-rtsp-server组播RTSP流客户端无法接收问题求助
排查与解决步骤
检查服务端组播绑定网卡是否正确
gst-rtsp-server的multicast2示例默认会绑定到环回网卡或首个可用网卡,没有指定绑定enp0s3的情况下,组播流不会从你配置的业务网卡发出。启动服务端时需显式指定绑定网卡、组播地址:./multicast2 0.0.0.0 8554 /test 239.255.0.1 5004 enp0s3关闭Linux反向路径过滤(rp_filter)
Linux默认开启的反向路径过滤会丢弃路由路径不匹配的组播报文,这是同网段组播不通最常见的原因,在两台机器上都执行以下配置:# 临时生效 sysctl -w net.ipv4.conf.enp0s3.rp_filter=0 sysctl -w net.ipv4.conf.all.rp_filter=0 # 永久生效需将上述两行写入 /etc/sysctl.conf 后执行 sysctl -p拉流pipeline显式指定组播接收网卡
你当前的拉流命令没有指定组播接收网卡,系统可能选错接收端口,修改pipeline增加multicast-iface参数:gst-launch-1.0 rtspsrc protocols=udp-mcast multicast-iface=enp0s3 location=rtsp://192.168.10.110:8554/test latency=0 ! rtph264depay ! avdec_h264 ! videoconvert ! videoscale ! autovideosink验证防火墙配置
临时关闭两台机器的防火墙测试是否是拦截导致:# firewalld 环境 systemctl stop firewalld # iptables 环境 iptables -F && iptables -t nat -F测试通了之后再按需放行UDP组播端口的入站规则即可。
确认组播包TTL配置
如果你的服务端和客户端不在同一个二层网段,需要修改服务端组播流的TTL值,在multicast2示例代码中增加配置:gst_rtsp_media_set_multicast_ttl(media, 10);
内容的提问来源于stack exchange,提问作者Piotr Chmielewski
相关产品推荐
相关产品推荐

