A cross-platform desktop application that downloads YouTube videos, authors a DVD-Video disc with interactive menus, and burns it to DVD-R.
Built with .NET 10, C#, and Avalonia UI.
- YouTube integration — Paste URLs or playlist links; TubeBurn downloads videos, thumbnails, and channel artwork via yt-dlp
- Native DVD authoring — Generates compliant DVD-Video structure (IFO, VOB, menus) entirely in C#. On macOS,
mkisofspackages it into a burnable UDF ISO. - Interactive menus — Two-level menu system: Channel Select → Video Select, with pagination, button highlights, and subpicture overlays
- Hardware-compatible output — Produces DVD-Video discs playable on standalone DVD players, not just software players
- SkiaSharp menu rendering — Channel avatars, video thumbnails, banner backgrounds, configurable fonts
- Smart transcoding — Hardware-accelerated MPEG-2 encoding via ffmpeg with configurable bitrate (2–6 Mbps), parallel workers, and cache-aware re-transcoding
- Disc capacity validation — Pre-build estimates and post-transcode hard gates for DVD-5 (4.37 GB) and DVD-9 (7.95 GB)
- Cross-platform burning — IMAPI2 on Windows and the built-in
drutilutility on macOS. ImgBurn remains an opt-in Windows fallback. - Build-only mode — Author a
VIDEO_TSfolder and ISO without burning, then test with VLC - Web export — Export the DVD menu experience as a self-contained HTML/CSS/JS folder with working YouTube embeds (upload or zip-and-email)
- .NET 10 SDK
- ffmpeg — video transcoding and menu background encoding
- yt-dlp — YouTube downloading
Optional:
- VLC — test playback via
dvd:///protocol - dvdauthor — optional external authoring backend
- ImgBurn — Windows burn fallback (opt-in via
TB_ENABLE_IMGBURN_FALLBACK=1)
Install ffmpeg and yt-dlp, make them available on PATH, or configure their paths in TubeBurn's Tool Paths panel. TubeBurn's Native author backend creates the DVD structure and ISO with Windows IMAPI2FS, and the Native (IMAPI2) burn backend writes it using Windows' built-in disc imaging APIs. No additional authoring or burning utility is required. ImgBurn is an optional fallback, enabled with TB_ENABLE_IMGBURN_FALLBACK=1.
The External author backend is also available when dvdauthor and mkisofs are installed and configured in the Tool Paths panel.
Install the required media tools with Homebrew:
brew install ffmpeg yt-dlp cdrtoolscdrtools provides mkisofs, which TubeBurn uses to create the UDF ISO required for DVD burning. macOS provides /usr/bin/drutil for burning and verification; connect a compatible DVD writer and insert a writable disc. The optional External author backend additionally requires dvdauthor to be installed or configured in the Tool Paths panel.
Both authoring backends work on macOS:
- Native creates TubeBurn's menus and DVD structure, then packages only
VIDEO_TSandAUDIO_TSinto an ISO withmkisofs. - External (dvdauthor) delegates DVD structure creation to
dvdauthor, then packages the same DVD directories withmkisofs.
The Burn Backend is Native (drutil) on macOS. It burns tubeburn.iso at the selected speed, verifies it, and ejects the disc.
# Build
dotnet build
# Run the app
dotnet run --project src/TubeBurn.App
# Run tests
dotnet test tests/TubeBurn.TestsTubeBurn discovers ffmpeg and yt-dlp from your system PATH automatically. You can also configure tool paths manually in the app's Tool Paths panel.
- Add videos — Paste YouTube URLs into the queue. TubeBurn fetches metadata (title, duration, channel, thumbnails) in the background.
- Configure — Choose NTSC/PAL, disc type, video bitrate, and output folder.
- Build — TubeBurn downloads videos, transcodes to DVD-compliant MPEG-2, generates interactive menus with channel/video artwork, authors the full
VIDEO_TSstructure, and creates an ISO. - Burn — Write to DVD-R, or use build-only mode and test with VLC. On macOS, select DVD-9 when the post-transcode size exceeds the 4.37 GB DVD-5 limit.
src/
TubeBurn.App/ Avalonia UI desktop application
TubeBurn.Domain/ Domain models (no external dependencies)
TubeBurn.DvdAuthoring/ Native DVD authoring engine (no external dependencies)
TubeBurn.Infrastructure/ External tool wrappers (ffmpeg, yt-dlp, SkiaSharp, IMAPI2)
TubeBurn.WebExport/ CLI exporter: DVD menu experience → self-contained HTML/CSS/JS folder
tests/
TubeBurn.Tests/ xUnit integration and unit tests
TubeBurn.WebExport.Tests/ xUnit tests for the web exporter
TubeBurn.DesktopUiTests/ FlaUI desktop automation (Windows, opt-in)
reference/
dvdauthor/ Original dvdauthor C source (porting reference)
The Domain and DvdAuthoring projects have zero external NuGet dependencies by design — all external tool interaction lives in Infrastructure.
TubeBurn generates a two-level interactive menu:
- Level 1 — Channel Select (VMGM): One row per YouTube channel with circle avatar and channel name. Skipped automatically for single-channel projects.
- Level 2 — Video Select (VTSM): One row per video with thumbnail and title. Paginated with Next/Prev navigation. Back button returns to Channel Select.
Menus use DVD subpicture overlays for button highlights with full remote control navigation (up/down/enter/back).
# All tests
dotnet test tests/TubeBurn.Tests
# Specific categories
dotnet test tests/TubeBurn.Tests --filter "FullyQualifiedName~DvdMenuSystem"
dotnet test tests/TubeBurn.Tests --filter "FullyQualifiedName~MenuBinary"
# VLC screenshot validation (requires tests/lib/vlc/)
dotnet test tests/TubeBurn.Tests --filter "FullyQualifiedName~VlcDvdnav_multi_channel_shows"TubeBurn was originally built for prison ministry — making it easy to put YouTube content onto DVDs for people without internet access. If you find it useful, consider supporting development:
MIT — free to use, modify, and distribute with attribution.
