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 个 |
用于桌面环境下的应用操作 |
配件实物参考¶
快速上手¶
环境要求¶
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 包名进行调整。
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 编码器插件。
检查摄像头和插件¶
查看系统是否发现摄像头:
ls /dev/video*
检查预览所需插件:
gst-inspect-1.0 v4l2src
gst-inspect-1.0 appsink
gst-inspect-1.0 jpegdec
gst-inspect-1.0 videoconvert
检查录像编码器:
gst-inspect-1.0 mpph264enc
gst-inspect-1.0 x264enc
gst-inspect-1.0 openh264enc
gst-inspect-1.0 avenc_h264
只要至少有一个 H.264 编码器检查成功,应用就可以尝试启动录像功能。
设置摄像头访问权限¶
如果应用提示没有摄像头访问权限,先查看当前用户所属用户组:
groups
将当前用户加入 video 用户组后重新登录:
sudo usermod -aG video "$USER"
也可以临时检查设备权限:
ls -l /dev/video*
编译项目¶
进入项目目录执行:
cd camj/camapp_latest
qmake camapp.pro
make -j"$(nproc)"
如果系统同时安装了多个 Qt 版本,请使用目标 Qt 版本对应的 qmake。
启动应用¶
./camapp
启动后,应用会自动扫描摄像头并尝试选择最佳采集模式。默认优先选择 MJPEG,并综合考虑帧率和分辨率。
应用使用方法¶
主界面¶
主界面主要包含以下区域:
顶部采集状态
实时预览区域
摄像头信息
工作状态
拍照/录像按钮
LIVE/REC 状态指示
摄像头选择与 Rescan
Toast 操作提示
拍照¶
连接并确认摄像头已经显示实时画面。
点击拍照按钮。
等待界面提示照片保存成功。
在默认照片目录中查看 JPG 文件。
MJPEG 模式下,应用优先保存采集到的原始 JPEG 数据;YUYV 模式下,应用将当前预览帧保存为 JPG。
照片默认保存到:
~/Pictures/Camera/
文件名格式如下:
IMG_yyyyMMdd_HHmmss_zzz.jpg
实际路径由系统的 QStandardPaths 决定。如果系统没有返回标准图片,应用会回退到用户主目录下的 Pictures 目录。
录像¶
确认系统中至少存在一个可用的 H.264 编码器。
点击录像按钮开始录制,界面状态切换为 REC。
录制过程中可以观察录像时长。
再次点击录像按钮停止录制。
在默认视频目录中查看 MP4 文件。
录像过程中会禁用摄像头切换,停止录像后才可以重新选择设备。
视频默认保存到:
~/Videos/Camera/
文件名格式如下:
VID_yyyyMMdd_HHmmss.mp4
实际路径由系统的 QStandardPaths 决定。如果系统没有返回标准视频目录,应用会回退到用户主目录下的 Videos 目录。
切换摄像头¶
连接多个摄像头后,应用底部的摄像头下拉框会显示可用设备:
停止当前录像(如正在录像)。
打开摄像头下拉框。
选择目标摄像头。
应用会停止旧管线,重新检测新设备的能力,并启动新的预览管线。
重新扫描摄像头¶
插拔摄像头或更换 USB 设备后,可以点击 Rescan/重新扫描按钮:
点击重新扫描。
应用重新枚举
/dev/v4l/by-id/*video-index0和/dev/video*。选择可用摄像头并恢复预览。
录像编码器配置¶
应用默认按以下顺序自动选择第一个可用编码器:
mpph264enc → x264enc → openh264enc → avenc_h264
可以通过 CAMAPP_VIDEO_ENCODER 指定编码器:
CAMAPP_VIDEO_ENCODER=x264enc ./camapp
支持的值为:
mpph264enc
x264enc
openh264enc
avenc_h264
如果指定的编码器不存在,应用会提示安装对应 GStreamer 插件或取消该环境变量。硬件平台建议优先使用平台提供的硬件编码器,以降低 CPU 占用。
应用演示¶
常见问题排查¶
启动后没有摄像头画面¶
检查摄像头是否连接并执行
ls /dev/video*。确认当前用户有访问视频设备的权限。
确认摄像头支持 MJPEG 或 YUYV。
检查
v4l2src、appsink、jpegdec和videoconvert是否安装。关闭可能占用摄像头的其他应用后重新启动 Camera Studio。
应用提示没有权限¶
确认当前用户已经加入 video 用户组,并重新登录系统。也可以使用 ls -l /dev/video* 检查设备节点权限。
应用提示缺少 GStreamer 插件¶
根据界面提示安装缺少的 element。实时预览通常需要 v4l2src、appsink、jpegdec 和 videoconvert;录像还需要 appsrc、H.264 编码器、h264parse 和 mp4mux。
录像启动失败¶
依次检查:
是否至少安装了一个 H.264 编码器。
编码器是否支持当前平台和输入格式。
是否指定了不存在的
CAMAPP_VIDEO_ENCODER。是否有足够的磁盘空间写入视频目录。
可以先取消环境变量,恢复自动选择:
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 版本、摄像头型号、完整错误提示以及相关命令输出。如在使用过程中遇到问题,欢迎在 移远官方论坛 提交技术咨询,我们的技术支持团队将及时为您解答。