使用FFmpeg做RTSP推流时跨设备VLC播放失败求解决方案
RTSP同网段跨设备拉流失败排查方案
1 基础网络连通性排查
- 先确认推流设备的实际局域网IP,不要用占位符
192.168.0.xxx,在其他设备上执行ping 推流设备实际IP,确认网络可达、无丢包。 - 测试RTSP服务端口连通性,你使用的端口为5545,在其他设备上执行
telnet 推流设备实际IP 5545或nc -zv 推流设备实际IP 5545,如果端口不通优先检查推流设备的防火墙规则:- Windows设备:检查Defender防火墙入站规则,是否允许5545端口的TCP/UDP访问,或者临时关闭防火墙测试。
- Linux设备:检查iptables、ufw等防火墙规则,是否放行5545端口入站,同时放开RTP传输所需的动态端口范围,或后续强制使用TCP传输RTSP流。
- 重点排查RTSP服务端的监听地址:如果服务端仅绑定了
127.0.0.1本地回环地址,只有本机可以访问,需修改配置绑定0.0.0.0或推流设备的实际局域网IP
2 拉流命令修正
- 你当前的拉流命令缺失端口号,是最高概率的问题点:你推流的目标地址是带5545端口的,拉流时也需要携带端口,正确的基础拉流命令为:
vlc rtsp://192.168.0.xxx:5545/abc
- 如果携带端口后仍然无法拉流,添加VLC参数强制走TCP传输,避免UDP端口未放行或丢包问题,命令修改为:
vlc --rtsp-tcp rtsp://192.168.0.xxx:5545/abc
3 推流与服务配置排查
- 检查RTSP服务端是否配置了IP白名单、访问鉴权规则,限制了非本地IP的访问。
- 确认推流编码格式为VLC兼容的通用格式,如果你源视频用了非通用编码,可以修改FFmpeg推流命令强制转码为H264+AAC,同时强制RTSP走TCP传输,命令如下:
ffmpeg -re -i a1.mp4 -vcodec libx264 -acodec aac -f rtsp -rtsp_transport tcp -muxdelay 0.1 rtsp://192.168.0.xxx:5545/abc
- 推流时观察FFmpeg的控制台输出,确认没有报错、推流连接正常。
内容的提问来源于stack exchange,提问作者pretty
相关产品推荐
相关产品推荐

