FilmStrip
Extract film audio for listening. Drop a movie file — FilmStrip scans every audio track, auto-selects English, and exports it as WAV or M4A.
Getting Started
System Requirements
- macOS 14.0 (Sonoma) or later
- Apple Silicon or Intel Mac
- ffprobe and ffmpeg are bundled with the app; no separate install needed
- Free
Installation
- Download the DMG from the link above
- Open the DMG and drag FilmStrip to your Applications folder
Quick Start
- Drop a video file onto the FilmStrip window
- FilmStrip scans all audio tracks and displays them in the queue
- English tracks are auto-selected; if none are found, all tracks are selected
- Adjust settings as needed, then click Process
- Output is saved to the Desktop (or your configured output folder)
The Interface
Queue
The main area shows the queue of files you've added. Each row shows the file's name, current status, and track information. For files with a single audio track, a compact summary (language · codec · channels) appears as a subtitle. For files with multiple tracks, each track appears as a clickable chip — click a chip to toggle it on or off. English tracks are selected automatically on load; if no language metadata is found, all tracks are selected and an info badge appears on the row.
Settings Panel
All export and processing options live in the settings panel. Toggle it open or closed with the sidebar icon in the toolbar. Settings are locked during processing. Output format, bitrate, and output folder are saved between sessions; audio processing settings (Dialog Guard, High Pass Filter, Level Riding, Loudness Normalization) always start at their defaults on launch.
Toolbar
- Process — export all selected tracks with the current settings. Disabled until files are loaded and ready.
- Clear — remove all files from the queue
- Sidebar icon — toggle the settings panel open or closed
- ? icon — open the help sheet
Output Format
FilmStrip can export to WAV, M4A, or both simultaneously.
| Setting | Options | Description |
|---|---|---|
| Format | WAV · M4A · Both | WAV is uncompressed 24-bit PCM — full quality, large files (roughly 15 MB/min). M4A is AAC-encoded at a selectable bitrate — smaller files with imperceptible quality loss at 192 kbps or higher. |
| Bitrate | 128 · 192 · 256 kbps | M4A only. 256 kbps is transparent on virtually all program material. 128 kbps is adequate for casual listening and produces files roughly half the size of 256 kbps. Grayed out when Format is WAV. |
Both formats are exported at 44.1 kHz stereo. WAV files use 24-bit depth, which preserves full resolution through any processing applied before export.
Dialog Guard
Dialog Guard normalizes the center channel independently before the stereo downmix. It's designed to rescue quiet or inconsistently-mixed dialogue — particularly in older films where the center channel was mixed conservatively relative to the action and effects tracks.
| Setting | Default | Description |
|---|---|---|
| Dialog Guard | On | When enabled on a 5.1 or 7.1 source, splits out the center channel (FC), applies dynamic normalization, and reassembles the multichannel signal before the stereo downmix. Has no effect on stereo or mono source tracks — the setting is silently skipped with no impact on processing time. |
| Dialog level | Normal | Three-step picker (Normal / Boost / Strong) that shifts the center-vs-surround balance in the downmix. Boost places dialog ~3 dB above the surrounds; Strong, ~8 dB. Implemented by attenuating the surround coefficients in the pan filter rather than boosting FC, so the brick-wall limiter is not triggered. Loudness normalization restores absolute level. No effect on stereo or mono sources. |
Dialog Guard uses a faster-reacting window (about 0.5 seconds) than Level Riding, which lets it catch brief quiet passages — a whispered line in an otherwise loud scene — that a wider window would smooth over. The Dialog level picker is independent of the Dialog Guard toggle: it can lift dialog presence even when Dialog Guard is off. See Dialog Guard in the Theory of Operation for the full technical explanation.
High Pass Filter
The High Pass Filter removes low-frequency content below 80 Hz — subwoofer rumble, LFE fold-in from the stereo downmix, and subsonic hum that would otherwise consume headroom and muddy the output. It runs in the same extraction pass as Dialog Guard and Level Riding, before the stereo downmix.
| Setting | Default | Description |
|---|---|---|
| High Pass Filter | On | Two cascaded 2-pole Butterworth biquad filters at 80 Hz, resulting in a 24 dB/oct rolloff. Removes low-frequency rumble and LFE fold-in without affecting music, sound effects, or dialogue. Safe to leave on for virtually all program material — most meaningful audio content starts well above 80 Hz. |
Level Riding
Level Riding uses FFmpeg's dynaudnorm filter to reduce the dynamic range between loud action sequences and quiet dialogue scenes. Higher aggressiveness settings both pull down peaks and boost quiet passages, narrowing the perceived gap between the loudest and quietest moments in a film.
| Setting | Range / Default | Description |
|---|---|---|
| Level Riding | On / Off · default On | Enables dynamic leveling in the extraction pass, after Dialog Guard and before the stereo downmix. |
| Aggressiveness | 1–10 · default 7 | Controls how aggressively the filter attenuates peaks and boosts quiet passages. At 1, only the sharpest loud peaks are gently reduced. At 10, up to +20 dB of upward gain is applied to quiet frames. Level 7 is a good general-purpose setting for headphone listening. Grayed out when Level Riding is off. |
Aggressiveness Quick Reference
| Level | Max boost | Character |
|---|---|---|
| 1–2 | +6–9 dB | Barely perceptible. Takes the sharpest edges off very loud peaks. |
| 3–4 | +12–13 dB | Light leveling. Noticeable on wide-range content. |
| 5–6 | +15–16 dB | Medium. Clear leveling; action-dialogue gap starts to close. |
| 7 | +17 dB | Default. Heavy leveling; dynamic range significantly compressed. |
| 8–10 | +18–20 dB | Aggressive. Quiet scenes boosted substantially; ambient noise floor rises. |
See Level Riding: Dynamic Audio Normalizer in the Theory of Operation for a complete parameter table and technical explanation.
Loudness Normalization
Loudness normalization uses a two-pass EBU R128 process to bring the integrated loudness of the output to a target that matches your listening context. Film audio is typically mixed at −27 to −31 LUFS for a calibrated theatrical space; streaming music is normalized to −14 to −16 LUFS. Without normalization, film audio will sound significantly quieter than other content on your device.
| Setting | Range / Default | Description |
|---|---|---|
| Loudness Norm | On / Off · default On | Enables two-pass EBU R128 loudness normalization. Adds processing time proportional to the file's duration — a two-hour film takes roughly twice as long when normalization is on. Off = level riding and peak limiting only. |
| Target | −23 to −14 LUFS · default −18 | Integrated loudness target. See table below. Grayed out when Loudness Norm is off. |
Choosing a Target
| Target | Context |
|---|---|
| −23 LUFS | EBU R128 broadcast standard. Quieter than streaming music; appropriate for home theater context or content alongside other film audio. |
| −18 LUFS | Default. Louder than broadcast, quieter than streaming music. Preserves more dynamic headroom than streaming-music targets while remaining comfortable alongside other content. |
| −16 LUFS | Matches Apple Music and Tidal normalization. Dialogue feels natural in a mixed playlist context on most devices. |
| −14 LUFS | Matches Spotify's normalization target. Best if you listen to music on Spotify with normalization enabled. |
See Loudness Normalization: EBU R128 in the Theory of Operation for technical detail on the loudness war, K-weighting, and the two-pass process.
Output Folder
| Setting | Default | Description |
|---|---|---|
| Output Folder | Desktop | Where exported files are written. Set a custom path to collect all exports in one place — useful if you process frequently and don't want files accumulating on the Desktop. |
Processing Pipeline
Each exported track passes through the following pipeline. Optional stages are skipped if their setting is disabled. The source file is never modified.
-
Dialog Guard Optional — 5.1 / 7.1 only For 5.1 and 7.1 source tracks, splits the center channel (FC), applies fast-window dynamic normalization (
dynaudnorm p=0.88:m=5:g=15at Normal;mrises to 7 / 9 for Boost / Strong), and reassembles all channels. Silently skipped for stereo and mono sources. Runs in the same ffmpeg pass as extraction with no extra time cost. -
High Pass Filter Optional Two cascaded 2-pole Butterworth high-pass filters at 80 Hz (
highpass=f=80,highpass=f=80), providing a 24 dB/oct rolloff. Removes subwoofer rumble and LFE content that would otherwise fold into the stereo downmix and consume headroom. Runs in the same extraction pass as Dialog Guard and Level Riding. -
Decode, Resample, Downmix, Peak Limit ffmpeg decodes the selected audio stream, downmixes to stereo via an explicit
panfilter (FC at unity, surround coefficients scaled per the Dialog level setting), resamples to 44.1 kHz, and applies a brick-wall limiter (alimiter=limit=0.99:attack=5:release=50) to catch inter-sample peaks from channel summation. Output: 24-bit PCM WAV at 44.1 kHz. Stereo sources pass through unchanged except for resampling. -
Level Riding Optional Dynamic normalization via
dynaudnorm. Runs within the same extraction pass as step 2, after Dialog Guard. Gaussian-smoothed gain changes prevent audible pumping. The Aggressiveness setting controls both the peak target and the maximum upward gain. See Theory of Operation for the full parameter table. -
Loudness Analysis Optional First pass of the EBU R128 two-pass process. ffmpeg processes the full WAV from step 2 with the
loudnormfilter in measurement mode, writing output to/dev/null. Captures integrated loudness (LUFS), true peak (dBTP), loudness range (LRA), and threshold. Processing time is proportional to the file's duration. -
Loudness Normalize Optional Second pass. Applies a single static linear gain to bring the integrated loudness to the target LUFS (
linear=true). Preserves the dynamic character of the audio — the output waveform shape is identical to the input, only louder or quieter by a fixed amount. Produces the final WAV. -
M4A Encode Optional If M4A output is selected, encodes the final WAV to AAC at the configured bitrate. Runs as a separate final step after all processing is complete. The WAV is always produced first, even when M4A is the only selected output format.
Supported Formats
Input Containers
Any container format that ffprobe can read will work. Common formats:
| Extension | Description |
|---|---|
| .mkv | Matroska — the standard container for Blu-ray remuxes and rips. Often contains lossless TrueHD or DTS-HD Master Audio. |
| .mp4 | MPEG-4 — common for streaming downloads and digital purchases. Usually contains AAC or E-AC3. |
| .mov | QuickTime Movie — common for files from Apple devices and Final Cut Pro. |
| .avi | Audio Video Interleave — older format, common for DVD rips and archival content. |
| .m4v | iTunes video format. AAC audio. |
Source Audio Codecs
FilmStrip can extract any audio codec that ffmpeg supports. When a file contains multiple tracks, prefer the following order for best results:
| Codec | Notes |
|---|---|
| AAC | Best for M4A export — no transcode within the AAC family. Prefer when available. |
| E-AC3 (Dolby Digital Plus) | High bitrate ceiling, widely available on modern rips. Excellent source quality. |
| TrueHD / DTS-HD MA | Lossless — best possible source quality, common in MKV remuxes from Blu-ray. |
| AC-3 (Dolby Digital) | Older 5.1 format, lower bitrate ceiling. Works well at 448–640 kbps. |
| DTS Core | Common in MKV rips; treated the same as E-AC3. No quality advantage to seeking it out. |
See Choosing a Source Codec in the Theory of Operation for a detailed discussion.