# 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