如何实现双USB摄像头同时向rtsp-simple-server推两路RTSP流
问题根因
启动第二个rtsp-simple-server实例时报端口占用错误,是因为只修改了推流命令里的端口号,没有完整修改第二个实例配置文件中所有默认监听端口(包括RTSP、API、HLS、WebRTC等模块的默认监听端口),导致端口冲突。实际上不需要启动多个rtsp-simple-server实例,单实例原生支持多路RTSP流转发,多实例属于完全多余的操作。
正确配置方法
直接编辑唯一运行的rtsp-simple-server对应的rtsp-simple-server.yml配置文件,在paths配置节点下新增第二个摄像头的路径规则即可,配置示例如下:
paths: cam1: runOnInit: ffmpeg -f dshow -video_device_number 0 -i video="UVC Camera" -c:v libx264 -preset ultrafast -tune zerolatency -b:v 600k -f rtsp rtsp://127.0.0.1:8554/cam1 runOnInitRestart: yes cam2: runOnInit: ffmpeg -f dshow -video_device_number 1 -i video="UVC Camera" -c:v libx264 -preset ultrafast -tune zerolatency -b:v 600k -f rtsp rtsp://127.0.0.1:8554/cam2 runOnInitRestart: yes
注意事项
- 两路流共用服务默认的8554 RTSP端口,通过路径后缀区分流,最终访问地址分别为
rtsp://192.168.5.203:8554/cam1、rtsp://192.168.5.203:8554/cam2 - 本地推流的地址建议使用
127.0.0.1回环地址,比写物理网卡IP性能更高,也能避免多网卡环境下的路由异常 - 如果两个UVC摄像头后续出现序号漂移问题,可以在Windows设备管理器里确认两个摄像头的准确设备名,替换
-i video="xxx"里的设备名参数,比单纯用设备序号更稳定 - 若有特殊场景必须启动多实例,需要给每个实例单独修改全量监听端口配置,不能仅修改推流命令里的端口,否则必然触发端口占用报错
内容的提问来源于stack exchange,提问作者Imm
相关产品推荐
相关产品推荐

