一个基于 FastAPI 的摄像头服务,支持 RTSP 流处理、ONVIF 云台控制和视觉识别功能。
# 克隆项目
git clone https://github.com/chenqizhi1/camera-service.git
cd camera-service
# 创建环境变量文件
cp .env.example .env
编辑 .env 文件:
# 服务配置
SERVICE_PORT=8000
# 摄像头配置
CAMERA_USER=admin
CAMERA_PASSWORD=your_password
CAMERA_IP=192.168.1.1
CAMERA_PORT=554
CAMERA_CHANNEL=1
CAMERA_STREAM_TYPE=rtsp
CAMERA_STREAM_QUALITY=1
# ONVIF 配置
ONVIF_CAMERA_PTZ_ENABLED=true
ONVIF_CAMERA_IP=192.168.1.1
ONVIF_CAMERA_PORT=80
ONVIF_CAMERA_USERNAME=admin
ONVIF_CAMERA_PASSWORD=your_password
# 使用 Docker Compose 启动服务
docker-compose up -d
# 查看服务状态
docker-compose logs -f
# 安装依赖
pip install -r requirements.txt
# 启动服务
uvicorn app.main:app --host 0.0.0.0 --port 8000
天地伟业宇航员无线监控摄像头360全景室内WIFI款摄像头测试
GET /health
检查服务运行状态。
GET /camera/check
检查 RTSP 连接状态。
GET /camera/frame
获取当前摄像头帧的 JPEG 图片。
GET /camera/frame/latest.jpg
获取最新摄像头帧(带缓存控制)。
POST /camera/recognize?question={question}
对摄像头画面进行视觉识别分析。
POST /camera/ptz?direction={direction}&angle={angle}
控制摄像头云台移动,方向包括:left, right, up, down。
| 变量名 | 默认值 | 说明 |
|---|---|---|
| SERVICE_PORT | 8000 | 服务监听端口 |
| CAMERA_USER | admin | 摄像头用户名 |
| CAMERA_PASSWORD | 11111 | 摄像头密码 |
| CAMERA_IP | 192.168.1.1 | 摄像头 IP 地址 |
| CAMERA_PORT | 554 | 摄像头端口 |
| CAMERA_CHANNEL | 1 | 摄像头通道 |
| CAMERA_STREAM_TYPE | rtsp | 流媒体协议类型 |
| CAMERA_STREAM_QUALITY | 1 | 视频质量 |
| ONVIF_CAMERA_PTZ_ENABLED | false | 是否启用 PTZ 控制 |
| ONVIF_CAMERA_IP | 192.168.1.1 | ONVIF 摄像头 IP |
| ONVIF_CAMERA_PORT | 80 | ONVIF 端口 |
| ONVIF_CAMERA_USERNAME | admin | ONVIF 用户名 |
| ONVIF_CAMERA_PASSWORD | 11111 | ONVIF 密码 |
camera-service/
├── app/
│ ├── __init__.py
│ ├── main.py # 主应用入口
│ ├── logger.py # 日志配置
│ ├── manager/ # 摄像头管理模块
│ │ ├── __init__.py
│ │ └── camera_manager.py
│ ├── onvif/ # ONVIF 协议模块
│ │ ├── __init__.py
│ │ ├── onvif_camera.py
│ │ └── ptz.py
│ └── rtsp/ # RTSP 流处理模块
│ ├── __init__.py
│ ├── frame_grabber.py
│ └── rtsp_check.py
├── .env # 环境变量配置
├── .dockerignore
├── docker-compose.yml
├── Dockerfile
├── requirements.txt
└── README.md
通过 /camera/recognize 接口,您可以向摄像头画面提出问题并获得 AI 分析结果。服务会自动截取当前画面并发送到视觉识别 API 进行处理。
支持通过 /camera/ptz 接口控制摄像头的云台运动:
direction: left, right, up, downangle: 移动角度 (0-360)服务使用 Loguru 记录运行日志,日志输出到控制台和日志文件。
官方 Docker 镜像:chenqi1992/camera-service:latest
欢迎提交 Issue 和 Pull Request!
MIT License
作者:chenqi1992
版本:2.0.0
GitHub:https://github.com/chenqizhi1/camera-service
Content type
Image
Digest
sha256:8e94ae3a3…
Size
359.8 MB
Last updated
5 months ago
docker pull chenqizhi1992/camera-service