audio
Installation
SKILL.md
Audio
Audio processing with ffmpeg. Use this skill when you need to change audio — not just read metadata (use inspect for that).
When to use
- This skill — extract audio from video, convert formats, trim/concat timeline edits, loudness normalize, fade, resample, find silence.
inspect— read-only metadata before editing (duration, codecs, sample rate). Always probe first when unsure about input format.video-transformation— mux normalized or extracted audio back onto video (replace_audio.pyand similar ops).- Raw ffmpeg — fine for one-off filter chains, but these scripts return consistent JSON and auto-generate output paths.
Gotchas
- Trim with
-c copy—trim.pystream-copies for speed. Works for WAV and many containers; can fail or produce glitches on MP3/AAC with frame boundaries. Re-encode with ffmpeg manually if copy fails. - Concat requires matching codecs —
concat.pyuses the concat demuxer with-c copy. All inputs must share codec, sample rate, and channel layout. Convert/resample first if needed. - Normalize outputs WAV —
loudnormwrites PCM WAV. Mux back to video withvideo-transformationreplace_audio.py, or convert withconvert.py. - Fade is fixed 1 s in —
fade.pyappliesafade=t=in:st=0:d=1only. Custom fade curves need raw ffmpeg. - Silence threshold is fixed —
silence_detect.pyusesnoise=-30dB:d=0.5. Pure tones (e.g. test fixtures) may report no silence; real speech/podcast material works best. - Extract vs video extract —
extract.pystrips video (-vn) to WAV. For video-specific workflows, checkvideo-transformationextract_audio.pytoo.