* feat: modernize to .NET 8, split into Core/Cli/Gui projects Core: shared converter library (cross-platform) Cli: console app with CLI args (cross-platform) Gui: WinForms app (Windows only, uses Core library) - Split into 3 projects sharing ConvertSRTto3DASS.Core - Rewrite SrtConverter with clean public API - Add CLI entry point with stdlib argument parsing - Redesign GUI with GroupBox layout, flat buttons, modern fonts - Update README with publish commands * feat: add drag-and-drop to GUI * refactor: rename GUI controls to proper PascalCase identifiers --------- Co-authored-by: imrayya <imrayya@users.noreply.github.com>
3.8 KiB
SRT to 3D Subtitles
Convert standard .srt subtitles into .ass format, offset so they display correctly in 3D video playback.
The Problem
When watching 3D movies (Side-by-Side, Over-Under, Anaglyph), centered subtitles get split between the left and right eye views, making them disorienting to read. This tool converts standard .srt subtitles into a 3D-compatible .ass format that keeps each eye's subtitles in the correct position.
Features
- SBS (Side-by-Side) — subtitles split left/right for each eye
- OU (Over-Under) — subtitles split top/bottom for each eye
- Anaglyph (Red/Green) — subtitles offset with red/green color channels
- CLI — full command-line interface with configurable options
- GUI — lightweight Windows interface for easier mode selection
- Formatting support — converts HTML tags (
<b>,<i>,<u>,<font color>) to ASS format codes - Resolution scaling — adjusts subtitle positioning based on target resolution
Usage
The application runs in two modes — GUI (no arguments) and CLI (with arguments).
GUI
- Launch
ConvertSRTto3DASS.exe(or the Linux/macOS binary) - Select your
.srtinput file - Choose your 3D mode (SBS, OU, or Anaglyph)
- Adjust settings as needed
- Click Convert
Command Line
Pass any argument to trigger CLI mode:
ConvertSRTto3DASS.exe input.srt [options]
Or drag and drop an .srt file onto the executable.
Available options:
--mode sbs|ou|rg 3D mode (default: sbs)
--resx <number> Output width
--resy <number> Output height
--baseresx <number> Scaling reference width (default: 1280)
--baseresy <number> Scaling reference height (default: 720)
--fontsize <number> Font size (default: 16)
--offsetx <number> RG eye separation
--bottomoffset <number> RG bottom offset
--sbssidemargin <number> SBS side margin
--outopmargin <number> OU top subtitle margin
--verticalmargin <number> General vertical margin
--output <path> Output file path
--help, -h, /? Show help
Examples:
ConvertSRTto3DASS.exe movie.srt --mode sbs
ConvertSRTto3DASS.exe movie.srt --mode ou --resx 1920 --resy 1080
ConvertSRTto3DASS.exe movie.srt --mode rg --offsetx 6 --bottomoffset 24
Note: The GUI is experimental. Feedback and bug reports are welcome!
Known Issues
- Plex Transcoder has issues with the converted subtitles. VLC works correctly.
- Subtitle positional data from
.srtfiles is stripped during conversion.
Requirements
- .NET 8 SDK — required to build
- Windows — the GUI runs on Windows
- Linux/macOS — the CLI runs cross-platform
Building
# Build all projects
dotnet build
# Publish CLI (cross-platform)
dotnet publish ConvertSRTto3DASS.Cli -c Release -r linux-x64 --self-contained false -p:PublishSingleFile=true
dotnet publish ConvertSRTto3DASS.Cli -c Release -r osx-x64 --self-contained false -p:PublishSingleFile=true
dotnet publish ConvertSRTto3DASS.Cli -c Release -r win-x64 --self-contained false -p:PublishSingleFile=true
# Publish GUI (Windows only)
dotnet publish ConvertSRTto3DASS.Gui -c Release -r win-x64 --self-contained false -p:PublishSingleFile=true
License
MIT License — Copyright © imrayya 2021-2026
Contributing
Contributions are welcome. Please open an issue or submit a pull request.
Contributors
- imrayya — project owner
- jae0815
- fabio-noga
- kaiju466
Disclaimer
This is a personal hobby project. The codebase is functional but not production-grade — minimal comments, no tests, and some rough edges. Use at your own discretion.