Skip to content

Settings Reference

simonefil edited this page Aug 28, 2026 · 6 revisions

Settings Reference

Everything under the Settings menu, plus the file and environment variables behind it.

Environment variables

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.

The data directory

<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.

Where the Settings menu is available

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

Tool paths

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.

Audio settings

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.

Encoding profiles

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.

libx264

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)

libx265

Field Values
Preset ultrafastplacebo (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)

libsvtav1

Field Values
Preset 013 (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.

Advanced settings

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.

What the dialog shows

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.json for controlled diagnostics, not in the dialog. If a sync problem is being investigated, Troubleshooting lists the remedies that do not involve them.

What only the JSON has

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

Annotated appsettings.json

{
  "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 }
  }
}

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.

UI settings

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.

Backing up and moving a configuration

# 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.

Next

Clone this wiki locally