Skillsbench FFmpeg Format Conversion
Convert media files between formats - video containers, audio formats, and codec transcoding
install
source · Clone the upstream repo
git clone https://github.com/benchflow-ai/skillsbench
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/benchflow-ai/skillsbench "$T" && mkdir -p ~/.claude/skills && cp -r "$T/tasks/multilingual-video-dubbing/environment/skills/ffmpeg-format-conversion" ~/.claude/skills/benchflow-ai-skillsbench-ffmpeg-format-conversion && rm -rf "$T"
manifest:
tasks/multilingual-video-dubbing/environment/skills/ffmpeg-format-conversion/SKILL.mdsource content
FFmpeg Format Conversion Skill
Convert media files between different formats and containers.
When to Use
- Convert video containers (MP4, MKV, AVI, etc.)
- Convert audio formats (MP3, AAC, WAV, etc.)
- Transcode to different codecs
- Copy streams without re-encoding (fast)
Basic Conversion
# Convert container format (re-encode) ffmpeg -i input.avi output.mp4 # Copy streams without re-encoding (fast, no quality loss) ffmpeg -i input.mp4 -c copy output.mkv # Convert with specific codec ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4
Video Codec Conversion
# H.264 ffmpeg -i input.mp4 -c:v libx264 output.mp4 # H.265 (better compression) ffmpeg -i input.mp4 -c:v libx265 output.mp4 # VP9 (web optimized) ffmpeg -i input.mp4 -c:v libvpx-vp9 output.webm # AV1 (modern codec) ffmpeg -i input.mp4 -c:v libaom-av1 output.mp4
Audio Format Conversion
# MP3 ffmpeg -i input.wav -acodec libmp3lame -q:a 2 output.mp3 # AAC ffmpeg -i input.wav -c:a aac -b:a 192k output.m4a # Opus (best quality/bitrate) ffmpeg -i input.wav -c:a libopus -b:a 128k output.opus # FLAC (lossless) ffmpeg -i input.wav -c:a flac output.flac
Quality Settings
# CRF (Constant Rate Factor) - lower is better quality ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4 # Bitrate ffmpeg -i input.mp4 -b:v 2M -b:a 192k output.mp4 # Two-pass encoding (best quality) ffmpeg -i input.mp4 -c:v libx264 -b:v 2M -pass 1 -f null /dev/null ffmpeg -i input.mp4 -c:v libx264 -b:v 2M -pass 2 output.mp4
Presets
# Encoding speed presets (faster = larger file) ffmpeg -i input.mp4 -c:v libx264 -preset fast output.mp4 # Options: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow # Quality presets ffmpeg -i input.mp4 -c:v libx264 -preset slow -crf 18 output.mp4
Batch Conversion
# Convert all MKV to MP4 for f in *.mkv; do ffmpeg -i "$f" -c copy "${f%.mkv}.mp4" done # Convert with re-encoding for f in *.avi; do ffmpeg -i "$f" -c:v libx264 -c:a aac "${f%.avi}.mp4" done
Common Codecs
Video
- H.264 (libx264) - Universal compatibility
- H.265 (libx265) - Better compression
- VP9 (libvpx-vp9) - Open standard
- AV1 (libaom-av1) - Modern codec
Audio
- AAC (aac) - Universal
- MP3 (libmp3lame) - Legacy
- Opus (libopus) - Best quality/bitrate
- FLAC (flac) - Lossless
Notes
- Use
when possible for speed (no re-encoding)-c copy - Re-encoding is slower but allows codec/quality changes
- CRF 18-23 is good quality range for H.264
- Preset affects encoding speed vs file size tradeoff