# 第一个硬件项目
***Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.***
---
本章节以Quectel Pi开发套件支持的配件IMX219 摄像头作为例子,带您快速熟悉Quectel Pi的外设调试。
---
# 用 IMX219 摄像头拍第一张照片
如果您没有IMX219摄像头模块,可跳过此章节。更详细使用摄像头教程:[MIPI摄像头](<../../使用指南/摄像头/MIPI摄像头/MIPI摄像头.md>)
## 安装摄像头
1. 关闭开发板电源。
2. 找到板上标注为 **CAM0** 或 **CAM1** 的 MIPI CSI 排线接口。
3. 将 IMX219 摄像头的排线金手指朝下,插入接口并扣紧卡扣。
4. 重新上电启动。
> **注意**:排线方向不可插反,金手指面朝电路板方向(朝下)。安装和拆卸排线时务必先断电。
## 控制摄像头(Gnome)
摄像头可以拍照/录制成文件查看,也可以直接在显示屏桌面预览:
### 设置桌面环境变量
M1的Debian系统默认桌面是Gnome,复制下方命令行代码,在adb终端执行即可:
```bash
#如不在桌面上预览则不需要
#gnome桌面
export GST_V4L2_FORCE_LIBV4L2=0
export WAYLAND_DISPLAY=wayland-0
export XDG_RUNTIME_DIR=/run/user/1000
```
### 拍照
用 camera=0/1 来区分CSI卡槽所插入的摄像头,camera=0 代表第一个CSI 卡槽,camera=1 代表第二个 CSI 卡槽。下文命令以 camera0 为例,若接入 camera1,需修改摄像头对应节点位置。
| **
摄像头
** | **
对应节点位置
** |
| --- | --- |
|
camera0
|
/dev/video33
|
|
camera1
|
/dev/video51
|
1. 在设备终端运行以下命令:
```bash
# 配置摄像头输出 1640×1232 的 NV12 原始数据
v4l2-ctl -d /dev/video33 --set-fmt-video=width=1640,height=1232,pixelformat=NV12
# 跳过 5 帧后,用 mmap 方式采集 1 帧,保存为 YUV 文件。
v4l2-ctl -d /dev/video33 --stream-mmap=2 --stream-skip=5 --stream-count=1 --stream-to=/tmp/raw_cam1.yuv
# 用 FFmpeg 将此原始 YUV 帧编码为 JPEG 图片
ffmpeg -f rawvideo -pix_fmt nv12 -s 1640x1232 -i /tmp/raw_cam1.yuv -frames:v 1 -q:v 2 /tmp/photo_cam1.jpg
```
2. 图像文件保存在/tmp/目录下
### 录像
1. 在设备终端运行以下命令:
```bash
# 配置摄像头输出 1640×1232 分辨率、NV12 格式的原始数据。
v4l2-ctl -d /dev/video33 --set-fmt-video=width=1640,height=1232,pixelformat=NV12
# 使用 4 个缓冲区,跳过前 10 帧,连续采集 60 帧原始 YUV 数据,保存为文件。
v4l2-ctl -d /dev/video33 --stream-mmap=4 --stream-skip=10 --stream-count=60 --stream-to=/tmp/rec_cam0.yuv
# 将原始 YUV 序列以 30fps 帧率解读,用 H.264 编码器压缩,编码预设为 fast,视频码率设为 8 Mbps,最终封装成 MP4 视频文件。
ffmpeg -f rawvideo -pix_fmt nv12 -s 1640x1232 -framerate 30 \
-i /tmp/rec_cam0.yuv -c:v h264 -preset fast -b:v 8M /tmp/rec_cam0.mp4
```
2. MP4文件保存在/tmp/目录下
3. 如果要停止摄像头录制,请按下CTRL+C