-
-
Notifications
You must be signed in to change notification settings - Fork 1
Settings Reference
Everything under the Settings menu, plus the file and environment variables behind it.
| Variable | Description | Default |
|---|---|---|
REMUXFORGE_PORT |
WebUI HTTP port | 5000 |
REMUXFORGE_DATA_DIR |
Parent directory for .remux-forge
|
executable directory (/data in the Docker image) |
REMUXFORGE_LOG_FILE |
Write a log file to this path | disabled |
The WebUI also accepts --port <number>, which takes precedence over REMUXFORGE_PORT.
<data dir>/.remux-forge/
├── appsettings.json every setting on this page
├── presets/
│ └── metadata/ metadata presets (*.json)
├── temp/ intermediate files (path overridable)
├── deepanalysis-runs/ configuration, log and result for every Deep analysis run
├── deepanalysis-diagnostics/ only when --deep-analysis-diagnostics is used
└── framesync-diagnostics/ only when --framesync-diagnostics is used
The CLI and the WebUI share this directory, so encoding profiles and audio defaults created in the WebUI are immediately available to the CLI.
Copy .remux-forge to move or back up a complete configuration. It is the only state RemuxForge keeps. Nothing goes to the registry or to system directories.
Only Remux mode shows the full Settings menu. Split and Metadata mode expose Tool paths and nothing else. Since these are global settings, switch to Remux mode to change them.
| Item | Remux | Split | Metadata |
|---|---|---|---|
| Tool paths | ✓ | ✓ | ✓ |
| Audio | ✓ | ||
| Advanced settings | ✓ | ||
| Encoding profiles | ✓ |
Paths to the external executables, plus the temp folder. Auto-detected from PATH at first launch; fill one in only if detection failed or you want to pin a specific build.
| Entry | Config key |
|---|---|
| mkvmerge | Tools.MkvMergePath |
| mkvextract | Tools.MkvExtractPath |
| mkvpropedit | Tools.MkvPropEditPath |
| ffmpeg | Tools.FfmpegPath |
| ffprobe | Tools.FfprobePath |
| mediainfo | Tools.MediaInfoPath |
| Temp folder | Tools.TempFolder |
Status indicators:
| Status | Meaning |
|---|---|
[OK] |
found and executable |
[NOT FOUND] |
not on PATH and no valid explicit path |
[CLI NOT FOUND] |
MediaInfo: the GUI package is installed instead of the CLI package |
[ERROR] |
the path exists but the tool failed to run |
ffmpeg has a [ Download ] button that fetches a build into the data directory and sets both paths. Remux and Split also trigger the same download automatically when ffmpeg is missing. It is disabled on macOS, where ffmpeg must be installed manually. There is no equivalent for MKVToolNix or MediaInfo.
The temp folder defaults to <data dir>/.remux-forge/temp. Point it at a fast disk with plenty of free space if you use Deep analysis or audio processing heavily. Intermediate renders can be large.
Encoder defaults applied whenever an audio format is used. Bitrates are per channel layout, so a 5.1 track and a stereo track in the same run each get an appropriate value.
| Setting | Config key | Range | Default |
|---|---|---|---|
| FLAC compression | Flac.CompressionLevel |
0–12 | 8 |
| Opus mono | Opus.Bitrate.Mono |
64–768 kbps | 128 |
| Opus stereo | Opus.Bitrate.Stereo |
64–768 | 256 |
| Opus 5.1 | Opus.Bitrate.Surround51 |
64–768 | 510 |
| Opus 7.1 | Opus.Bitrate.Surround71 |
64–768 | 768 |
| AAC mono | Aac.Bitrate.Mono |
32–1536 kbps | 128 |
| AAC stereo | Aac.Bitrate.Stereo |
32–1536 | 256 |
| AAC 5.1 | Aac.Bitrate.Surround51 |
32–1536 | 768 |
| AAC 7.1 | Aac.Bitrate.Surround71 |
32–1536 | 1024 |
| AC-3 mono | Ac3.Bitrate.Mono |
fixed set | 192 |
| AC-3 stereo | Ac3.Bitrate.Stereo |
fixed set | 384 |
| AC-3 5.1 | Ac3.Bitrate.Surround51 |
fixed set | 640 |
AC-3 accepts only the bitrates the format defines:
32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256,
320, 384, 448, 512, 576, 640
AC-3 has no 7.1 setting because the format does not support 7.1.
FLAC compression is lossless at every level. Higher levels are slower to encode for a small size gain and decode identically.
Video re-encoding profiles, stored in EncodingProfiles as a list. Selected by name in the Remux configuration, or with -ep <name> on the CLI.
Three software encoders. There is no hardware encoding. GPU support is limited to FFmpeg decoding and, when selected, Vulkan visual analysis.
| Field | Values |
|---|---|
| Preset |
ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo
|
| Tune |
default, film, animation, grain, stillimage, psnr, ssim, zerolatency, fastdecode
|
| Profile |
default, baseline, main, high, high10, high422, high444
|
| Bit depth |
8-bit: yuv420p, 10-bit: yuv420p10le, 8-bit 422: yuv422p, 8-bit 444: yuv444p, 10-bit 422: yuv422p10le, 10-bit 444: yuv444p10le
|
| Rate mode |
crf, bitrate
|
| CRF | 0–51, default 23
|
| Passes | 1 or 2 (bitrate mode only) |
| Field | Values |
|---|---|
| Preset |
ultrafast … placebo (as x264) |
| Tune |
default, psnr, ssim, grain, zerolatency, fastdecode, animation
|
| Profile |
default, main, main10, mainstillpicture, msp, main-intra, main10-intra, main444-8, main444-intra, main444-stillpicture, main422-10, main422-10-intra, main444-10, main444-10-intra, main12, main12-intra, main422-12, main422-12-intra, main444-12, main444-12-intra, main444-16-intra, main444-16-stillpicture
|
| Bit depth | 8/10/12-bit in 420, 422 and 444 variants |
| Rate mode |
crf, bitrate
|
| CRF | 0–51, default 28
|
| Passes | 1 or 2 (bitrate mode only) |
| Field | Values |
|---|---|
| Preset |
0–13 (0 = slowest/best) |
| Tune |
0 - VQ (Psychovisual), 1 - PSNR, 2 - SSIM
|
| Profile | not applicable. The field is hidden |
| Bit depth |
8-bit: yuv420p, 10-bit: yuv420p10le
|
| Rate mode |
crf, qp, bitrate
|
| CRF / QP | 0–63, default 35
|
| Film grain |
0 = off, 1–50, plus an optional Film grain denoise toggle |
| Passes | not applicable |
Extra params appends raw encoder arguments to the command line, for anything the dialog does not cover.
The dialog exposes the execution choices that are safe to change. appsettings.json holds the calibrated matching parameters. Reset Defaults restores only the fields exposed by the dialog.
| Section | Field | Config key | Default |
|---|---|---|---|
| Analysis | Hardware Acceleration | Advanced.Ffmpeg.HardwareAcceleration |
false |
| Analysis | Vision backend | Advanced.VisionBackend |
cpu |
Hardware Acceleration probes FFmpeg and stores the explicit method selected by the user. When enabled, analysis decodes use that method; a supported extraction path can retry in software after a hardware failure.
Vision backend selects CPU or RemuxForge.Vulkan for visual computation. It covers the shared SIFT/RANSAC geometry bootstrap, Deep-analysis dHash generation and grid scans, and Speed-correction matching. Frame-sync uses the selected backend for geometry but deliberately keeps its short temporal dHash windows on CPU. Selecting Vulkan immediately probes the runtime, device and SIFT compute pipeline; a failed probe reports the reason and restores CPU. Under Docker the device also has to be passed through. Neither backend nor FFmpeg setting is changed automatically when an analysis starts. See Docker.
The remaining fields are matching thresholds, tuned against the analysis as a whole. Changing them alters what the matcher accepts as a valid result, and a weakened threshold yields an offset that looks as confident as a correct one. They remain available in
appsettings.jsonfor controlled diagnostics, not in the dialog. If a sync problem is being investigated, Troubleshooting lists the remedies that do not involve them.
The Advanced section of appsettings.json contains considerably more than the dialog. Editing it is unsupported but sometimes useful; stop the application first, since settings are written back on save.
| Group | Contains |
|---|---|
VideoSync |
frame dimensions, number of checkpoints and source/language checkpoint durations |
SpeedCorrection |
3 keys defining the source and language visual-validation windows used by manual speed correction |
FrameSync |
minimum video duration, initial source/language window, minimum valid checkpoints and final confidence |
DeepAnalysis |
frame-extraction timeout (SceneExtractTimeoutMs) |
SubtitleEdit |
ffmpeg timeout for subtitle rewriting |
Ffmpeg |
HardwareAcceleration, HardwareAccelerationMethod, FrameExtractionTimeoutMs
|
The real file is plain JSON without comments. Missing keys are filled with defaults on load, so an older file still works after an upgrade.
| Setting | Values |
|---|---|
Ui.Theme |
default, dark, humanistic, humanistic-dark, material, material-dark, software, software-dark, standard, standard-dark
|
Ui.Language |
en, it
|
Ui.LastMode |
remux, split, metadata, restored on the next launch |
All accepted themes are available from the Theme menu and use Radzen's bundled offline assets.
The language setting applies to the CLI too, since both read the same resources. --lang overrides it for a single CLI run.
# back up
cp -r /path/to/.remux-forge /backup/remux-forge-$(date +%F)
# move to another machine
rsync -a /path/to/.remux-forge/ newhost:/path/to/.remux-forge/Two things to fix after a move: Tools.* paths, which are machine-specific, and Tools.TempFolder. Everything else, presets, encoding profiles, audio defaults, advanced tuning, carries over unchanged.
- Installation: first-run tool verification
- Remux Audio and Video: what the audio and encoding settings actually do
- Remux Synchronization: when to touch the advanced settings
{ "Tools": { "MkvMergePath": "/opt/homebrew/bin/mkvmerge", "MkvExtractPath": "/opt/homebrew/bin/mkvextract", "MkvPropEditPath": "/opt/homebrew/bin/mkvpropedit", "FfmpegPath": "/opt/homebrew/bin/ffmpeg", "FfprobePath": "/opt/homebrew/bin/ffprobe", "MediaInfoPath": "/usr/local/bin/mediainfo", "TempFolder": "<data dir>/.remux-forge/temp" }, "Flac": { "CompressionLevel": 8 }, // 0-12 "Opus": { "Bitrate": { "Mono": 128, "Stereo": 256, "Surround51": 510, "Surround71": 768 } }, "Aac": { "Bitrate": { "Mono": 128, "Stereo": 256, "Surround51": 768, "Surround71": 1024 } }, "Ac3": { "Bitrate": { "Mono": 192, "Stereo": 384, "Surround51": 640 } }, // no 7.1 in AC-3 "Ui": { "Theme": "material-dark", // see the theme list below "LastMode": "remux", // restored on next launch "Language": "en" // en | it }, "EncodingProfiles": [ { "Name": "hevc-slow-crf22", "Codec": "libx265", "Preset": "slow", "Tune": "animation", "Profile": "main10", "BitDepth": "10-bit: yuv420p10le", "RateMode": "crf", "Crf": 22, "Passes": 1, "ExtraParams": "" } ], "Advanced": { "VisionBackend": "cpu", "VideoSync": { "FrameWidth": 320, "FrameHeight": 240, "NumCheckPoints": 9, /* … */ }, "SpeedCorrection": { "SourceStartSec": 0, "SourceDurationSec": 300, "LangDurationSec": 375 }, "FrameSync": { "SourceDurationSec": 120, "LangDurationSec": 180, "MinValidPoints": 5, "FinalMinConfidence": 0.35 }, "DeepAnalysis": { "SceneExtractTimeoutMs": 600000 }, "SubtitleEdit": { "FfmpegTimeoutMs": 300000 }, "Ffmpeg": { "HardwareAcceleration": true, "HardwareAccelerationMethod": "videotoolbox", "FrameExtractionTimeoutMs": 120000 } } }