多摄像头配置
FLYOS-FAST v1.4.0 的 GoCam 支持在同一台上位机上接入多路 UVC 摄像头。本文以两路为例说明完整配置方法,三路、四路同理。
多路摄像头依赖 GoCam,仅在 FLYOS-FAST v1.4.0 及更高版本中提供。使用 Crowsnest 的机器请参考 摄像头连接与使用,单路 GoCam 的基础用法请参考 GoCam 摄像头服务。
端口与访问地址
每路摄像头的端口与网页路径是一一对应的,/webcamN/ 前缀由 nginx 出厂预置,无需修改。点击地址右侧图标即可复制:
| 路数与端口 | 实时视频流 | 单帧快照 |
|---|---|---|
第 1 路 · 8080 | Loading... | Loading... |
第 2 路 · 8081 | Loading... | Loading... |
第 3 路 · 8082 | Loading... | Loading... |
第 4 路 · 8083 | Loading... | Loading... |
规律是:第 N 路的端口为 8080 + (N - 1),网页路径为 /webcamN/,其中第 1 路省略数字,写作 /webcam/。
?action=stream 与 ?action=snapshot 是 GoCam 兼容 mjpg-streamer 的写法,分别等价于 /stream 和 /snapshot,属于接口自带行为,不是需要配置的选项。
连接摄像头
摄像头选型、接线方式与免驱 UVC 要求请参考 摄像头连接与使用。
多路场景下,每颗摄像头应接在上位机的不同 USB 接口上,不要经过同一个无源集线器;插拔摄像头前请完全关闭打印机并断开电源。
第一步:打开配置
在 Fluidd 中打开配置文件、查看设备节点(摄像头 ID)的方法,请参考 打开配置。
多路场景下每路都要填写该摄像头的采集节点(video-index0),不要指向 metadata 节点,并按 USB 物理口固定,避免重启后节点编号变化导致失效。
第二步:编写多路配置
配置文件位于:
/usr/share/printer_data/config/gocam.conf
两路配置示例(device 使用 by-path 固定,分辨率按实测填写):
[cam 1]
port: 8080
device: /dev/v4l/by-path/platform-5311000.usb-usb-0:1:1.0-video-index0
resolution: 640x480
max_fps: 15
quality: 5
[cam 2]
port: 8081
device: /dev/v4l/by-path/platform-5101000.usb-usb-0:1:1.0-video-index0
resolution: 640x480
max_fps: 15
quality: 5
| 参数 | 说明 |
|---|---|
port | 该路监听的 HTTP 端口,多路之间不能重复 |
device | 该路摄像头采集节点(video-index0)的路径 |
resolution | 摄像头实际支持的分辨率,格式为 宽x高 |
max_fps | 最大帧率,建议不超过摄像头枚举值 |
quality | MJPEG 质量,取值 1 至 31,数值越小画质越好、带宽越高 |
v4l2ctl | 可选,UVC 参数,管理页面保存的参数会写入此项 |
ffmpeg_flags | 可选,FFmpeg 参数 |
只支持 YUYV 格式的摄像头需要由上位机软编码成 MJPEG,CPU 占用较高;支持 MJPG 的摄像头可以直通,几乎不占 CPU。若两路都只能 YUYV,建议 640x480、15 帧起步;若某一路支持 MJPG,可以单独为它提高分辨率。
第三步:在网页中添加摄像头面板
配置好 GoCam 后,还需要在 Moonraker 中登记摄像头,Fluidd / Mainsail 才会显示面板。
在 Fluidd 中打开 设置 → 摄像头,确认两路条目分别填写:
| 条目 | 视频流地址 | 快照地址 |
|---|---|---|
| 第 1 路 | Loading... | Loading... |
| 第 2 路 | Loading... | Loading... |
- 第二路仍写成
/webcam/:两个面板会显示同一颗摄像头的画面。第 N 路必须使用/webcamN/。 - 在网页里添加的条目存放在 Moonraker 数据库中(
source为database),只改moonraker.conf不会生效,必须在界面中修改。 - Moonraker 的
/server/webcams/item接口只支持查询、新增和删除,不支持修改,也请在界面中操作。
如果需要以配置文件方式新增条目(不改动数据库中已有条目),可在 moonraker.conf 中追加:
[webcam cam2]
enabled: true
service: mjpegstreamer-adaptive
target_fps: 15
stream_url: /webcam2/?action=stream
snapshot_url: /webcam2/?action=snapshot
常见问题
| 现象 | 可能原因 | 处理 |
|---|---|---|
页面显示 NO SIGNAL,frames 恒为 0 | device 指向了 metadata 节点,或 resolution 超出摄像头能力 | 用 --list-formats-ext 核对,改用 video-index0 |
| 两个面板画面完全相同 | 第二路的 URL 仍写成 /webcam/ | 改为 /webcam2/?action=stream |
| 重启后其中一路失效 | /dev/videoN 编号随插拔顺序变化 | device 改用 /dev/v4l/by-path/...-video-index0 |
| 第二路端口不通 | [cam 2] 未配置,或与其他服务端口冲突 | 用 ss -lntp | grep 8081 确认监听 |
| 画面卡顿、上位机负载升高 | YUYV 软编码叠加高分辨率、高帧率 | 降低分辨率或帧率,或改用支持 MJPG 的摄像头 |