You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Feature-rich, Efficient Powerful Android video player based on libmpv. No ads. No trackers. No noise. Just a serious video player with a calmer surface and a sharper edge.
mpvRx pushes the mpv-android experience further with deep customization, thermal-aware performance, and unique quality-of-life features. Here's what sets it apart:
🎨 Theme & Visual System
Feature
Description
25+ Color Themes
Default, Dynamic (Material You), Catppuccin, Nord, Tokyo Night, Rose Pine, Gruvbox, Dracula, and many more
AMOLED Pure Black Mode
Every theme has a dedicated variant with pure black backgrounds
Restores local playback at the receiver's latest position when the Cast session ends
Cast uses Google's Default Media Receiver. The TV/Chromecast must support the media container and codecs; mpv-only formats are not transcoded automatically.
Album View (folder grid) and Tree View (file manager hierarchy)
Folder Pinning
Pin frequently accessed folders to top
Single-Child Auto-Flatten
Folders with one subfolder auto-flatten for faster browsing
Auto-Scroll to Last Played
Opens to the last played video position
Recursive File/Folder Counts
Shows total video count, duration, size computed recursively
"NEW" Badges
Configurable threshold for new video indicators
Grid/List Layout
Per-orientation column count settings
Multi-Protocol Network
Built-in SMB, FTP, and WebDAV clients
Syncplay Rooms
Join a Syncplay server room to synchronize pause, resume, seeking, and playback position with other viewers
Responsive & Dual-Pane Layouts
Automatic grid sizing plus optional folder/settings dual-pane views on tablets
Audio Library Mode
MediaStore and filesystem audio browsing with square artwork, metadata titles, and mixed sibling playlists
Home-First Back Navigation
Main tabs return to Home before Back exits the app; selection, search, and nested screens handle Back first
Swipeable Main Tabs
Swipe between main destinations with a sliding dock highlight; nested category tabs remain selectable by tapping
🎵 Music Library & Audio Player
Feature
Description
Local Music Library
Browse songs, albums, artists, and audio playlists with cover art, search, sorting, and grid/list views
Choose Your Music Source
Switch the Music tab between local storage, Jellyfin, and Navidrome
Library Filters
Exclude selected audio folders and set a minimum track duration
Dedicated Now Playing View
Artwork, track metadata, playback controls, and an up-next queue in a music-focused layout
Lyrics
View local or embedded lyrics, fetch online lyrics from LRCLIB, and switch between available sources
Four Audio Visualizers
Choose Blob, Galaxy, Cuboid, or Particle visualizations, with an optional audio-reactive wavy seekbar
Audio Playlists & Favorites
Create local audio playlists, keep favorite tracks together, and start normal or shuffled playback
Audiobook Library
Open the book icon in Music to import a file, selected files, or one book folder including disc subfolders; M4B is recognized
Book Metadata
Covers, author, narrator, series and edition details from embedded tags or optional metadata.json/OPF sidecars, with editable book details
Audiobook Listening
Book progress/resume through the normal audio player, shared playlist/speed controls, a whole-book seekbar with chapter markers, artwork, visualizers, configured seek gestures, pause rewind and sleep timers
Playback Bookmarks
In video and audio player layouts, tap the bookmark icon to open chapters/bookmarks; long-press it to add a named point. Custom points persist and appear on the existing seekbar, with rename and delete actions
Audiobook Text
Display supplied embedded lyrics or readable local LRC text in the existing lyrics view, without automatic online song matching
🎧 Navidrome / Subsonic Music Streaming
Feature
Description
Subsonic API Integration
Stream music from Navidrome and compatible Subsonic servers using token/salt authentication
Multiple Servers
Save named servers, switch the active server, and manage connections from the app
Flexible Sign-In
Connect with a username and password, or a supported app password/token
Music Discovery
Quick mixes, recently added albums, artist browsing, and artwork-rich album and playlist detail views
Library Search
Search the server for songs, albums, and artists
Server Playlists & Favorites
Browse server playlists and sync favorite songs, albums, and artists; starred songs appear in a Favorites collection
Play All & Shuffle
Start an album or playlist as a playback queue with track titles, artists, and cover art
Display Preferences
Choose grid/list views and track sorting preferences
Requires a music-server account and a reachable server. Available functionality depends on the server's Subsonic API and authentication support.
🍿 Jellyfin Client (Expressive Cinematic UI)
Feature
Description
Native Server Integration
Direct connection with Jellyfin accounts, fast token authentication, and multi-server management
Material 3 Expressive UI
Cinematic interface with artwork-rich browsing, detail sheets, and dedicated music views
Featured Hero Banner
Auto-advancing 16:9 backdrop banner with smooth gradient scrims, ratings, badges, and quick play
Continue Watching & Recently Watched
Horizontal resume carousels with relative timestamps and progress bars tracking playback progress
Library Filter Chips
Instant switching between Movies, TV Shows, Anime, Music, and BoxSets with dynamic item counts
Poster & Backdrop Cards
2:3 vertical posters and 16:9 backdrop cards with community ratings, release years, and unplayed badges
Cinematic Detail Sheet
Full-bleed modal sheet with backdrops, floating posters, storyline synopsis, and season/episode picker
Server-Synced Favorites
Heart action synced bidirectionally with your Jellyfin server account (UserData.IsFavorite)
Direct & Transcoded Streaming
High-performance direct stream playback with audio track and subtitle stream switching
⚡ Unified Media & Torrent Streaming
Feature
Description
Sequential Torrent Engine
Powered by high-speed native Go bridge (anacrolix/torrent) with sequential piece prioritization
Instant Streaming
Stream magnet links, .torrent files, direct web streams (HLS, MP4), and YouTube URLs
Cinematic Discovery
Hero banner carousel, Continue Watching row, and 2:3 vertical poster cards for saved media
Automated TMDB Enrichment
Fetches posters, backdrops, storyline synopsis, release years, and media types via Wyzie/TMDB
Cinematic Media Details
Modal bottom sheet with floating poster, metadata badges, "Watch Now / Resume", and "Copy Magnet"
Filter and sort episodes within multi-file torrents with watched status checkmarks
Unified Media Hub
Save direct streams, YouTube links, and torrents into your collection with one-tap ingestion
🤖 AI Integration
Feature
Description
Provider Support
OpenAI, Anthropic, Groq, OpenRouter, Together, and OpenCode Zen with provider-specific models and API protocols
AI Subtitle Translation
Translate subtitles with custom prompts
AI Subtitle Formatting
Reformat subtitle styling with custom prompts
AI File Renaming
Bulk rename video files with custom rename prompts
Reasoning-Safe Parsing
Removes reasoning blocks and code fences while accepting structured provider responses and citations
Speech Providers
Cloud transcription plus experimental offline Whisper subtitle generation
📜 Scripting & Editor
Feature
Description
Dual Language
Lua (.lua) and JavaScript (.js) script support
Sora Code Editor
Built-in editor with TextMate syntax highlighting
Runtime Script Loading
Enable/disable scripts without restarting
Lua Module Support
Recursive script-modules/ synchronization enables custom scripts to use require() helpers
Config Editor
Built-in editor for mpv.conf and input.conf
⚙️ Utilities
Feature
Description
Stats Page 6
Live system monitor: FPS, dropped frames, codecs, network sparkline, battery
Video Compressor
Built-in FFmpeg-based compression with presets
12 Video Filter Presets
Vivid, Cinematic, Dramatic, Ghibli Style, Neon Pop, Deep Black, and more
Custom Skip Segments
Intro/outro/recap/credits/preview detection from IntroDB, TIDB v3, AniSkip v2, Anime Skip, and SkipDB (requires an IMDb ID). Hybrid uses one validated provider result; duration-aware caches keep release versions separate.
A-B Loop
In-player looping with visual markers on seekbar
Frame Navigation
Frame-by-frame forward/backward with frame number display
Sleep Timer
Built-in with quick presets (15/30/45/60 min)
Adaptive Background Playback
Auto-PiP on Home, auto-resume after screen unlock
Unified Background Playback
One persistent audio/video switch; Back can return to browser lists without stopping the current media
Notification Styles
None, Media, or Progress with Chapters (Android 16+)
Safe Area / Window Offset
Prevents camera notch overlap
Display Cutout Mode
Full-bleed on notch devices
Remember Brightness
Persists brightness level set during playback
Automatic Local Playlists
Discover M3U/M3U8 IPTV playlists in readable internal storage, SD cards, and granted local folders; refresh changed sources without duplicate entries
Playlist Covers
Show the first entry's IPTV logo or cached media thumbnail in list and grid layouts, with an icon fallback when artwork is unavailable
yt-dlp Integration
High-performance streaming support for YouTube, Twitch, Bilibili, and more via a native Python bridge (SDK 29+ bypass)
yt-dlp Quality Controls
Independent codec, resolution, FPS, HDR, container, and audio-bitrate preferences
Dynamic Refresh Rate
Matches supported display refresh rates to the current video's frame rate for smoother motion
Secure Folder
PIN-protected access with optional biometrics, media move/restore actions, and a hideable entry point
Screenshot Templates
Filename placeholders for source name, playback position, and millisecond-accurate timestamps
Local playlist discovery runs when the Playlists page is first loaded and after media-index or storage-mount changes. Pull to refresh to rescan manually, or use Playlist options > Add local playlist folder to grant access to a folder. Android's restrictions on protected directories such as Android/data and Android/obb still apply; discovery cannot bypass them. HLS segment manifests are not imported as channel lists. Removing a discovered playlist does not delete its source file, and that source stays hidden until explicitly imported again. Remote video thumbnails respect the existing network-thumbnail setting.
🔋 Battery Optimization guide for Mpv
First Pro Tip Keep Mpv Conf empty if you are newbie
Use gpu not gpu-next — gpu-next is a Vulkan-based renderer that keeps the GPU awake for no reason when playing normal video. The classic gpu backend is lighter and uses the OpenGL driver stack, which on most Android devices has better power characteristics.
Disable Vulkan entirely. Vulkan is great for Video Playback but also Heavy.
Use the fast mpv profile. It's literally built into mpvRx use that Mpv Profiles and Set it to Default or in mpv.confprofile=fast
Don't use shaders. That Anime4K preset you using that's what's eating your battery. Shaders run on the GPU every single frame. If you're watching 24fps content and you have a shader pipeline running, congratulations — you're doing 24 unnecessary GPU compute passes per second for a Minute amount of visible benefit on a phone screen .
Don't use AI-generated configs. That means you, the person who copied a Reddit config with 200 lines of scale=ewa_lanczossharp and dscale=mitchell and cscale=sinc and a dozen glsl-shaders entries. Most of You have no idea what any of those do. You just made your phone render video like it's preparing for a 4K cinema projection. On a 6-inch screen. Grow some Brains Its your android Phone not some Fuckin.. 4k Television
My POV: mpv's default config with profile=fast and the gpu backend plays video with negligible battery impact — often less than OEM players because mpv doesn't have a billion proprietary DRM modules, analytics SDKs, and ad frameworks burning CPU in the background. The next time your battery drops more than 20-25% watching a 2-hour movie, don't blame mpv. Blame the 14 shaders you blindly copy-pasted.
Just a Pro tip if your battery consumption stays within 200 mAh and belwo 0.9W ( See Page 6 of mpvRx - video player More Settings -> Page6) useage than ur Mpv Conf are Proper for Video watching thats what i have experimented and telling rest all i don't know About in detail technicality's if anyone wanna tell me In depth guide then keep it to yourself i dont wanna listen
Vulkan-free native distribution, packaged as a universal APK
fongmi
Alternate native distribution with MediaCodec/Vulkan support, packaged as a universal APK
APK Variants
Variant
Description
universal
Works on all supported devices
arm64-v8a
Recommended for most current Android devices
armeabi-v7a
For older 32-bit ARM devices
x86
For 32-bit Intel and AMD Android devices
x86_64
For 64-bit Intel and AMD Android devices
Support
If you find mpvRx useful and would like to support its development, consider buying me a coffee! Your support keeps the project alive and helps push new features.
☕ Buy Me a Coffee
UPI
panditritesh2001@okhdfcbank
Scan with any UPI app (Google Pay, PhonePe, Paytm, BHIM)
Release Notes For Maintainers
To cut a signed GitHub release through Actions, configure these repository secrets:
Secret Name
Description
SIGNING_KEYSTORE
Base64-encoded keystore file (.jks or .keystore)
SIGNING_KEY_ALIAS
Key alias inside the keystore
SIGNING_STORE_PASSWORD
Password for the keystore
KEY_PASSWORD
Password for the signing key
Then bump versionCode and versionName in app/build.gradle.kts, create a tag, and push it:
git tag -a v1.3.1 -m "Release version 1.3.1"
git push origin v1.3.1
Preview releases use the same flow with preview tags such as:
git tag -a v1.3.1-preview.1 -m "Preview release"
git push origin v1.3.1-preview.1
Acknowledgments
Built with open source
Thank you to the player projects, music apps, libraries, and individual contributors whose work makes projects like mpvRx possible.