Repository navigation
Configuration
Project-wide settings live in config.txt as KEY=value lines. Blank lines and # comments are ignored, and unknown keys are skipped rather than treated as errors.
Settings are resolved in this order, each overriding the one before:
- Built-in defaults
- The selected profile
config.txt- Environment variables of the same name
- Command-line options
Invalid values are rejected at startup with a message naming the key, so a bad setting fails before any media is touched.
Built-in profiles: youtube_master (default), youtube_short, archive, fast_preview.
-
PROFILE=youtube_masterinconfig.txtsets the default profile - Override with
--profile NAME
- WAV:
WAV_SAMPLE_RATE=96000,WAV_CODEC=pcm_s24le,WAV_CHANNELS=2,WAV_WRITE_BEXT=1 - MP3:
MP3_SAMPLE_RATE=48000,MP3_BITRATE=320k,MP3_CHANNELS=2,MP3_MIN_BITRATE_BPS=300000 - FLAC:
FLAC_SAMPLE_RATE=48000,FLAC_CHANNELS=2,FLAC_COMPRESSION_LEVEL=12 - M4A: ALAC lossless (24-bit, 48 kHz, stereo),
M4A_SAMPLE_RATE=48000,M4A_CHANNELS=2
AUDIO_QC_TARGET_LUFS=-12, AUDIO_QC_LUFS_TOLERANCE=8, AUDIO_QC_MAX_TRUE_PEAK_DBTP=-1, AUDIO_QC_MAX_LOUDNESS_RANGE=20, AUDIO_QC_MAX_DC_OFFSET=0.02, AUDIO_QC_MAX_STEREO_IMBALANCE_DB=2, AUDIO_QC_MAX_CLIPPED_SAMPLES=0, AUDIO_QC_MINIMUM_ANALYSIS_SECONDS=3, plus SHORT_AUDIO_QC_* equivalents for short-form deliverables.
Parameters for the explicit -master command (never applied automatically): MASTERING_TARGET_LUFS=-12, MASTERING_MAX_TRUE_PEAK_DBTP=-1, MASTERING_MAX_LOUDNESS_RANGE=20.
VIDEO_MP4_ENCODER=hevc_videotoolbox with VIDEO_MP4_ENCODER_FALLBACKS=libx265; 7680x4320, 2 fps input cadence, yuv420p, hvc1 tag, bt709 color metadata, TV range; VideoToolbox quality 70, software preset slow at CRF 18; ALAC audio.
SHORT_MP4_CLIP_SECONDS=58 (the effective cap is min(SHORT_MP4_CLIP_SECONDS, 58) s; a full-length _FullSong variant renders when the source audio is longer), 4320x7680 portrait, SHORT_MP4_VIDEO_CODEC=libx264 with h264_videotoolbox fallback, CRF 18 / VT quality 60, yuv420p, ALAC audio.
8K/4K dimensions (7680x4320 / 3840x2160), 3K/2K square sizes (3000/2048), Lanczos filter, sharpness 1.2 (overridable via --sharpness), sRGB output colorspace, JPEG quality/sampling settings, and byte targets for sized JPG exports (IMAGE_3K_JPG_1MB_TARGET_BYTES, IMAGE_8K_JPG_20MB_TARGET_BYTES, etc.).
ALBUM_SILENCE_SECS=2, WAV_FADE_DUR=10.
Say you want quieter deliveries than the default −12 LUFS, a sharper 8K upscale, and a slightly
smaller main video — without typing options on every run. Edit config.txt:
# Delivery QC: −16 LUFS with a tighter tolerance than the default 8 LU
AUDIO_QC_TARGET_LUFS=-16
AUDIO_QC_LUFS_TOLERANCE=4
# Portrait deliverables are judged against their own keys
SHORT_AUDIO_QC_TARGET_LUFS=-16
SHORT_AUDIO_QC_LUFS_TOLERANCE=4
# Sharper 8K upscale (default 1.2)
IMAGE_AIPIX_SHARPNESS=1.4
# Smaller main video (default CRF 18; higher is smaller)
VIDEO_MP4_SOFTWARE_CRF=20Validate it before you convert anything. -doctor reads every key and names the one that is wrong:
./converter -doctorThen run as usual — the command line does not change:
./converter -fullFor a one-off, leave the project's config.txt alone and point a single run somewhere else, or pick
a built-in profile:
./converter -full --config ~/profiles/quiet.txt
./converter -full --profile fast_previewThe full list of shipped keys, with their defaults and comments, is the
config.txt in the repository.