About this project

Mpv∞ (Mpv-infinity) is an ad-free, open-source Android media player built around two playback engines: MPV/libmpv and AndroidX Media3/ExoPlayer. It targets high-quality video and audio playback with a configurable control layer, an integrated media library, and optional network and server integrations. Playback engines - MPV engine provides broad format support, advanced rendering, shaders, scripting, and detailed MPV controls. - Media3 engine uses platform-integrated video, audio, codec, timeline, and device support, including an FFmpeg audio extension for extra audio-format compatibility. - An automatic routing mode can pick Media3 for supported Dolby Vision items and HLS/DASH streams while keeping ordinary files on MPV; the engine can also be switched per video from the decoder controls. - Media3 supports layered dual subtitles, chapter-aware timelines, and skippable segment actions such as intro, recap, outro, and credits. Video pipeline and HDR The Media3 Native path supports device-dependent Dolby Vision and HDR10+ through the device's hardware codec stack. A shader-based HDR pipeline is powered by hdr-toys with bundled GLSL shaders, offering modes such as BT.2100 PQ, BT.2100 HLG, BT.2020 gamut mapping, and Linear HDR, plus SDR-to-HDR boost, CPU or GPU deband, and automatic selection between OpenGL/Vulkan and gpu/gpu-next backends. Anime4K upscaling is available in several preset quality tiers with a 4K/8K safety guard. Thermal and battery management A ThermalMonitor samples thermal headroom during playback and can cap the shader budget, downgrade Anime4K quality under pressure, and reduce polling frequency when controls are hidden or playback is paused. The README also includes a battery optimization guide recommending the gpu renderer, the built-in fast profile, and selective shader use. Subtitles and AI Subtitles support primary and secondary tracks with auto-offset, ASS override modes, extensive styling, a font manager, embedded and external tracks, and online search modes (Wyzie, SubtitleHub, Hybrid) with TMDB-based media search. Experimental speech-to-subtitle generation is offered via cloud or offline Whisper providers. AI integration covers OpenAI, Anthropic, Groq, OpenRouter, Together, and OpenCode Zen for subtitle translation, subtitle reformatting, and bulk file renaming with custom prompts. Controls, gestures, and interface The player offers a customizable button layout across four zones plus a portrait row, 25+ button types, user-defined buttons running Lua, JavaScript, or mpv commands, orientation-specific layouts, and an in-player settings sheet. Gestures include configurable double-tap seek zones, multi-tap continuous seeking, horizontal swipe seeking, long-press dynamic speed, subtitle drag/zoom and dialogue seeking, pinch-to-zoom with pan, and volume boost beyond 100%. Theming includes 25+ color themes, AMOLED pure black variants, and Material 3 Expressive components. Library, network, and integrations A file browser provides album and tree views, folder pinning, recursive counts, new-video badges, and built-in SMB, FTP, and WebDAV clients. A native Jellyfin client browses libraries, searches movies and shows, and plays media directly; Seerr/Overseerr-compatible request servers are supported for discovery, availability, and season requests. Syncplay rooms synchronize pause, resume, seeking, and position with other viewers. Google Cast support includes device discovery, position handoff, a tokenized LAN server for local files, and remote stream handoff, using Google's Default Media Receiver without automatic transcoding of mpv-only formats. Utilities and scripting Additional tools include a live stats page, an FFmpeg-based video compressor, video filter presets, custom skip segments sourced from IntroDB, TIDB, AniSkip, and Anime Skip, A-B loop, frame navigation, sleep timer, adaptive background playback, M3U playlist support, dynamic refresh rate matching, an audio visualizer, and screenshot filename templates. yt-dlp integration provides streaming support for sites such as YouTube, Twitch, and Bilibili with independent codec, resolution, FPS, HDR, container, and audio-bitrate preferences. A built-in editor with TextMate syntax highlighting handles Lua and JavaScript scripts, plus mpv.conf and input.conf configuration. Build and licensing The project is licensed under AGPL v3 and targets Android. Building requires JDK 17, the Android SDK, and Git; a debug build is produced with the Gradle assembleStandardDebug task. APK variants cover universal, arm64-v8a, armeabi-v7a, x86, and x86_64. Releases are distributed through GitHub, with an Obtainium install link provided.