Hz Player for Android
A full-featured Android video & audio player inspired by VLC — streams from local storage, SMB, FTP, SFTP, and WebDAV with native subtitle rendering and archive playback.
View Source on GitHubWhat It Does
Network Streaming
Plays media directly from SMB, FTP, SFTP, and WebDAV servers with custom Media3 DataSources, connection pooling, and mDNS server discovery.
Native Subtitle Engine
ASS/SSA animated subtitles rendered by native libass via JNI, plus SRT/VTT support, external subtitle files, delay adjustment, and SubDL online search.
Archive Playback
Opens media inside zip, 7z, rar, tar, iso, and cab archives without extraction, powered by libarchive cross-compiled with the Android NDK.
In-App Browser
Full WebView browser with native Rust-backed ad blocking, tab management, and a media sniffer that detects and downloads streams from pages.
Secure Credentials
Server passwords are encrypted with AES-256-GCM keys stored in the AndroidKeyStore — nothing sensitive ever touches plain storage.
Player Power Features
Gesture controls, playback speed, HDR surface selection, track selection, playlists, background audio, resume positions, and a stats-for-nerds overlay.
Under the Hood
Engine-Agnostic Playback
All playback flows through an IPlayerEngine abstraction — no Media3 type ever crosses the boundary. Swapping in a new backend like mpv or libVLC is a single Hilt multibinding away.
Clean MVVM Layers
Stateless Compose screens receive immutable UiState from Hilt ViewModels, which talk to 11 repository interfaces backed by Room, DataStore, and per-protocol network clients.