Process video and audio with correct codec selection, filtering, and encoding settings.
Install
🤖Use in AI Agents
Claude Code
# Install Skill (downloads SKILL.md to .claude/skills/)
clawhub install ffmpeg
# Then just tell Claude: "use FFmpeg to help me..."
OpenAI Codex / Cursor / Windsurf
# Same install command — works with all SKILL.md-compatible AI coding tools
clawhub install ffmpeg
OpenClaw Ecosystem
This Skill is compatible with the OpenClaw standard. After installation, a SKILL.md file is auto-generated, usable by any OpenClaw-compatible AI Agent (Claude Code, Cursor, Windsurf, etc.).
Environment & Dependencies
🟡
Medium
Paid API required or GPU helps significantly
Runs Locally
No internet required — data never leaves your machine
Download Douyin (TikTok China) videos to local files with watermark-free preference. Accepts URL or video_id, supports batch lists and a unified output directory — provides raw material for downstream video analysis or remixing.
clawhub install douyin-video-fetch
Video Clip
clawhubVideo Editing🔵 Easy
3.3
Use when the user wants to trim, cut, or extract a specific segment from a video by time range — e.g. "cut from 1:30 to 3:00", "trim the first 2 minutes", "e...
clawhub install video-clip
Video Translator
clawhubVideo Editing🟡 Medium
3.2
Real time video translation / dubbing skill. Translate user-provided video (file or URL) and return preview_url. 适用于视频直译、视频翻译、视频配音、字幕翻译出片。
clawhub install video-translator
Video Translate
clawhubVideo Editing🟡 Medium
3.2
Translate and dub existing videos into multiple languages using HeyGen. Use when: (1) Translating a video into another language, (2) Dubbing video content wi...
clawhub install video-translate
Remotion Video Toolkit
clawhubVideo Editing🔵 Easy Tested
9.5
Complete toolkit for programmatic video creation with Remotion + React.
Best practices for Remotion - Video creation in React
159K
clawhub install remotion-best-practices
Test Report
Real cold-start runs of this skill on Claude Code and Codex.
6 tasksClaude Code · Codex100% pass
tsub
Burn-in subtitles (hardcoded captions)
Equivalent workflow
Input: The site’s #1 scenario ("Add Subtitles"): burn a 3-cue SRT into a 1280×720 clip as hardcoded captions — but this ffmpeg build has NO libass/drawtext, so the usual `subtitles`/`ass` filter is unavailable. Solve it anyway: render each caption to a transparent PNG (Pillow) and overlay it for its SRT time window via ffmpeg `overlay` + `enable='between(t,start,end)'`.
Skill: FFmpegAlso used: Pillow (PIL)
Claude CodePass
5
Score /5
6
Rounds
261s
Time
Parsed SRT timings in Python, rendered each cue to a transparent PNG with Pillow (white bold text, dark rounded box + outline), then chained one bottom-centered ffmpeg overlay per cue gated by enable=between. Frame-sampled to confirm captions appear only inside their windows. (261s wall-clock is latency noise — 6 actions.)
claude-opus-4-8
CodexPass
5
Score /5
12
Rounds
149s
Time
Same route — confirmed the build lacks subtitles/ass/drawtext, wrote burn_captions.py to render 3 caption PNGs (Pillow), then overlaid each with enable=between. 12 shell steps (more granular probing). Valid 3-window hardsub; text slightly larger/bolder than Claude’s.
Verdict: Both passed the flagship "Add Subtitles" task despite the missing libass/drawtext — each independently chose the Pillow-PNG + timed-overlay route and produced a valid, professional hardsub. Efficiency favors Claude on this multi-step task by action count (6 vs 12); wall-clock is noise (finding f4). Visual quality a toss-up (Codex bolder, Claude more refined box).
tgrade
Cinematic color grade (teal & orange)
Equivalent workflow
Input: Apply a cinematic teal-&-orange color grade to a real outdoor scene (a 6s Big Buck Bunny clip, CC-BY 3.0) using ONLY ffmpeg color filters (curves / colorbalance / eq / vibrance) — no LUT files. Push shadows/mids teal, highlights warm, gentle S-curve + saturation lift, tasteful. This is the local-ffmpeg path to the look the AI color-grading skills produce.
Skill: FFmpegAlso used: yt-dlp (CC-BY source)
Claude CodePass
5
Score /5
4
Rounds
30s
Time
Per-channel `curves` (r/g/b separately) to push shadows/mids teal + highlights orange, then a gentle all-channel S-curve + `eq`/`vibrance` saturation lift. Caught that the input was actually 640×360 and lanczos-upscaled to the requested 1280×720.
t2
MP4 → looping GIF
Input: Convert in.mp4 to a high-quality 480px-wide ~15fps looping GIF (palettegen + paletteuse).
Skill: FFmpeg
Claude CodePass
5
Score /5
3
Rounds
25s
Time
One ffmpeg command, first try (split + palettegen + paletteuse). Output 480×270 / 75 frames / 2.11MB.
claude-opus-4-8
CodexPass
t4
Cross-fade reel + audio track
Input: Stitch three 5s clips with xfade cross-fades into a ~14s reel and add a sine audio track (multi-input filter_complex).
Skill: FFmpeg
Claude CodePass
5
Score /5
3
Rounds
43s
Time
One filter_complex command (normalised settb/fps/setpts, exact xfade offsets).
claude-opus-4-8
CodexPass
t5
Loudness-normalized audio + waveform
Input: Extract audio from a video, EBU R128 loudness-normalize to MP3, and render a 1280×240 waveform PNG.
Skill: FFmpeg
Claude CodePass
5
Score /5
4
Rounds
37s
Time
Two commands, first try; standard -16 LUFS streaming preset.
claude-opus-4-8
CodexPass
t6
3×3 frame contact sheet
Input: Sample 9 frames evenly from a 14s video into a 3×3 thumbnail grid (each cell 320px wide).
Skill: FFmpeg
Claude CodePass
5
Score /5
3
Rounds
29s
Time
One command (fps + scale + tile=3×3); pixel-identical to Codex.
claude-opus-4-8
CodexPass
Environment: macOS · ffmpeg 8.1.1 (built without libass/drawtext/freetype) · symmetric cold start (codex exec vs a fresh Claude Code subagent). The pure-ffmpeg CLI tasks are deterministic — outputs were byte-identical across both agents; the caption-burn task adds Pillow text rendering (outputs equivalent, not byte-identical).
Tone-aware `colorbalance` (teal shadows / warm highlights) + a `curves` S-curve + `eq`/`vibrance`. Also caught the 640×360 input + scaled to 1280×720. One `0:a?` zsh-glob retry (same gotcha as the compress task).
Verdict: Both produced a tasteful cinematic teal-orange grade — but via DIFFERENT techniques (Claude per-channel `curves`, Codex tone-aware `colorbalance`): a genuine technical/creative split on real footage, both valid looks (Claude a touch more saturated, Codex more balanced). Both also independently caught the input-resolution mismatch and upscaled to spec. Action count close (4 vs 5, incl. Codex’s glob retry). The local-ffmpeg equivalent of the catalog’s AI color-grading skills — no key, no LUT.
5
Score /5
4
Rounds
60s
Time
4 shell steps; same-spec output, byte-identical to Claude.
codex-cli 0.140
Output: out.gif — 480×270 / 75 frames / 2.11MB (shown here as a small MP4). Both agents byte-identical.
Verdict: Tied 5/5, identical output. Claude one-shot single command (25s / 3 actions) vs Codex 4 shell steps (60s).
5
Score /5
9
Rounds
84s
Time
9 shell steps; 14.0s / 1280×720 with audio; same spec.
codex-cli 0.140
Output: out.mp4 — 14s reel @1280×720 with AAC audio.
Verdict: Tied 5/5. Claude one filter_complex command (43s / 3 actions) vs Codex 9 steps (84s).