Skip to content

Riteshp2001/mpvRx

 
 

Repository files navigation

MpvRx

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.


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
Player Controls Animation 5 animation styles: Default, Elastic Bounce, Cinematic Scale, Slide Up, Minimal Fade
Always Dark Mode Option to keep player controls in dark theme regardless of app theme
Themed Player Controls Adaptive controls that match your app theme or system accent
🖐️ Gesture System
Feature Description
Refined Tap Logic Configurable double-tap seek zones (left/center/right) with independently assignable actions
Multi-Tap Continuous Seeking Triple/quadruple tap to keep seeking further without lifting
Horizontal Swipe to Seek Swipe across video to seek with live time/delta overlay
Long-Press Dynamic Speed Long-press activates configurable speed boost; swipe left/right to adjust across 8 presets
Subtitle Drag Gesture Long-press center screen to drag subtitles vertically when active
Pinch-to-Zoom with Pan Pinch to zoom (-1x to 3x) with simultaneous pan and single-finger pan after zoom
Volume Boost via Gesture Vertical swipe volume can exceed 100% into configurable boost range
Swap Volume/Brightness Sides Option to swap which screen side controls volume vs brightness
📺 HDR & Video Pipeline
Feature Description
Shader-Based HDR Pipeline Powered by hdr-toys — 77 bundled GLSL shaders
Four HDR Modes BT.2100 PQ (HDR10), BT.2100 HLG, BT.2020 gamut mapping, Linear HDR
SDR-to-HDR Boost Boost SDR content into HDR range when using Linear HDR pipeline
GPU Deband CPU (gradfun) or GPU deband with configurable iterations, threshold, range, grain
Smart Render Backend Auto-selects between OpenGL/Vulkan and gpu/gpu-next based on device support
🔥 Thermal & Battery Management
Feature Description
ThermalMonitor Samples thermal headroom every 10s during playback
Adaptive Shader Budget Ambient shader budget auto-capped based on thermal headroom
Anime4K Proactive Throttling Auto-downgrades Anime4K quality when thermal headroom drops below 40%
Background Poll Optimization Position poll interval doubles when controls are hidden, cutting JNI wake-ups 50%
Stats Poll Backoff Stats page poll loop backs off from 1s to 2s when playback is paused
🧩 Anime4K & Upscaling
Feature Description
7 Preset Quality Tiers Off, A, B, C, A+, B+, C+ with clean switching
Quality Tiers in Decoder Settings Fast / Balanced / High quality choices
4K/8K Safety Guard Auto-disables Anime4K for high-resolution content
Thermal-Guarded Selection Auto-downgrades quality tier under thermal pressure before frame drops
💡 Ambient Mode
Feature Description
Two Visual Modes GLOW and FRAME_EXTEND — both rendered via custom GLSL at runtime
15+ Configurable Parameters Blur samples, glow intensity, saturation, warmth, vignette, dither noise, and more
Shader Recompilation Caching Skips recompilation when parameters match last compiled version
📝 Subtitle System
Feature Description
Dual Subtitle Support Primary + secondary with auto-offset to prevent overlap
ASS Override Modes Smart force/scale handling for secondary subtitles
Comprehensive Styling Font, size, bold, italic, border, shadow, colors, justification, scale by window
Three Online Search Modes Wyzie, SubtitleHub (6 aggregated sources), and Hybrid (both merged)
TMDB Integration Full media search with season/episode browsing for subtitles
🎮 Player Controls
Feature Description
Fully Customizable Layout Four configurable zones (top-left/right, bottom-left/right) + portrait bottom row
24+ Button Types Mirror, Vertical Flip, A-B Loop, Custom Skip, Background Playback, Ambient, and more
Custom User Buttons Create arbitrary buttons executing Lua, JavaScript, or mpv commands
Landscape/Portrait Adaptive Layouts Completely different control layouts per orientation
"Slide to Unlock" Controls Slide mechanism when controls are locked
Hide Button Backgrounds Transparent buttons with only icons visible
Centralized "More Sheet" Quick access to all player buttons and custom controls
In-Player Settings Toggle 10+ settings (gestures, PiP, UI behavior) without leaving playback
🧭 Smart Orientation
Feature Description
8 Orientation Modes Free, Video (auto aspect ratio), Portrait, Reverse Portrait, Sensor Portrait, Landscape, Reverse Landscape, Sensor Landscape
Persistent Per-Video Orientation remembered per-video across sessions
🔍 File Browser & Navigation
Feature Description
Dual Browser Modes 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
🤖 AI Integration
Feature Description
Provider Support Gemini and Groq with configurable API keys and models
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
📜 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
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
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
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

🔋 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.conf profile=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

Buy Me a Coffee

UPI

panditritesh2001@okhdfcbank

UPI QR Code

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


License

Distributed under the Apache License 2.0. See LICENSE for more information.


Star History

Star History Chart

About

The most Powerful, Efficient + Feature-packed media player fork you’ll find anywhere.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Kotlin 81.2%
  • GLSL 18.8%