Warning
Jellyfin Thor is an unofficial community fork. It is not supported by the Jellyfin team. Report fork-specific issues in this repository.
Jellyfin Thor is a playback-focused fork of the Jellyfin Android TV client for Android TV, NVIDIA Shield, and compatible Fire TV devices.
- Media3/ExoPlayer, MPV, libVLC, and external-player support
- Direct MPV MediaCodec output for compatible HDR and Dolby Vision playback
- Native MPV subtitle overlays for direct HDR video
- First-class ASS/SSA rendering through custom
libass, including renderer prewarming and a configurable 24–60 FPS limit - Fast keyframe-aware scrubbing with held-button acceleration
- Hardware, software, and FFmpeg decoder selection with fallback and recovery
- NVIDIA Shield fallbacks for affected H.264 Hi10P and MPEG-2 streams
- Reduced MPV output-buffer pressure for MediaTek-based Fire TV devices
- Accurate DD+ Atmos, TrueHD Atmos, DTS:X, and DTS-HD media badges
- Expanded in-player Stats for Nerds
- Live TV startup, buffering, and stream-recovery improvements
- Music Shuffle All, improved library sorting, and focus restoration when returning to settings
- Side-by-side installation with the official Jellyfin Android TV app
The release package ID is:
org.jellyfin.androidtv.thor
| Component | Current build | Notes |
|---|---|---|
| Media3/ExoPlayer | 1.11.0 |
Custom source snapshot 1.11.0-200-g835628b4c0ce with selected HDR and Dolby Vision fixes |
| Media3 FFmpeg decoder | FFmpeg 8.0.git |
Source revision f944afd04097; includes custom video-decoder and rendering patches |
| MPV Android library | 0.2.1-thor |
Uses FFmpeg release/8.1, LibreSSL 4.3.2, and native subtitle-overlay export |
| libass Android | 0.5.0-thor |
Custom Media3 renderer with prewarming and configurable subtitle FPS |
| Native toolchain | NDK r29 (29.0.14206865) |
Pinned across the app and checked-in media projects |
Requirements:
- Android TV 7.0 / API 24 or newer
- A reachable Jellyfin server
- Permission to sideload applications when installing outside an app store
Steps:
- Open the latest release.
- Download the appropriate APK from Assets.
- Transfer and install it on the device.
- Launch Jellyfin Thor and connect to your server.
Caution
Builds signed with different keys cannot update one another. Switching between a local build and a GitHub release may require uninstalling the existing app first.
Requirements:
- Git with submodule support
- JDK 21
- Android Studio or a compatible Android SDK
- Android NDK r29 (
29.0.14206865)
The current build uses Gradle 9.6.1, Android Gradle Plugin 9.3.1, and Kotlin 2.4.10.
git clone --recurse-submodules https://github.com/thor2002ro/jellyfin-androidtv.git
cd jellyfin-androidtv
./gradlew assembleDebugThe APK is written to:
app/build/outputs/apk/debug/
Run tests with:
./gradlew testThe application resolves its custom Media3 and MPV libraries from the checked-in Maven outputs:
dependencies/jellyfin-androidx-media/OUTPUT/maven/
dependencies/mpv-android-lib/OUTPUT/maven/
The libass-android submodule is included as a Gradle build, so a recursive clone contains the sources and artifacts required for a normal application build. See the subproject documentation when rebuilding native media components:
libass-android— Android libass build and Media3 ASS/SSA rendererjellyfin-androidx-media— Custom Media3 build with FFmpeg video decodingmpv-android-lib— Custom Android MPV build with HDR and native subtitle-overlay support
Based on jellyfin/jellyfin-androidtv and distributed under the GNU General Public License v2.0. See LICENSE.
Jellyfin Thor is not affiliated with, endorsed by, or supported by the Jellyfin project.