/install linux-camera
Linux Camera Skill
Camera capture skill for Linux systems. Supports USB webcams (V4L2) and network cameras (RTSP).
Skill directory:
~/.openclaw/workspace/skills/linux-camera/
Dependencies
sudo apt-get install -y ffmpeg v4l-utils
Scripts
0. Quick photo (camera_photo.py) — simplest way to take a photo
No flags needed. Just run it.
uv run python scripts/camera_photo.py # auto-detect camera, timestamped filename
uv run python scripts/camera_photo.py front # use /dev/video0
uv run python scripts/camera_photo.py back # use /dev/video2
uv run python scripts/camera_photo.py front pic.jpg # custom filename → /tmp/pic.jpg
uv run python scripts/camera_photo.py /dev/video4 # explicit device path
Camera aliases: front = /dev/video0, back = /dev/video2. Output goes to /tmp/ by default.
1. List available cameras (camera_list.py)
Detects all V4L2 video devices and prints their names, paths, and supported formats.
uv run python scripts/camera_list.py
| Parameter | Description | Default |
|---|---|---|
--json |
Output as JSON | off |
2. Take a snapshot (camera_snap.py) — primary, recommended
Captures a single frame from a camera and saves it as a JPEG.
uv run python scripts/camera_snap.py --output /tmp/snapshot.jpg
| Parameter | Description | Default |
|---|---|---|
--device |
V4L2 device path | /dev/video0 |
--rtsp |
RTSP URL (use instead of --device for IP cameras) |
— |
--output |
Output file path | /tmp/camera_snap.jpg |
--width |
Capture width | 1280 |
--height |
Capture height | 720 |
--warmup |
Warmup frames to skip (for exposure adjustment) | 5 |
--quality |
JPEG quality (1–100) | 90 |
3. Record a video clip (camera_clip.py)
Records a video clip from a camera.
uv run python scripts/camera_clip.py --duration 5 --output /tmp/clip.mp4
| Parameter | Description | Default |
|---|---|---|
--device |
V4L2 device path | /dev/video0 |
--rtsp |
RTSP URL (use instead of --device for IP cameras) |
— |
--output |
Output file path | /tmp/camera_clip.mp4 |
--duration |
Recording duration in seconds | 5 |
--width |
Capture width | 1280 |
--height |
Capture height | 720 |
--fps |
Frames per second | 30 |
4. Live streaming (camera_stream.py)
Multi-format live streaming server. Supports MJPEG (low-latency), HLS (adaptive, mobile-friendly), and RTSP re-streaming.
uv run python scripts/camera_stream.py --port 8090
Open http://\x3Cdevice-ip>:8090 in a browser to view the MJPEG stream.
| Parameter | Description | Default |
|---|---|---|
--device |
V4L2 device path | /dev/video0 |
--rtsp |
RTSP input URL (use instead of --device for IP cameras) |
— |
--port |
HTTP server port | 8090 |
--width |
Capture width | 640 |
--height |
Capture height | 480 |
--fps |
Target frames per second | 15 |
--enable-hls |
Enable HLS output (adaptive bitrate, mobile-friendly) | off |
--enable-rtsp |
Enable RTSP re-stream output | off |
--rtsp-port |
RTSP server port (when --enable-rtsp is used) |
8554 |
Endpoints:
| URL | Description |
|---|---|
http://\x3Cip>:8090/ |
MJPEG stream (works in \x3Cimg> tags and browsers) |
http://\x3Cip>:8090/snap |
Single JPEG snapshot |
http://\x3Cip>:8090/hls |
HLS live page (requires --enable-hls) |
http://\x3Cip>:8090/hls/stream.m3u8 |
HLS playlist for VLC or mobile players |
rtsp://\x3Cip>:8554/live |
RTSP stream (requires --enable-rtsp) |
http://\x3Cip>:8090/status |
JSON status (frame age, size, active outputs) |
Examples
# List cameras
uv run python scripts/camera_list.py
# Snapshot from default webcam
uv run python scripts/camera_snap.py
# Snapshot from a specific camera
uv run python scripts/camera_snap.py --device /dev/video2 --output /tmp/photo.jpg
# Snapshot from an IP camera
uv run python scripts/camera_snap.py --rtsp rtsp://user:[email protected]:554/stream1
# Record 10 seconds of video
uv run python scripts/camera_clip.py --duration 10
# MJPEG stream (low-latency, view in browser)
uv run python scripts/camera_stream.py --port 8090
# MJPEG + HLS stream (adaptive bitrate for mobile / remote)
uv run python scripts/camera_stream.py --port 8090 --enable-hls
# Full streaming: MJPEG + HLS + RTSP re-stream
uv run python scripts/camera_stream.py --port 8090 --enable-hls --enable-rtsp
# Stream from an IP camera as input
uv run python scripts/camera_stream.py --rtsp rtsp://user:[email protected]:554/stream1 --enable-hls
# High-res stream at 30fps
uv run python scripts/camera_stream.py --width 1280 --height 720 --fps 30
Multiple cameras
If you have multiple cameras (e.g. /dev/video0 and /dev/video2), specify the device:
# List all cameras
uv run python scripts/camera_list.py
# Snap from camera 0
uv run python scripts/camera_snap.py --device /dev/video0 --output /tmp/cam0.jpg
# Snap from camera 2
uv run python scripts/camera_snap.py --device /dev/video2 --output /tmp/cam2.jpg
# Stream camera 0 on port 8090, camera 2 on port 8091
uv run python scripts/camera_stream.py --device /dev/video0 --port 8090
uv run python scripts/camera_stream.py --device /dev/video2 --port 8091
Coordinate with robot arm
Combine with the soarm-control skill to look at something and take a photo:
# Move arm to look at the desktop
uv run python ~/.openclaw/workspace/skills/soarm-control/scripts/soarm_set_joints.py \
--shoulder-pan 1.626 --shoulder-lift -42.110 --elbow-flex 32.088 \
--wrist-flex 78.242 --wrist-roll -95.077
# Capture what the camera sees
uv run python scripts/camera_snap.py --output /tmp/desktop.jpg
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install linux-camera - 安装完成后,直接呼叫该 Skill 的名称或使用
/linux-camera触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
linux-camera 是什么?
Capture photos, record video clips, list cameras, and live stream on Linux. Uses V4L2 and ffmpeg. Supports USB webcams and RTSP/IP cameras. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 438 次。
如何安装 linux-camera?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install linux-camera」即可一键安装,无需额外配置。
linux-camera 是免费的吗?
是的,linux-camera 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
linux-camera 支持哪些平台?
linux-camera 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 linux-camera?
由 Johnny(@johnnynunez)开发并维护,当前版本 v1.0.0。