返回顶部
r

raspberry-pi-camera-service

提供使用摄像头拍照, 录制视频或直接生成gif的能力。何时触发: 需要拍照时, 需要观察一段时间当前视野时, 需要关注某件事情的进展时.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
384
下载量
0
收藏
概述
安装方式
版本历史

raspberry-pi-camera-service

# Raspberry Pi Camera Service Skill ## 概述 树莓派摄像头服务提供基于HTTP的树莓派摄像头硬件(CSI或USB)控制,具备以下高级功能: - 多格式视频录制(H264、MP4、GIF) - 带心跳监控的会话管理 - 自动超时保护 - 后台转换任务 - 视频文件管理(列表、下载、删除) ## 架构 该服务由三个主要组件组成: 1. **摄像头管理器(Camera Manager)** - 处理底层摄像头硬件(通过Picamera2使用CSI接口,通过FFmpeg使用USB接口) 2. **转换器(Converter)** - 使用FFmpeg将原始H264转换为其他格式(MP4、GIF) 3. **服务(Service)** - 使用FastAPI构建的HTTP API服务器,具备会话管理功能 ## 客户端 客户端SDK会在服务端部署时自动安装到本地 ## 服务端部署 可通过执行 `python -c "from camera_client import CameraClient"`来判断服务是否被成功部署 如果发现服务还未部署,则立刻阅读 `references/deploy_service.md` 进行部署 ### 快速开始 #### 拍照 ```python from camera_client import CameraClient with CameraClient() as client: result = client.capture(task_name="snapshot") print(f"✅ {result['image_path']}") ``` #### 录制 MP4 视频 ```python from camera_client import CameraClient client = CameraClient() try: # 录制 5 秒的 1080p 视频 result = client.record_video( duration=5, task_name="demo_video", output_format="mp4" ) print(f"录制完成: {result['video_path']}") print(f"文件大小: {result['file_size_bytes'] / 1024 / 1024:.2f} MB") finally: client.session.close() ``` #### 录制 GIF 动图 ```python from camera_client import CameraClient client = CameraClient() try: # 录制 3 秒的高质量 GIF result = client.record_gif( duration=3, width=480, # 480 像素宽 fps=15, # 15 帧/秒 quality=7, # 高质量 loop=True # 循环播放 ) print(f"GIF 录制完成: {result['video_path']}") finally: client.session.close() ``` #### 手动控制录制流程 ```python from camera_client import CameraClient import time client = CameraClient() try: # 1. 开始录制 result = client.start_recording( task_name="manual_control", output_format="mp4", heartbeat_timeout=30 ) # 2. 录制中(等待 6 秒) time.sleep(6) # 3. 停止录制 result = client.stop_recording(keep_video=True) print(f"✅ 完成: {result['video_path']}") finally: client.session.close() ``` #### 手动心跳控制 ```python from camera_client import CameraClient import time # 禁用自动心跳 client = CameraClient(heartbeat_enabled=False) try: # 开始录制(心跳超时 15 秒) client.start_recording( task_name="manual_heartbeat", output_format="h264", heartbeat_timeout=15 ) # 每 5 秒手动发送一次心跳 for i in range(3): time.sleep(5) client.send_heartbeat() # 停止录制 result = client.stop_recording(keep_video=True) finally: client.session.close() ``` 如果碰到了问题而需要了解更多细节,请阅读`references/client_usage.md` ## 会话管理 - 每个录制会话都会分配一个唯一的 `session_id`(会话ID) - 心跳机制可防止客户端断开连接时的资源泄漏 - 若未收到心跳信号,自动超时将停止录制 - 客户端支持启用自动心跳功能 ## 支持格式 1. **H264** - 原始H264流(硬件编码,速度最快) 2. **MP4** - 封装在MP4容器中的H264(后台转换) 3. **GIF** - 从视频片段生成的动画GIF,支持可配置参数(后台转换) ## 硬件支持 - **CSI摄像头** - 通过Picamera2提供主要支持(树莓派摄像头模块) - **USB摄像头** - 通过FFmpeg提供备用支持(标准UVC摄像头) - 若CSI摄像头不可用,自动检测并回退到USB摄像头 ## 错误处理 - 服务繁忙 (423) - 其他客户端正在录制 - API错误 (4xx/5xx) - 无效请求或服务器错误 - 客户端断开连接时自动清理 - 资源管理以防止资源泄漏 ## 特别注意 如果你不确定录制时长(根据条件录制),一定要阅读`references/client_usage.md` 比如你需要录制 **从舵机开始转动到舵机转动结束** 的视频,此时舵机开始转动前,要请求服务开始录制,然后一直到舵机转动结束,再结束录制。**期间要维持心跳**

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 raspberry-pi-camera-service-1776172052 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 raspberry-pi-camera-service-1776172052 技能

通过命令行安装

skillhub install raspberry-pi-camera-service-1776172052

下载 Zip 包

⬇ 下载 raspberry-pi-camera-service v1.0.0

文件大小: 35 KB | 发布时间: 2026-4-15 10:27

v1.0.0 最新 2026-4-15 10:27
raspberry-pi-camera-service 1.0.0

- Initial release providing remote camera control for Raspberry Pi (CSI & USB cameras) via HTTP API.
- Supports photo capture, multi-format video recording (H264, MP4, GIF), and GIF generation.
- Includes session management with heartbeat monitoring and automatic timeout protection.
- Offers backend format conversion, and video file management (list, download, delete).
- Provides easy-to-use Python client with example usage for capturing photos and recording videos.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部