whyashthakker/bgblur-video-skills · Archived

ffmpeg-video-prep

Pre-process videos with FFmpeg before blur pipelines — format conversion, trimming, resolution normalization, metadata stripping, and frame-rate standardization.

First seen Jun 30, 2026

Installation

$ npx skills add whyashthakker/bgblur-video-skills --skill ffmpeg-video-prep

Summary

  • Pre-process videos with FFmpeg before blur pipelines — format conversion, trimming, resolution normalization, metadata stripping, and frame-rate standardization.
  • Use when user mentions ffmpeg, video conversion, trim video, normalize format, strip metadata, prepare video for upload, MP4/MOV/MKV conversion, or pre-processing before BGBlur.

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

License /en/features/license-blur
Default branch main
Open issues 0
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

Allowed toolsRead, Write, Shell

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,405 B
  • docs SUMMARY.md 366 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

FFmpeg Video Prep Skill

Prepare source footage for BGBlur processing. Clean inputs produce faster uploads, better motion tracking, and fewer mask artifacts.

Quick Reference

BGBlur accepted formats: MP4, MOV, M4V, AVI, MKV Free tier limits: ≤ 200MB, ≤ 10 minutes Recommended upload spec: H.264 MP4, 1080p or lower, 30fps, metadata stripped

Workflow

Step 1: Inspect Source

python3 scripts/video_probe.py "input.mov"

Note: codec, resolution, duration, file size, rotation metadata.

Step 2: Trim Dead Footage

Remove intro/outro black frames and irrelevant segments to save credits and processing time.

# Trim from 00:00:05 to 00:02:30 (re-encode for frame-accurate cut)
ffmpeg -i input.mp4 -ss 00:00:05 -to 00:02:30 -c:v libx264 -crf 18 -c:a aac -movflags +faststart output_trimmed.mp4

Fast copy trim (keyframe-aligned, no re-encode — may be off by a few frames):

ffmpeg -ss 00:00:05 -i input.mp4 -to 00:02:25 -c copy output_trimmed.mp4

Step 3: Convert to Upload-Ready MP4

ffmpeg -i input.mov \
  -c:v libx264 -preset medium -crf 20 \
  -c:a aac -b:a 128k \
  -movflags +faststart \
  -pix_fmt yuv420p \
  output_ready.mp4

4K → 1080p (reduces size, improves browser processing speed):

ffmpeg -i input_4k.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" \
  -c:v libx264 -crf 20 -c:a aac -movflags +faststart output_1080p.mp4

Step 4: Normalize Frame Rate

BGBlur motion tracking works best at consistent frame rates. Target 30fps unless source is 24fps cinematic.

# Force 30fps
ffmpeg -i input.mp4 -r 30 -c:v libx264 -crf 20 -c:a aac output_30fps.mp4

# Preserve 24fps cinematic
ffmpeg -i input.mp4 -r 24 -c:v libx264 -crf 20 -c:a aac output_24fps.mp4

Step 5: Strip Metadata (Privacy)

Remove GPS, camera model, creation timestamps before external processing:

ffmpeg -i input.mp4 -map_metadata -1 -c:v copy -c:a copy output_clean.mp4

For full re-encode + metadata strip:

ffmpeg -i input.mp4 -map_metadata -1 -c:v libx264 -crf 20 -c:a aac output_clean.mp4

Step 6: Fix Common Issues

Problem Fix
Rotated phone video -vf "transpose=1" (90° CW) or use -autorotate
Variable frame rate (VFR) Re-encode with -vsync cfr -r 30
No audio needed -an to drop audio track
File too large Lower CRF (23-28) or scale to 720p
Corrupt timestamps -fflags +genpts
MKV/AVI source Re-encode to MP4 (copy may fail)

Phone rotation fix:

ffmpeg -i input.mp4 -vf "transpose=1" -c:v libx264 -crf 20 -c:a aac output_fixed.mp4

Compress for free tier (< 200MB):

ffmpeg -i input.mp4 -vf "scale=1280:-2" -c:v libx264 -crf 23 -c:a aac -b:a 96k output_small.mp4

Step 7: Validate Output

python3 scripts/video_probe.py "output_ready.mp4" --check-metadata

Confirm: format MP4, size under limit, duration under 10 min, metadata cleared.

One-Shot Prep Command

Combine trim + convert + strip metadata:

ffmpeg -ss 00:00:02 -i input.mov -t 00:05:00 \
  -map_metadata -1 \
  -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" \
  -r 30 -c:v libx264 -preset medium -crf 20 \
  -c:a aac -b:a 128k -movflags +faststart \
  output_bgblur_ready.mp4

Checklist

Pre-Blur Prep:
- [ ] Probed source metadata
- [ ] Trimmed irrelevant segments
- [ ] Converted to MP4 (H.264 + AAC)
- [ ] Normalized to 24 or 30fps
- [ ] Stripped EXIF/GPS metadata
- [ ] Verified size ≤ 200MB (free) or within plan limit
- [ ] Verified duration ≤ 10 min (free)

BGBlur Reference

Upload prepared files at BGBlur Upload. Browser-based processing — no server-side retention after export.