Cross-platform YouTube search/downloader/player desktop app built with Avalonia UI and .NET 8, targeting Windows, Linux, and macOS.
- Required SDK: .NET 8 SDK for building/running from source.
- Supported OS targets: Windows, Linux, macOS.
- First run requires network access to auto-download
yt-dlpand FFmpeg tools. - Optional packaging dependency:
appimagetoolfor Linux AppImage creation.
- Search YouTube using
yt-dlpJSON output. - Play selected video/audio with the internally managed
ffplaybinary (downloaded with FFmpeg), with browser fallback still available. - Download audio (
mp3) and video (mp4) throughyt-dlp. - Light/Dark theme toggle.
- Settings persisted in the user-local folder:
- Windows:
%LOCALAPPDATA%/ZV-Tube/settings.json - Linux/macOS: local application data location via .NET
LocalApplicationData.
- Windows:
yt-dlpbinary is auto-downloaded per platform on first use and cached in the app-localtoolsfolder.ffmpegis also auto-downloaded, cached locally, and passed toyt-dlpvia--ffmpeg-location(no PATH dependency).- Localization-ready string service abstraction.
# Restore/build (optional)
dotnet build "ZV Player.csproj" -c Debug
# Run
dotnet run --project "ZV Player.csproj"Note: The first launch may take longer while the app downloads required
yt-dlp/FFmpeg tools.
bash scripts/build-appimage.sh- Host shell:
bash(Linux) - Outputs:
- Publish directory:
artifacts/linux-x64 - AppImage (when available):
artifacts/ZV-Tube-x86_64.AppImage
- Publish directory:
pwsh -File scripts/build-windows.ps1- Host shell:
pwsh(Windows) - Outputs:
- Publish directory:
artifacts/windows-x64
- Publish directory:
If you’d like to support development of ZV Tube, please use the Funding button on this repository and consider donating.
