跳到主要内容

多摄像头配置

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最大帧率,建议不超过摄像头枚举值
qualityMJPEG 质量,取值 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 恒为 0device 指向了 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 的摄像头
Loading...