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#, no runtime dependency on dvdauthor
- 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, growisofs on Linux, with ImgBurn as an opt-in fallback
- Build-only mode — Author a VIDEO_TS folder and ISO without burning, then test with VLC
- .NET 10 SDK
- ffmpeg — video transcoding and menu background encoding
- yt-dlp — YouTube downloading
Optional:
- VLC — test playback via
dvd:///protocol - dvdauthor — external authoring fallback for A/B validation
- ImgBurn — Windows burn fallback (opt-in via
TB_ENABLE_IMGBURN_FALLBACK=1)
# 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_TS structure, and creates an ISO.
- Burn — Write to DVD-R, or use build-only mode and test with VLC.
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)
tests/
TubeBurn.Tests/ xUnit integration and unit tests
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.
