Sign inSign up

chenqizhi1992/camera-service

By chenqizhi1992

•Updated 5 months ago

Image
0

608

chenqizhi1992/camera-service repository overview

⁠摄像头服务 - Camera Service

一个基于 FastAPI 的摄像头服务,支持 RTSP 流处理、ONVIF 云台控制和视觉识别功能。

⁠🚀 功能特性

  • RTSP 流处理:实时获取摄像头视频流并处理为 JPEG 图片
  • ONVIF 云台控制:支持摄像头 PTZ(平移、倾斜)旋转控制
  • 视觉识别:集成视觉识别 API,支持智能识别和分析
  • Web API 接口:提供 RESTful API 接口供外部调用
  • Docker 部署:支持 Docker 和 Docker Compose 部署

⁠📋 技术栈

  • 后端框架:FastAPI⁠
  • 异步服务器:Uvicorn
  • 图像处理:OpenCV
  • 日志管理:Loguru
  • HTTP 请求:Requests
  • ONVIF 协议:onvif_zeep
  • 容器化:Docker & Docker Compose

⁠🛠️ 快速开始

⁠1. 环境准备
# 克隆项目
git clone https://github.com/chenqizhi1/camera-service.git
cd camera-service

# 创建环境变量文件
cp .env.example .env
⁠2. 配置环境变量

编辑 .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
⁠3. Docker 部署
# 使用 Docker Compose 启动服务
docker-compose up -d

# 查看服务状态
docker-compose logs -f
⁠4. 直接运行(开发模式)
# 安装依赖
pip install -r requirements.txt

# 启动服务
uvicorn app.main:app --host 0.0.0.0 --port 8000
⁠5. 测试使用摄像头

天地伟业宇航员无线监控摄像头360全景室内WIFI款摄像头测试

  • 用于 DIY MOSS XIAOZHI 智能体MCP截取当前帧画面进行视觉分析。
  • 使用支持 ONVIF 协议的监控摄像头进行云台控制。

⁠🌐 API 接口

⁠健康检查
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_PORT8000服务监听端口
CAMERA_USERadmin摄像头用户名
CAMERA_PASSWORD11111摄像头密码
CAMERA_IP192.168.1.1摄像头 IP 地址
CAMERA_PORT554摄像头端口
CAMERA_CHANNEL1摄像头通道
CAMERA_STREAM_TYPErtsp流媒体协议类型
CAMERA_STREAM_QUALITY1视频质量
ONVIF_CAMERA_PTZ_ENABLEDfalse是否启用 PTZ 控制
ONVIF_CAMERA_IP192.168.1.1ONVIF 摄像头 IP
ONVIF_CAMERA_PORT80ONVIF 端口
ONVIF_CAMERA_USERNAMEadminONVIF 用户名
ONVIF_CAMERA_PASSWORD11111ONVIF 密码

⁠📁 项目结构

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 进行处理。

⁠🎮 PTZ 控制

支持通过 /camera/ptz 接口控制摄像头的云台运动:

  • direction: left, right, up, down
  • angle: 移动角度 (0-360)

⁠📊 日志

服务使用 Loguru 记录运行日志,日志输出到控制台和日志文件。

⁠🔒 安全注意事项

  • 请勿在生产环境中使用默认的用户名密码
  • 建议使用反向代理和 HTTPS 加密传输
  • 限制 API 访问权限,必要时添加身份验证

⁠🐳 Docker 镜像

官方 Docker 镜像:chenqi1992/camera-service:latest

⁠🤝 贡献

欢迎提交 Issue 和 Pull Request!

⁠📄 许可证

MIT License


作者:chenqi1992
版本:2.0.0
GitHub:https://github.com/chenqizhi1/camera-service⁠

Tag summary

Content type

Image

Digest

sha256:8e94ae3a3…

Size

359.8 MB

Last updated

5 months ago

docker pull chenqizhi1992/camera-service