
Claude Video Transcode
- 6 installs
- 23 repo stars
- Updated April 6, 2026
- agricidaniel/claude-video
claude-video-transcode is a Claude Code skill that transcodes and compresses video between codecs and containers using FFmpeg with GPU acceleration.
About
claude-video-transcode converts video between codecs and containers using FFmpeg. It supports H.264, H.265, AV1, VP9, ProRes, and DNxHR, with GPU NVENC acceleration and CPU fallback, two-pass encoding for target bitrates, container remuxing, and batch processing. A developer uses it to compress oversized files, change formats, or remux videos without re-encoding.
- Transcodes between H.264, H.265, AV1, VP9, ProRes, and DNxHR with FFmpeg
- GPU-accelerated NVENC encoding with CPU fallback and two-pass encoding
- Container remuxing, compression, and batch transcoding directories
Claude Video Transcode by the numbers
- 6 all-time installs (skills.sh)
- Ranked #1,096 of 1,335 Generative Media skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
claude-video-transcode capabilities & compatibility
Free; runs entirely locally with FFmpeg, no API keys or network required.
- Capabilities
- claude video shorts · claude video screenshot
- Use cases
- video generation
- Pricing
- Free
What claude-video-transcode says it does
Video transcoding and codec conversion using FFmpeg with GPU acceleration. Converts between H.264, H.265, AV1, VP9, ProRes, and DNxHR.
NVENC supports up to **8 concurrent encoding sessions** on consumer GPUs.
### Container Remux (no re-encode)
npx skills add https://github.com/agricidaniel/claude-video --skill claude-video-transcodeAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 6 |
|---|---|
| repo stars | ★ 23 |
| Last updated | April 6, 2026 |
| Repository | agricidaniel/claude-video ↗ |
What it does
Transcode and compress video between codecs and containers with FFmpeg, using GPU acceleration when available.
Who is it for?
Compressing large videos, converting codecs, and remuxing containers with FFmpeg.
Skip if: Cutting clips, adding captions, or capturing web screenshots.
When should I use this skill?
You need to convert, compress, or remux a video file.
What you get
A source video becomes a smaller or format-compatible output file.
- Transcoded video files
- Compressed video files
- Remuxed containers
By the numbers
- 6+ codecs supported (H.264, H.265, AV1, VP9, ProRes, DNxHR)
- NVENC supports up to 8 concurrent encoding sessions
- NVENC presets p1-p7
Files
claude-video-transcode — Codec Conversion and Compression
Pre-Flight
1. Run bash scripts/preflight.sh "$INPUT" "$OUTPUT" 2. Run bash scripts/detect_gpu.sh to determine available encoders 3. Run bash scripts/estimate_size.sh "$INPUT" for large files 4. Analyze input: ffprobe -v error -print_format json -show_format -show_streams "$INPUT"
Codec Selection Guide
| Goal | Codec | Encoder (GPU) | Encoder (CPU) | CRF/CQ |
|---|---|---|---|---|
| Best compression (modern) | AV1 | av1_nvenc -cq 30 | libsvtav1 -crf 28 | 28-32 |
| Maximum compatibility | H.264 | h264_nvenc -cq 21 | libx264 -crf 20 | 18-23 |
| Good compression + compat | H.265 | hevc_nvenc -cq 26 | libx265 -crf 24 | 22-28 |
| Web browsers | VP9 | N/A | libvpx-vp9 -crf 30 | 25-35 |
| Professional editing | ProRes | N/A | prores_ks -profile:v 3 | N/A |
| Professional editing | DNxHR | N/A | dnxhd -profile:v dnxhr_hq | N/A |
| No re-encode needed | Copy | -c copy | -c copy | N/A |
CRF equivalence: x264 CRF 23 ≈ x265 CRF 28 ≈ SVT-AV1 CRF 30 (similar visual quality, decreasing file size). Each ±6 CRF roughly doubles or halves the bitrate.
Common Operations
Simple Compression (H.264, CPU)
ffmpeg -n -i "$INPUT" -c:v libx264 -crf 20 -preset medium -pix_fmt yuv420p \
-c:a aac -b:a 192k -movflags +faststart "$OUTPUT"GPU-Accelerated (NVENC)
H.264 NVENC:
ffmpeg -n -hwaccel cuda -hwaccel_output_format cuda -i "$INPUT" \
-c:v h264_nvenc -preset p5 -tune hq -rc constqp -cq 21 \
-spatial-aq 1 -temporal-aq 1 -rc-lookahead 32 \
-c:a aac -b:a 192k -movflags +faststart "$OUTPUT"H.265 NVENC:
ffmpeg -n -hwaccel cuda -hwaccel_output_format cuda -i "$INPUT" \
-c:v hevc_nvenc -preset p5 -tune hq -rc constqp -cq 26 \
-spatial-aq 1 -temporal-aq 1 -rc-lookahead 32 \
-tag:v hvc1 -c:a aac -b:a 192k -movflags +faststart "$OUTPUT"AV1 NVENC (RTX 40/50 series):
ffmpeg -n -hwaccel cuda -hwaccel_output_format cuda -i "$INPUT" \
-c:v av1_nvenc -preset p5 -tune hq -rc constqp -cq 30 \
-c:a aac -b:a 192k -movflags +faststart "$OUTPUT"AV1 Software (best compression, slow)
ffmpeg -n -i "$INPUT" -c:v libsvtav1 -crf 28 -preset 6 -pix_fmt yuv420p10le \
-svtav1-params tune=0 -c:a libopus -b:a 128k "$OUTPUT"Two-Pass Encoding (target specific bitrate)
# Pass 1
ffmpeg -y -i "$INPUT" -c:v libx264 -b:v 5M -pass 1 -passlogfile /tmp/ffmpeg2pass \
-an -f null /dev/null
# Pass 2
ffmpeg -n -i "$INPUT" -c:v libx264 -b:v 5M -pass 2 -passlogfile /tmp/ffmpeg2pass \
-c:a aac -b:a 192k -movflags +faststart "$OUTPUT"
rm -f /tmp/ffmpeg2pass-0.log /tmp/ffmpeg2pass-0.log.mbtreeContainer Remux (no re-encode)
# MKV to MP4
ffmpeg -n -i input.mkv -c copy -movflags +faststart output.mp4
# MP4 to MKV
ffmpeg -n -i input.mp4 -c copy output.mkv
# Any to WebM (requires VP9/AV1 video + Opus/Vorbis audio — may need re-encode)
ffmpeg -n -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -row-mt 1 \
-c:a libopus -b:a 128k output.webmGPU Fallback Pattern
# Try GPU first, fall back to CPU
ffmpeg -n -hwaccel cuda -hwaccel_output_format cuda -i "$INPUT" \
-c:v h264_nvenc -preset p5 -tune hq -rc constqp -cq 21 \
-c:a aac -b:a 192k -movflags +faststart "$OUTPUT" 2>/dev/null || \
ffmpeg -n -i "$INPUT" \
-c:v libx264 -crf 20 -preset medium \
-c:a aac -b:a 192k -movflags +faststart "$OUTPUT"Batch Transcoding
# Process all MKV files in a directory
for f in /path/to/input/*.mkv; do
ffmpeg -n -hwaccel cuda -i "$f" \
-c:v h264_nvenc -preset p5 -cq 21 \
-c:a aac -b:a 192k -movflags +faststart \
"/path/to/output/$(basename "${f%.mkv}.mp4")"
doneNVENC Presets
| Preset | Speed | Quality | Use Case |
|---|---|---|---|
| p1 | Fastest | Lowest | Preview/drafts |
| p3 | Fast | Good | Quick exports |
| p4-p5 | Balanced | Very good | General use (recommended) |
| p6-p7 | Slow | Best | Final delivery |
NVENC supports up to 8 concurrent encoding sessions on consumer GPUs.
Container Compatibility
| Container | Video Codecs | Audio Codecs | Notes |
|---|---|---|---|
| MP4 | H.264, H.265, AV1 | AAC, AC3, MP3 | Always add -movflags +faststart |
| MKV | Everything | Everything | Most flexible container |
| WebM | VP8, VP9, AV1 | Vorbis, Opus | Web-optimized |
| MOV | ProRes, H.264, H.265 | AAC, PCM | Apple/editing workflows |
| AVI | H.264, MPEG-4 | MP3, PCM | Legacy, avoid for new content |
Quality Optimization Tips
- Always use `-pix_fmt yuv420p` for maximum compatibility (unless 10-bit needed)
- Always add `-movflags +faststart` for MP4 output (moves metadata to beginning for streaming)
- Use `-tag:v hvc1` for H.265 in MP4 (required for Apple device playback)
- Stream copy (
-c copy) when only changing container — instant, lossless - CRF mode is almost always better than target bitrate -- let the encoder decide
Reference
Load references/transcode.md for codec comparison tables, two-pass encoding recipes, and container compatibility matrix.
Related skills
FAQ
Which codecs are supported?
H.264, H.265/HEVC, AV1, VP9, ProRes, and DNxHR, plus stream copy for remuxing.
Does it use the GPU?
Yes; it detects encoders and uses NVENC (h264_nvenc, hevc_nvenc, av1_nvenc) with a CPU libx264/libx265 fallback.
Can it remux without re-encoding?
Yes; container remux uses -c copy, for example MKV to MP4.