Studio Preflight
Check podcast recordings right after the shoot, while a re-record is still possible.
Working Available to download. Below, a sample run from the terminal.
The problem
Recording sessions fail in the edit for reasons you could see right away: the wrong sample rate, a clipping mic, a track that recorded silence.
What I built
A command line tool that checks every file after the shoot, then copies them with clear names and checks each copy.
- Sample rate, clipping and silent tracks
- Checked copies with clear names
- Never changes the source files
Features and limits
Built and tested
- check: sample rate (48 kHz), bit depth (24-bit preferred), clipping (peaks above -0.5 dBFS), silent tracks, camera and audio lengths within 2 seconds, one frame rate.
- ingest: copies into media/ with session names (cam1, audio1, audio2), verifies each copy by SHA-256, writes ingest_report.json.
- Dry run by default; sources are never changed; nothing is overwritten; re-running is safe.
- Several camera files are reported as a multi-camera session, clearly labeled as a proposed, untested mode.
Limits
- The single-camera path is the tested one; multi-camera sync is not checked.
- Tested on media generated with ffmpeg on Linux; not yet on real camera cards, macOS or Windows.
- Level checks read the first audio stream of each file; multi-channel recorders with one file per channel are fine, polyphonic files are checked on channel one only.
Planned
Add multi-camera presets only after testing.
How to use
- Download and unzip.
- python3 studio_preflight.py check /path/to/CARD right after the shoot.
- Fix or re-record what fails, then ingest with --session and --out, first without --apply to see the plan.
- Keep ingest_report.json with the project.
How it works
- ffprobe for stream facts; ffmpeg's volumedetect for peak and mean levels.
- Copies are hashed with SHA-256 against their sources.
- Python standard library plus ffmpeg; no network.
Tested versions & limits
- Pass Package: clean single-camera session passes; verified ingest; sources unchanged; safe re-run Linux, Python 3.13, ffmpeg 7
- Pass Package: catches 44.1 kHz, 16-bit, clipping, silence and a late start Linux, Python 3.13, ffmpeg 7
- Pass Package: dry run, multi-camera labeled untested, output inside the card refused Linux, Python 3.13, ffmpeg 7
- Pass Release: tests re-run from the unzipped archive, public scan clean Linux
Last verified 2026-10-31.
Single-camera path tested on generated media on Linux. Multi-camera is a proposed mode, not tested. Not yet tested on real cards, macOS or Windows.
Details
- Input
- Fictional podcast shoot
- Output
- Capture checklist, file map and ingest report
- Runs in
- Command line tool for macOS, Linux or Windows with Python 3.9+ and ffmpeg (tested on Linux).
- Source
- Original, rebuilt from scratch