Back to all posts
Open Source
Video
Frontend

Android TV users, don't miss it: Selene-TV cuts finding a show from ten minutes to one

Adam
Sunday, April 5, 2026
7 min read

Title options (pick 1 of 3)

Android TV users, don't miss it: Selene-TV cuts finding a show from ten minutes to one

Hands on with Selene-TV: dual playback engines plus QR-code remote, and a self-hosted library finally gets a TV-native frontend

No third-party apps installed, yet it feels like a native Android TV: why Selene-TV earns its 882 stars

1. Opening: a TV box with a dozen apps installed, and still no way to find the show you want

The Android TV box in your living room has a dozen video apps installed. Switch apps, log in, hunt for a source, skip the intro, switch sources again — the whole routine takes five minutes at best and ten at worst. That is how most people actually watch TV: screens keep getting bigger, while the experience of finding something to watch keeps fragmenting.

Selene-TV exists to compress all of that back into the "turn it on and watch" feeling. 882 stars of community recognition, pure D-pad remote support, dual playback engines, smart speed testing with source switching — this is not another aggregation shell, but a client genuinely built for the TV.

2. Positioning: an Android TV client rewritten for the remote

Selene-TV is an Android TV (Leanback) client from the MoonTechLab team, using MoonTV v100 / Helios as its backend data source. Its positioning comes down to four keywords: Compose for TV, dual playback engines, QR-code remote, multi-source danmaku aggregation. Minimum support is Android 6.0 (API 23) with targetSdk 36, covering everything from old boxes to the latest flagships. The stack is Kotlin 2.2 + Jetpack Compose for TV (Material3), with UI and logic fully rewritten in a modern style.

3. Core features in depth

1. Multi-source aggregation with one-tap speed testing

Search once and results come back concurrently from multiple video sources. Hit the speed test button and the app benchmarks every playback source in parallel, re-sorting by "quality + speed" in real time, with the fastest clear source at the top. For TV users, what is saved is not one click but the minutes-long "source roulette" loop.

2. Dual playback engines: ExoPlayer (Media3) + mpv on demand

Mainstream HLS / MP4 goes through Media3 and native decoding — power-efficient and low latency; for tricky formats or more aggressive decoding strategies, switch to the mpv engine. Both engines share the same UI and progress management, and you can hot-swap inside the app. That design is rare among open source TV clients, and effectively brings a professional player's capabilities to the big screen.

3. Multi-platform danmaku aggregation with fine-grained control

Danmaku is matched to the current episode automatically, aggregating six sources — Bilibili / Tencent Video / iQIYI / Youku / Mango TV / LeTV — and picking the source with the highest danmaku density. During playback you can switch sources and adjust the display area, opacity, speed, font size and density, with three modes: "off / manual / auto". Rendering runs on akdanmaku (an OpenGL engine) and stays smooth on a 4K TV.

4. Phone QR-code remote and remote input

Typing a long drama title on a TV is the most painful part. Selene-TV embeds a Ktor (Netty) HTTP server; once started it shows a QR code, and scanning it turns your phone into a remote and input method. Settings pages, the search box, danmaku parameters — all can be typed on the phone while the TV just displays.

5. Cinema-grade detail pages with enriched metadata

Detail pages use an Apple TV-style full-screen hero, pulling TMDB stills and logos with an automatic fallback to built-in placeholders when loading fails. Combined with metadata from Douban / Bangumi / TMDB, covers, ratings and sequel info are all there, and resume playback and "continue watching" cards maintain themselves.

4. Technical highlights and performance data

Architecture: Kotlin 2.2 + Compose for TV (Material3) declarative UI, with a single dp sizing system spanning 1080p to 4K; Coil handles image loading and works around Douban's hotlink protection; OkHttp trusts self-signed certificates, compatible with plain HTTP and self-signed TLS on self-hosted backends.

Danmaku rendering: akdanmaku's OpenGL engine holds a stable 60fps on 4K screens; the smart cache uses a two-tier memory + disk design, keeping metadata and cover access latency in the millisecond range.

Dual-engine numbers: Media3 decodes HLS / MP4 with average time to first frame < 500ms; ExoPlayer's adaptive bitrate switching is imperceptible.

Ecosystem compatibility: minimum Android 6.0 (API 23), targetSdk 36; both arm64-v8a and armeabi-v7a APKs are provided, so old TV boxes still run it.

5. Use cases and audience

Case 1: everyday viewing on a living-room Android TV / TV box. You have a Xiaomi box, Dangbei, Aliyun Drive TV or similar at home and want one entry point that aggregates every source.

Case 2: a frontend for a self-hosted media library. Users who already run a private cinema on MoonTV / Helios and need a frontend that is actually worthy of the big screen.

Case 3: remote-only households. Where the elderly and kids use nothing but the remote, and touch or mouse input is out of the question.

Who it's for: Android TV users, self-hosted media enthusiasts, and anyone picky about how smooth remote navigation feels.

Who it's not for: users with only a phone or tablet and no TV-side need; devices that only accept touch interaction.

6. Comparison with alternatives

ProjectSelene-TVGeneric aggregation shell TV buildsTraditional TV video apps
Remote supportNative pure D-padHalf-adaptedPorted touch logic
Playback engineExoPlayer + mpv dual engineMostly a single ExoPlayerSingle in-house engine
Danmaku aggregation6 platforms, picks the densestSingle platformNo danmaku
Remote extensionBuilt-in phone QR remoteRarely supportedNot supported
Self-hostingNative MoonTV / HeliosNeeds extra developmentNot supported

Compared with generic aggregation shells, Selene-TV clearly pulls ahead on four axes — remote interaction, swappable playback engines, danmaku ecosystem and remote input — making it a genuinely "TV-native" client.

7. How to get started fast

1. Download and install Go to Releases and download the APK for your architecture (pick arm64-v8a if you are unsure), then install it via adb install or sideload it from a USB drive / file manager.

2. First-time setup After launch, enter your MoonTV / Helios backend address and credentials to log in. Under "Settings" you can view the phone remote QR code, configure Douban / TMDB data sources and clear the cache.

3. Going further

  • Switch between ExoPlayer / mpv per source in the player settings;
  • Adjust danmaku area, opacity, font size and density in the danmaku panel;
  • Enable in-app updates so a new version is checked automatically at launch.

8. Summary and next steps

Selene-TV takes "rewritten for the remote" all the way down: declarative Compose for TV UI, dual playback engines, 6-platform danmaku aggregation, phone QR remote, and MoonTV / Helios backend support covering everything from old boxes to 4K flagships. This is not a phone app blown up to size, but a complete experience redesigned for the big screen.

If you have an Android TV or TV box at home and happen to self-host MoonTV / Helios, go grab an APK from Releases and install it right now.

Project URL: https://github.com/MoonTechLab/Selene-TV

Let TVs be TVs again, and remotes be remotes again.

#selene-tv #SeleneTv #moontechlab #OpenSource #GitHub