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.
Important
Well Development is now Resumed
Showcase
Features
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
Safer Folder Deletion
Media-only folder deletion by default, with an explicit option to delete every contained file
Settings Search Memory
Search suggestions and recently used settings queries
🤖 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, AniSkip, Anime Skip
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
M3U Playlist Support
Parse and play local M3U playlists
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
Audio Blob Visualizer
OpenGL ES 3.0 FFT-reactive blob with bloom, touch rotation, pinch zoom, and an Audio Settings toggle
Screenshot Templates
Filename placeholders for source name, playback position, and millisecond-accurate timestamps
🔋 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
If something breaks, feels off, or deserves another pass, don't be Dumb and ask for Trash Features which only you require it wll be auto deleted,
report it in the Issues.
Build
Requirements
JDK 17
Android SDK with modern build tools installed
Git
Debug Build
./gradlew.bat :app:assembleStandardDebug
Release Variants
Variant
Description
standard
Main release with in-app update support
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