# raspberry-pi-video-stream **Repository Path**: wu-hen/raspberry-pi-video-stream ## Basic Information - **Project Name**: raspberry-pi-video-stream - **Description**: 用于测试树莓派自带相机,输出视频流 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-25 - **Last Updated**: 2025-04-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 📷 Flask + Picamera2 实时视频流与动态参数配置 ## 项目简介 本项目基于 Raspberry Pi 上的 [Picamera2](https://pypi.org/project/picamera2/) 和 [Flask](https://pypi.org/project/Flask/),提供: - **实时 MJPEG 视频流**:在浏览器中预览 Pi Camera 输出的画面 - **动态参数配置**:通过美化的 Tailwind CSS Web 界面,实时调整分辨率、帧率、亮度、对比度、曝光时间等 - **无缝应用**:修改参数后自动重启相机,无需重启 Web 服务 --- ## 功能一览 | 功能 | 描述 | |---------------------------------|---------------------------------------------------------| | 实时视频流 (`/video_feed`) | MJPEG 格式,在 `` 标签中直接展示 | | 首页预览 (`/`) | Tailwind CSS 美化,展示视频流并提供“设置”入口 | | 参数设置页 (`/settings`) | 下拉框选择常用分辨率 & 帧率,输入框调整亮度/对比度/曝光时间 | | 动态重配置 | 提交表单后立即应用新参数,无需重启服务器 | | 优雅资源释放 | 程序退出时自动停止相机,释放硬件资源 | --- ## 目录结构 ``` . ├── app.py # 主程序 ├── requirements.txt # Python 依赖列表 ├── README.md # 本说明文件 └── static/ # (可选)自定义 CSS/JS 等静态资源 ``` --- ## 环境与依赖 - **操作系统**:Raspberry Pi OS / Debian / Ubuntu - **Python**:3.9 及以上 - **硬件**:Raspberry Pi + Pi Camera 模块 安装依赖: ```bash pip install -r requirements.txt ``` ```text # requirements.txt Flask>=3.0.0,<4.0.0 opencv-python>=4.11.0.86 picamera2>=0.3.25 ``` --- ## 快速启动 1. 克隆仓库并进入目录: ```bash git clone <仓库地址> video-stream-picamera cd video-stream-picamera ``` 2. 安装依赖: ```bash pip install -r requirements.txt ``` 3. 启动应用: ```bash python3 app.py ``` 4. 在浏览器中访问: - 首页(视频流预览): ``` http://:5000/ ``` - 设置页(参数配置): ``` http://:5000/settings ``` --- ## 配置说明 | 参数 | 含义 | 默认值 | 可选范围 / 选项 | |---------------------|-------------------------------------|------------|---------------------------------------| | **分辨率(size)** | 视频输出宽度×高度 | 640×480 | 640×480, 800×600, 1280×720, 1920×1080 | | **帧率(fps)** | 视频输出帧率(FPS) | 10.0 | 5, 10, 15, 24, 30, 60 | | **亮度(Brightness)** | 相机亮度控制(libcamera 控制项) | 1.0 | 0.0 – 4.0 | | **对比度(Contrast)** | 相机对比度控制(libcamera 控制项) | 1.0 | 0.0 – 4.0 | | **曝光时间(ExposureTime)** | 曝光时间,单位微秒 | 10000 | 正整数 | - 可通过命令行参数设置初始值,也可在 `/settings` 页面动态调整。 --- ## 部署建议 - 使用 **Gunicorn + Gevent** 代替 Flask 自带服务器,提高并发性能: ```bash pip install gunicorn gevent gunicorn -k gevent -w 1 app:app -b 0.0.0.0:5000 ``` - 如需公开访问,请添加 **HTTP Basic Auth** 或 **Token 验证** 保护 `/video_feed`。 --- ## 常见问题 - **Camera 启动报错**:确认在 `raspi-config` 中启用了摄像头接口,并安装了 `libcamera`。 - **权限不足**:将运行用户加入 `video` 组,或使用 `sudo`。 - **帧率/分辨率过高导致卡顿**:适当降低分辨率或帧率,或优化网络带宽。 --- ## 许可证 本项目采用 MIT 许可证,详见 [LICENSE](./LICENSE) 文件。 https://github.com/raspberrypi/picamera2