ffmpeg audio mixing patterns for video production. Use when mixing narration with music, implementing ducking, or balancing volume levels for demos
View on GitHubFebruary 4, 2026
Select agents to install to:
npx add-skill https://github.com/yonatangross/skillforge-claude-plugin/blob/main/plugins/ork/skills/audio-mixing-patterns/SKILL.md -a claude-code --skill audio-mixing-patternsInstallation paths:
.claude/skills/audio-mixing-patterns/# Audio Mixing Patterns
Comprehensive guide to audio mixing for video production using ffmpeg. Covers narration/music balancing, automatic ducking, timing control, and loudness normalization.
## Core Principle
**Quality Audio = Clear Narration + Supportive Music + Appropriate Levels**
The human voice occupies 85-255 Hz (fundamental) with harmonics up to 8kHz. Music must support, not compete.
## Volume Balancing Formula
```
Standard Video Mix Ratios:
--------------------------
Narration: 100% (reference level)
Music: 15-20% of narration level
SFX: 70-100% of narration level (contextual)
dB Relationships:
-----------------
Narration: -14 dB LUFS (dialogue standard)
Music bed: -30 to -35 dB LUFS (under narration)
Music only: -16 dB LUFS (no narration sections)
SFX: -18 to -20 dB LUFS
```
### Volume Multiplier Quick Reference
| Ratio | Multiplier | Use Case |
|-------|------------|----------|
| 100% | 1.0 | Full volume (narration) |
| 70% | 0.7 | Prominent SFX |
| 50% | 0.5 | Equal blend |
| 30% | 0.3 | Noticeable background |
| 20% | 0.2 | Subtle bed (recommended music) |
| 15% | 0.15 | Minimal presence |
| 10% | 0.1 | Barely audible |
## Basic ffmpeg Mixing Commands
### Two-Track Mix (Narration + Music)
```bash
# Basic mix: narration at full, music at 15%
ffmpeg -i narration.mp3 -i music.mp3 \
-filter_complex "[0:a]volume=1.0[narr];[1:a]volume=0.15[music];[narr][music]amix=inputs=2:duration=first" \
-c:a aac -b:a 192k output.m4a
```
### Three-Track Mix (Narration + Music + SFX)
```bash
ffmpeg -i narration.mp3 -i music.mp3 -i sfx.mp3 \
-filter_complex "\
[0:a]volume=1.0[narr];\
[1:a]volume=0.15[music];\
[2:a]volume=0.7[sfx];\
[narr][music][sfx]amix=inputs=3:duration=first:weights='3 1 2'" \
-c:a aac -b:a 192k output.m4a
```
## Timing with adelay Filter
The `adelay` filter positions audio at precise timestamps.
### Syntax
```bash
adelay=delays[|delays...][,all=1]
# delays: milliseconds or samples (with 'S'