首页龙虾技能列表 › linux-camera — 技能工具

linux-camera — 技能工具

v1.0.0

[自动翻译] Capture photos, record video clips, list cameras, and live stream on Linux. Uses V4L2 and ffmpeg. Supports USB webcams and RTSP/IP cameras.

0· 366·2 当前·3 累计
by @johnnynunez (Johnny)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/10
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
The skill's code and instructions match its stated purpose (capturing and streaming cameras on Linux); main issues are operational security (open network endpoints, potential credential leakage via RTSP URLs) and a small metadata mismatch about required binaries.
评估建议
This skill appears to do what it says (capture and stream cameras), but consider these practical security things before installing or running it: - Install ffmpeg and v4l-utils as the SKILL.md recommends; registry metadata should be updated to list these dependencies. - Beware of network exposure: the streaming server listens on the host and (by default) will be reachable from other devices. If you run this on a machine with internet access, restrict binding/firewall rules or run only on a priva...
详细分析 ▾
用途与能力
Name/description (V4L2 + ffmpeg camera capture and streaming) align with the included Python scripts. The scripts perform listing, snapshots, clips, and live streaming as described. Minor inconsistency: registry metadata lists no required binaries, but SKILL.md explicitly requires ffmpeg and v4l-utils (these are reasonable and expected for the stated purpose).
指令范围
SKILL.md instructs the agent to install ffmpeg and v4l-utils and to run the included scripts — all within the declared camera use-case. However the streaming server binds to network interfaces (HTTP server and optional RTSP re-stream) and serves outputs with Access-Control-Allow-Origin: *. The runtime instructions and examples also show passing RTSP URLs (which may include credentials). These are legitimate for streaming but are operational security concerns (exposing camera feeds and possible credential leakage).
安装机制
There is no installer that downloads remote code; the package is delivered as source files and SKILL.md. No external archives or obscure URLs are fetched by an installer. The scripts rely on system packages (ffmpeg, v4l-utils) which the SKILL.md asks the user to install via apt — a normal, low-risk approach.
凭证需求
The skill does not request environment variables or external credentials in metadata, which is appropriate. Caution: RTSP input examples show URLs containing user:pass@host, and these URLs may be provided as command-line arguments — such credentials can appear in process listings or logs and therefore risk exposure. Also the metadata omission of required binaries (ffmpeg/v4l-utils) should be corrected but is not malicious.
持久化与权限
always is false and the skill is user-invocable only. It does not modify other skills or system-wide configs. It runs user-started processes and writes HLS segment files to disk (configurable), which is expected for this functionality.
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/3/10

Initial release of linux-camera skill. - Capture photos, record video clips, and live stream from USB webcams (V4L2) or IP/RTSP cameras on Linux. - Includes scripts to quickly take photos, list available cameras, capture high-quality snapshots, and record video clips. - Live streaming supports MJPEG (web), HLS (adaptive/mobile), and RTSP re-streaming with a built-in server. - Flexible command-line parameters for device selection, resolution, formats, and outputs. - Integrates easily with other robot skills for automated use cases. - Simple installation; uses ffmpeg and v4l-utils.

● 无害

安装命令 点击复制

官方npx clawhub@latest install linux-camera
镜像加速npx clawhub@latest install linux-camera --registry https://cn.clawhub-mirror.com

技能文档

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
ParameterDescriptionDefault
--jsonOutput as JSONoff

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
ParameterDescriptionDefault
--deviceV4L2 device path/dev/video0
--rtspRTSP URL (use instead of --device for IP cameras)
--outputOutput file path/tmp/camera_snap.jpg
--widthCapture width1280
--heightCapture height720
--warmupWarmup frames to skip (for exposure adjustment)5
--qualityJPEG 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
ParameterDescriptionDefault
--deviceV4L2 device path/dev/video0
--rtspRTSP URL (use instead of --device for IP cameras)
--outputOutput file path/tmp/camera_clip.mp4
--durationRecording duration in seconds5
--widthCapture width1280
--heightCapture height720
--fpsFrames per second30

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://:8090 in a browser to view the MJPEG stream.

ParameterDescriptionDefault
--deviceV4L2 device path/dev/video0
--rtspRTSP input URL (use instead of --device for IP cameras)
--portHTTP server port8090
--widthCapture width640
--heightCapture height480
--fpsTarget frames per second15
--enable-hlsEnable HLS output (adaptive bitrate, mobile-friendly)off
--enable-rtspEnable RTSP re-stream outputoff
--rtsp-portRTSP server port (when --enable-rtsp is used)8554
Endpoints:

URLDescription
http://:8090/MJPEG stream (works in tags and browsers)
http://:8090/snapSingle JPEG snapshot
http://:8090/hlsHLS live page (requires --enable-hls)
http://:8090/hls/stream.m3u8HLS playlist for VLC or mobile players
rtsp://:8554/liveRTSP stream (requires --enable-rtsp)
http://:8090/statusJSON 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:pass@192.168.1.100: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:pass@192.168.1.100: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

数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务