-
-
Notifications
You must be signed in to change notification settings - Fork 1
Development
Building RemuxForge from source. For using it, start at Home.
-
.NET 10 SDK
-
LibMan CLI for the WebUI's client-side libraries:
dotnet tool install -g Microsoft.Web.LibraryManager.Cli
-
The same external tools the application needs at runtime, MKVToolNix, ffmpeg, MediaInfo CLI, if you intend to run or test it.
| Project | Contains |
|---|---|
RemuxForge.Core |
all the logic: analysis, media handling, metadata, splitting, transcoding, configuration and localization. Both front ends depend on it. |
RemuxForge.Cli |
the command-line entry point |
RemuxForge.Web |
the Blazor Server WebUI |
Notable areas of Core:
| Folder | Responsibility |
|---|---|
Analysis/ |
frame-sync, deep analysis, speed correction, diagnostics |
Audio/ |
audio processing and rendering |
Configuration/ |
settings service, validation, codec and language mapping |
Localization/Resources/ |
en.json / it.json, every user-visible string, including the in-app help text |
Media/ |
ffmpeg and mkv tool wrappers |
Metadata/ |
field registry, tag registry, expression engine, pipeline evaluator, preset service |
Models/Config/ |
Options.cs holds the complete CLI parser |
Pipeline/ |
the remux pipeline and file scanner |
Rename/ |
the bulk rename engine |
Splitting/ |
the split pipeline and segment service |
Subtitles/ |
subtitle canvas rewriting |
The WebUI is a single page (Components/Pages/Dashboard.razor) with per-mode orchestrators in Services/ and dialogs in Components/Shared/.
# CLI
dotnet build RemuxForge.Cli -c Release
# WebUI (restore client libraries first)
cd RemuxForge.Web && libman restore && cd ..
dotnet build RemuxForge.Web -c Release
# Docker image
docker build -t remuxforge .CLI:
dotnet publish RemuxForge.Cli -c Release -r win-x64 --self-contained true
dotnet publish RemuxForge.Cli -c Release -r linux-x64 --self-contained true
dotnet publish RemuxForge.Cli -c Release -r linux-arm64 --self-contained true
dotnet publish RemuxForge.Cli -c Release -r osx-x64 --self-contained true
dotnet publish RemuxForge.Cli -c Release -r osx-arm64 --self-contained trueWebUI:
dotnet publish RemuxForge.Web -c Release -r win-x64 --self-contained true \
-p:PublishSingleFile=true -p:PublishTrimmed=false -p:EnableCompressionInSingleFile=trueRepeat for linux-x64, linux-arm64, osx-x64, osx-arm64.
release.sh in the repository root wraps the full release build.
Every user-visible string lives in RemuxForge.Core/Localization/Resources/en.json and it.json, keyed by dotted paths (web.config.help.remux.speed.text, metadata.field.audio_title, …). Values may be a string or an array of lines for multi-line help.
Both files must have the same keys. Adding UI text means adding it to both. The web.config.help.* keys are the in-app help pane, which is the authoritative description of every configuration field.
- Open an issue for bugs and behaviour changes before a large pull request.
- Include reproducible commands, platform, external tool versions, and the relevant MediaInfo or ffmpeg output.
- Keep pull requests focused on one change.
- Do not include copyrighted media samples.
- New user-facing strings go in both
en.jsonandit.json.
LLM-based assistance has been used during development for README and wiki documentation, WebUI design refinement, and broad refactor support where useful.