# 第一个硬件项目 ***Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.*** --- 本章节以Quectel Pi开发套件支持的配件IMX219 摄像头作为例子,带您快速熟悉Quectel Pi的外设调试。 --- # 用 IMX219 摄像头拍第一张照片 如果您没有IMX219摄像头模块,可跳过此章节。更详细使用摄像头教程:[MIPI摄像头](<../../使用指南/摄像头/MIPI摄像头/MIPI摄像头.md>) ## 安装摄像头 1. 关闭开发板电源。 2. 找到板上标注为 **CAM1** 或 **CAM2** 的 MIPI CSI 排线接口。 3. 将 IMX219 摄像头的排线金手指朝下,插入接口并扣紧卡扣。 4. 重新上电启动。 > **注意**:排线方向不可插反,金手指面朝电路板方向(朝下)。安装和拆卸排线时务必先断电。 ```{image} images/image_Uu6AbKjepopq96xUKOFczVocnne.webp :width: 741px :height: 471px :align: center ``` ```{image} images/image_K9QCbhFwxoZ6CPxsqLpcyyEZnnf.webp :width: 940px :height: 301px :align: center ``` ## GStreamer 管道命令简介 本章节使用 `gst-launch-1.0` 命令来控制摄像头的拍照、录像和预览。您只需复制后续章节中的命令即可完成操作,无需深入了解其原理。 这里简单介绍一下命令的结构,方便您理解每条命令在做什么: `gst-launch-1.0` 是 GStreamer 多媒体框架的命令行工具,通过 `!` 符号将多个处理步骤串联成一条 **管道**,数据从左到右依次流过。例如: ```plaintext gst-launch-1.0 摄像头采集 ! 编码 ! 保存文件 ``` 本章中的命令都遵循这个模式: - **拍照**:从摄像头采集画面 → 编码为 JPEG 图片 → 保存到文件 - **录像**:从摄像头采集画面 → 编码为 H.264 视频 → 封装为 MP4 → 保存到文件 - **查看图片/播放视频**:读取文件 → 解码 → 在屏幕上显示 ## 选择您的桌面环境 Quectel Pi 的 Debian 系统支持 **Gnome** 和 **Weston** 两种桌面环境。不同桌面环境下,摄像头的环境变量配置略有差异。请先阅读 [操作系统](<../../操作系统/操作系统.md>) 章节,了解您当前使用的桌面环境,然后根据以下对应的小节进行操作: - 使用 Gnome 桌面 → 参见 [控制摄像头(Gnome)](#控制摄像头gnome) - 使用 Weston 桌面 → 参见 [控制摄像头(Weston)](#控制摄像头weston) ## 控制摄像头(Gnome) 摄像头可以拍照/录制成文件查看,也可以直接在显示屏桌面预览: ### 设置桌面环境变量 M1的Debian系统默认桌面是Gnome,复制下方命令行代码,在adb终端执行即可: ```bash #如不在桌面上预览则不需要 #gnome桌面 export XDG_RUNTIME_DIR=/run/user/1007 export WAYLAND_DISPLAY=wayland-0 #weston export XDG_RUNTIME_DIR=/run/user/root export WAYLAND_DISPLAY=wayland-1 ``` ### 拍照 用 camera=0/1 来区分CSI卡槽所插入的摄像头,camera=0 代表第一个CSI 卡槽,camera=1 代表第二个 CSI 卡槽 1. 在设备终端运行以下命令: ```bash timeout 2 gst-launch-1.0 -e qtiqmmfsrc camera=1 \ ! video/x-raw,format=NV12,width=1920,height=1080 \ ! jpegenc ! multifilesink location=/tmp/photo_%d.jpg max-files=1 ``` 2. 此命令以 1080p 30 FPS 配置启动相机,延时2秒后拍摄,并在 **JPEG** 视频编码后将其另存为图像文件。如果 gst 管道状态更改为 “PLAYING”,则表示摄像头正在运行 3. 图像文件保存在/tmp/目录下 4. 可以输入以下命令查看图片文件 ```bash gst-launch-1.0 filesrc location=photo_%d.jpg ! jpegdec ! imagefreeze ! waylandsink ``` ### 录像 1. 在设备终端运行以下命令: ```bash gst-launch-1.0 -e qtiqmmfsrc camera=0 \ ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 \ ! qtic2venc ! h264parse ! mp4mux ! filesink location=/tmp/video.mp4 ``` 2. 此命令以 720p 30 FPS 配置启动相机,并在 h264 视频编码后将其另存为视频文件。如果 gst 管道状态更改为 “PLAYING”,则表示摄像头正在运行 3. MP4文件保存在/tmp/目录下 4. 如果要停止摄像头录制,请按下CTRL+C 5. 可以输入以下命令播放视频文件 ```bash gst-launch-1.0 filesrc location=/tmp/video.mp4 ! qtdemux name=demux demux.video_0 ! h264parse ! avdec_h264 ! videoconvert ! waylandsink ``` ## 控制摄像头(Weston) ### 设置桌面环境变量 摄像头功能运行前需在终端输入以下命令,复制下方命令行代码,在adb终端执行即可: ```bash bash a=`find /run/user -maxdepth 2 -name 'wayland-?' 2>/dev/null`; export XDG_RUNTIME_DIR=`dirname $a` export WAYLAND_DISPLAY=`basename $a` export LD_PRELOAD=/opt/qcom/lib/libgbm.so:$LD_PRELOAD ``` ### 拍照 用 camera=0/1 来区分CSI卡槽所插入的摄像头,camera=0 代表第一个CSI 卡槽,camera=1 代表第二个 CSI 卡槽 1. 在设备终端运行以下命令: ```bash timeout 2 gst-launch-1.0 -e qtiqmmfsrc camera=0 \ ! video/x-raw,format=NV12,width=1920,height=1080 \ ! jpegenc ! multifilesink location=/tmp/photo_%d.jpg max-files=1 ``` 2. 此命令以 1080p 30 FPS 配置启动相机,延时2秒后拍摄,并在 **JPEG** 视频编码后将其另存为图像文件。如果 gst 管道状态更改为 “PLAYING”,则表示摄像头正在运行 3. 图像文件保存在/tmp/目录下 4. 可以输入以下命令查看刚刚生成的图片文件,例如示例生成的图像名为photo_20.jpg ```bash gst-launch-1.0 filesrc location=/tmp/photo_20.jpg ! jpegdec ! imagefreeze ! waylandsink ``` ```{image} images/image_PS3obHC36oaqBHxT3iCcR9bqnsf.webp :width: 1280px :height: 800px :align: center ``` ### 录像 1. 在设备终端运行以下命令: ```bash gst-launch-1.0 -e qtiqmmfsrc camera=0 \ ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 \ ! qtic2venc ! h264parse ! mp4mux ! filesink location=/tmp/video.mp4 ``` 2. 此命令以 720p 30 FPS 配置启动相机,并在 h264 视频编码后将其另存为视频文件。如果 gst 管道状态更改为 “PLAYING”,则表示摄像头正在运行 3. MP4文件保存在/tmp/目录下 4. 如果要停止摄像头录制,请按下CTRL+C 5. 可以输入以下命令播放视频文件 ```bash gst-launch-1.0 filesrc location=/tmp/video.mp4 ! qtdemux name=demux demux.video_0 ! h264parse ! avdec_h264 ! videoconvert ! waylandsink ```