KBTVCaster turns an Android TV into a DLNA media renderer with an experimental AirPlay mirroring built in, so videos pushed from phones play directly on the TV.
- v0.4.0
- Published at
- 16h ago
- 10
- Stars
- 274
- Download
- Synced at
- 9h ago
Latest release
v0.4.0Oct 28, 2026, 06:28 AMREADME
Project Overview
If you want to receive phone-pushed videos on the TV without being locked into commercial casting apps, KBTVCaster takes the approach of turning an ordinary Android TV into a protocol receiver: full DLNA/UPnP media push support, with AirPlay screen mirroring built in as an experimental feature. It is built on Kotlin and Media3 ExoPlayer, uses a source-vendored Cling UPnP stack, and wraps the UxPlay kernel behind a thin JNI bridge for mirroring.
| Item | Value |
|---|---|
| Platform | Android TV / boxes (Android 6.0, API 23+) |
| Protocols | DLNA / UPnP (full), AirPlay mirroring (experimental) |
| Stack | Kotlin 1.9, Media3 ExoPlayer, Cling, UxPlay, oboe |
| Architectures | arm64-v8a / x86_64 / x86 |
| License | GPLv3 |
Tap on the phone, play on the TV — mirroring is on its way too.
Key Features
- DLNA media push: hit the cast button in any phone video app; direct mp4 / mkv links and HLS (
m3u8) streams both play, including Baidu Netdisk UA adaptation - Full remote mapping: play, pause, seek and volume all via D-Pad; a foreground service keeps it resident with boot-time autostart
- AirPlay screen mirroring: mirror straight from the iPhone Control Center; video decodes via MediaCodec and audio via an AAC-ELD/LC + ALAC chain, non-DRM content only
- Protocol abstraction: every cast protocol implements a unified CastProtocol interface that forwards PlaybackCommand only, so adding one is a single implementation
- Log-based troubleshooting:
adb logcat -s "CastCoordinator:*"pinpoints discovery and playback issues
How to Use
- Install and open the APK on the TV; a "Kaiji Casting" standby screen appears
- Put the phone and TV on the same WiFi (router AP isolation blocks discovery)
- Tap the cast button on a video page and choose the device "凯机投屏"
- Mirroring: install the airplay build on the TV, open Control Center → Screen Mirroring on the iPhone and pick KBTVCaster; the picture appears in about 10 seconds
Installation
Releases provide two officially signed APKs: app-release.apk is the DLNA stable build (mirroring protocol not registered), and app-release-airplay.apk additionally enables mirroring. Install over network ADB (adb connect <TV_IP>:5555) or sideload from a USB drive. For a slim build add -Pkbtv.build.abi=arm64-v8a to produce a single-architecture package of about 19 MB.
System Requirements
| Item | Requirement |
|---|---|
| OS | Android 6.0 (API 23) and above |
| Architecture | arm64-v8a / x86_64 / x86 |
| Network | Phone, computer and TV on the same LAN |
Notes
- Mirroring is experimental: the protocol is not registered by default and only ships in the airplay build; the audio decode chain is wired but still being tuned on real devices and may be silent
- Non-DRM only: AirPlay mirroring is based on UxPlay and cannot mirror protected content
- Device not found: confirm the same WiFi, AP isolation off, and the app running in the foreground