# USB摄像头 ***Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.*** --- 本项目以 Quectel Pi M2 作为相机应用的主要运行平台,支持实时预览、拍照、录像、多摄像头选择、摄像头重新扫描和错误提示,适用于基于 Quectel Pi M2 的桌面相机、开发板相机终端、边缘视觉设备和产品功能演示。 ## **开发配件清单** 说明:以下为推荐开发配件,实际使用时可根据目标平台和展示场景灵活调整。 | **配件名称** | **

数量
** | **规格或要求** | | --- | --- | --- | | Quectel Pi M2智能主控板 |

1 块
| Quectel Pi M2智能主控板 | | USB UVC 摄像头 |

1 个或多个
| 能被 Quectel Pi M2智能主控板 识别为 V4L2 设备,建议支持 MJPEG、30 FPS 或更高帧率 | | USB 数据线 |

1 根或多根
| 用于连接摄像头和Quectel Pi M2智能主控板;多摄像头场景需确认 USB 带宽和供电能力 | | 显示器 |

1 台
| 用于运行桌面应用和查看实时预览 | | 键盘、鼠标 |

各 1 个
| 用于桌面环境下的应用操作 | ### **配件实物参考** ```{image} images/image_I4yObTVxzor64IxmFQEcMQi9ndh.webp :width: 1160px :height: 688px :align: center ``` ## **快速上手** ### **环境要求** - Quectel Pi M2 智能主控板,运行 Linux 桌面环境。 - 具备相同软件条件的 Linux 主机可用于开发和兼容性验证,但项目主要面向 Quectel Pi M2 部署。 - Qt 5.15 或兼容版本。 - 支持 C++11 的 C++ 编译器。 - `qmake`、`make` 和 `pkg-config`。 - GStreamer 1.0 运行时和开发包。 - 一个或多个可访问的 V4L2 摄像头。 - 录像功能至少需要一个可用的 H.264 编码器插件。 ### **安装基础依赖** 本项目以 Quectel Pi M2 智能主控板作为主要验证平台。请先确保主控板已经正常启动 Linux 桌面环境,并接入显示器、键盘和鼠标,再按照以下步骤安装依赖。除 Quectel Pi M2 外,具备相同 Qt、GStreamer 和 V4L2 软件条件的 Linux 主机也可用于兼容性验证。 不同 Linux 发行版的软件包名称可能不同,以下命令以 Debian/Ubuntu 系统为参考。请根据目标系统的 Qt 版本和 GStreamer 包名进行调整。 ```bash sudo apt update sudo apt install -y \ build-essential \ qt5-qmake qtbase5-dev qtdeclarative5-dev \ pkg-config \ libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev \ gstreamer1.0-tools \ gstreamer1.0-plugins-base \ gstreamer1.0-plugins-good \ gstreamer1.0-plugins-bad \ gstreamer1.0-plugins-ugly \ gstreamer1.0-libav ``` 说明:部分系统可能需要额外安装 Qt Quick Controls 2 相关运行包。若使用硬件 H.264 编码器,还需要安装目标平台对应的 GStreamer 编码器插件。 ### **检查摄像头和插件** 查看系统是否发现摄像头: ```bash ls /dev/video* ``` 检查预览所需插件: ```bash gst-inspect-1.0 v4l2src gst-inspect-1.0 appsink gst-inspect-1.0 jpegdec gst-inspect-1.0 videoconvert ``` 检查录像编码器: ```bash gst-inspect-1.0 mpph264enc gst-inspect-1.0 x264enc gst-inspect-1.0 openh264enc gst-inspect-1.0 avenc_h264 ``` 只要至少有一个 H.264 编码器检查成功,应用就可以尝试启动录像功能。 ### **设置摄像头访问权限** 如果应用提示没有摄像头访问权限,先查看当前用户所属用户组: ```bash groups ``` 将当前用户加入 `video` 用户组后重新登录: ```bash sudo usermod -aG video "$USER" ``` 也可以临时检查设备权限: ```bash ls -l /dev/video* ``` ### **编译项目** 进入项目目录执行: ```bash cd camj/camapp_latest qmake camapp.pro make -j"$(nproc)" ``` 如果系统同时安装了多个 Qt 版本,请使用目标 Qt 版本对应的 `qmake`。 ### **启动应用** ```bash ./camapp ``` 启动后,应用会自动扫描摄像头并尝试选择最佳采集模式。默认优先选择 MJPEG,并综合考虑帧率和分辨率。 ## **应用使用方法** ### **主界面** 主界面主要包含以下区域: 1. 顶部采集状态 2. 实时预览区域 3. 摄像头信息 4. 工作状态 5. 拍照/录像按钮 6. LIVE/REC 状态指示 7. 摄像头选择与 Rescan 8. Toast 操作提示 ```{image} images/image_N9PhbpZvfoOHQMxbf3ccd6gunkf.webp :width: 1284px :height: 854px :align: center ``` ### **拍照** 1. 连接并确认摄像头已经显示实时画面。 2. 点击拍照按钮。 3. 等待界面提示照片保存成功。 4. 在默认照片目录中查看 JPG 文件。 MJPEG 模式下,应用优先保存采集到的原始 JPEG 数据;YUYV 模式下,应用将当前预览帧保存为 JPG。 照片默认保存到: ```plaintext ~/Pictures/Camera/ ``` 文件名格式如下: ```plaintext IMG_yyyyMMdd_HHmmss_zzz.jpg ``` 实际路径由系统的 `QStandardPaths` 决定。如果系统没有返回标准图片,应用会回退到用户主目录下的 `Pictures` 目录。 ```{image} images/image_B7W7bw6LzoOGrDxDBrBcZQbZnIe.webp :width: 1286px :height: 849px :align: center ``` ```{image} images/image_GELmbb79Wow1qFxJkE5c6rhwnPb.webp :width: 1817px :height: 740px :align: center ``` ### **录像** 1. 确认系统中至少存在一个可用的 H.264 编码器。 2. 点击录像按钮开始录制,界面状态切换为 REC。 3. 录制过程中可以观察录像时长。 4. 再次点击录像按钮停止录制。 5. 在默认视频目录中查看 MP4 文件。 录像过程中会禁用摄像头切换,停止录像后才可以重新选择设备。 视频默认保存到: ```plaintext ~/Videos/Camera/ ``` 文件名格式如下: ```plaintext VID_yyyyMMdd_HHmmss.mp4 ``` 实际路径由系统的 `QStandardPaths` 决定。如果系统没有返回标准视频目录,应用会回退到用户主目录下的 `Videos` 目录。
录屏 2026-10-12 03-46-29
### **切换摄像头** 连接多个摄像头后,应用底部的摄像头下拉框会显示可用设备: 1. 停止当前录像(如正在录像)。 2. 打开摄像头下拉框。 3. 选择目标摄像头。 4. 应用会停止旧管线,重新检测新设备的能力,并启动新的预览管线。 ```{image} images/image_MefPbISRnomCPsxBTPQc0hZqnvf.webp :width: 1286px :height: 849px :align: center ``` ### **重新扫描摄像头** 插拔摄像头或更换 USB 设备后,可以点击 Rescan/重新扫描按钮: 1. 点击重新扫描。 2. 应用重新枚举 `/dev/v4l/by-id/*video-index0` 和 `/dev/video*`。 3. 选择可用摄像头并恢复预览。 ## **录像编码器配置** 应用默认按以下顺序自动选择第一个可用编码器: ```plaintext mpph264enc → x264enc → openh264enc → avenc_h264 ``` 可以通过 `CAMAPP_VIDEO_ENCODER` 指定编码器: ```bash CAMAPP_VIDEO_ENCODER=x264enc ./camapp ``` 支持的值为: ```plaintext mpph264enc x264enc openh264enc avenc_h264 ``` 如果指定的编码器不存在,应用会提示安装对应 GStreamer 插件或取消该环境变量。硬件平台建议优先使用平台提供的硬件编码器,以降低 CPU 占用。 ## **应用演示** ```{image} images/image_OEwJbtSkXoH7AQxelD7cpMYwn5e.webp :width: 1284px :height: 854px :align: center ```
10月13日
## **常见问题排查** ### **启动后没有摄像头画面** 1. 检查摄像头是否连接并执行 `ls /dev/video*`。 2. 确认当前用户有访问视频设备的权限。 3. 确认摄像头支持 MJPEG 或 YUYV。 4. 检查 `v4l2src`、`appsink`、`jpegdec` 和 `videoconvert` 是否安装。 5. 关闭可能占用摄像头的其他应用后重新启动 Camera Studio。 ### **应用提示没有权限** 确认当前用户已经加入 `video` 用户组,并重新登录系统。也可以使用 `ls -l /dev/video*` 检查设备节点权限。 ### **应用提示缺少 GStreamer 插件** 根据界面提示安装缺少的 element。实时预览通常需要 `v4l2src`、`appsink`、`jpegdec` 和 `videoconvert`;录像还需要 `appsrc`、H.264 编码器、`h264parse` 和 `mp4mux`。 ### **录像启动失败** 依次检查: 1. 是否至少安装了一个 H.264 编码器。 2. 编码器是否支持当前平台和输入格式。 3. 是否指定了不存在的 `CAMAPP_VIDEO_ENCODER`。 4. 是否有足够的磁盘空间写入视频目录。 可以先取消环境变量,恢复自动选择: ```bash unset CAMAPP_VIDEO_ENCODER ./camapp ``` ### **多个摄像头无法同时稳定使用** 检查 USB 集线器供电、USB 带宽和摄像头分辨率。可以减少同时连接的摄像头数量,或使用带独立供电的 USB 集线器。 ### **编译时找不到 Qt 或 GStreamer** 确认 `qmake --version`、`make --version`、`pkg-config --version` 和 `gst-inspect-1.0 --version` 均可执行。若系统存在多个 Qt 版本,请使用对应版本的 `qmake` 重新生成工程文件。 ## **技术支持与贡献** 如在使用或二次开发过程中遇到问题,建议在项目 Issue 中提供以下信息:Linux 发行版和版本、Qt 版本、GStreamer 版本、摄像头型号、完整错误提示以及相关命令输出。如在使用过程中遇到问题,欢迎在 [移远官方论坛]() 提交技术咨询,我们的技术支持团队将及时为您解答。