提供使用摄像头拍照, 录制视频或直接生成gif的能力。何时触发: 需要拍照时, 需要观察一段时间当前视野时, 需要关注某件事情的进展时.
树莓派摄像头服务提供基于HTTP的树莓派摄像头硬件(CSI或USB)控制,具备以下高级功能:
该服务由三个主要组件组成:
客户端SDK会在服务端部署时自动安装到本地
可通过执行 python -c "from camera_client import CameraClient"来判断服务是否被成功部署
如果发现服务还未部署,则立刻阅读 references/deploy_service.md 进行部署
from camera_client import CameraClient
with CameraClient() as client:
result = client.capture(task_name="snapshot")
print(f"✅ {result['image_path']}")
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()
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()
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()
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)如果你不确定录制时长(根据条件录制),一定要阅读references/client_usage.md
比如你需要录制 从舵机开始转动到舵机转动结束 的视频,此时舵机开始转动前,要请求服务开始录制,然后一直到舵机转动结束,再结束录制。期间要维持心跳
ZIP package — ready to use