[{"data":1,"prerenderedAt":220},["ShallowReactive",2],{"repo-kaiji-z-kbtvcaster-en":3,"i18n-kaiji-z-kbtvcaster-en":217},{"mirrorPool":4,"detail":13,"relatedProjects":104},[5,9],{"key":6,"label":7,"base":8,"type":6},"github","mirror.github","https:\u002F\u002Fgithub.com\u002F",{"key":10,"label":11,"base":12,"type":10},"auto-proxy","mirror.autoProxy","https:\u002F\u002Fgithub.xxlab.tech\u002F",{"owner":14,"repo":15,"repoId":16,"repoUrl":17,"starCount":18,"language":19,"description":20,"languages":21,"screenshots":28,"homepage":29,"pushedAt":30,"ownerAvatar":31,"ownerName":32,"ownerBio":33,"lastSyncTime":34,"lastReleaseTime":35,"tags":36,"license":47,"category":48,"subgroup":49,"releases":50},"Kaiji-Z","KBTVCaster",1138019837,"https:\u002F\u002Fgithub.com\u002FKaiji-Z\u002FKBTVCaster",10,"C","Android TV DLNA\u002FUPnP 投屏接收端 | Casting receiver — phone video apps push media to the TV. Cling UPnP + Media3 ExoPlayer.",{"C":22,"Java":23,"Kotlin":24,"C++":25,"Shell":26,"Python":26,"CMake":27},82.5,14.3,2.2,0.8,0.1,0,[],"","2026-10-28","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F255520104?v=4","Kaiji","I build things I wish existed. Currently exploring AI agents, developer tooling, and the space between philosophy and engineering.","2026-10-28T14:04:14.443647+00:00","2026-10-28T06:28:44Z",[37,38,39,40,41,42,43,44,45,46],"android","android-tv","casting","cling","dlna","exoplayer","kotlin","media-renderer","screen-mirroring","upnp","GPL-3.0","media","投屏\u002F手机连接工具",[51,67,82,93],{"tag":52,"publishAt":35,"semVer":53,"prerelease":55,"assets":56},"v0.4.0",[27,54,27],4,false,[57,63],{"fileName":58,"sizeMb":59,"sha256":60,"downloadCount":61,"originUrl":62},"app-release-airplay.apk",32.76,"0ba38ba6a32b7b08d98284c1c020e3ce0328e2b99b70b7632030f11c48195fdf",1,"https:\u002F\u002Fgithub.com\u002FKaiji-Z\u002FKBTVCaster\u002Freleases\u002Fdownload\u002Fv0.4.0\u002Fapp-release-airplay.apk",{"fileName":64,"sizeMb":59,"sha256":65,"downloadCount":61,"originUrl":66},"app-release.apk","18a1528a9a9d8dfe81de16e08997fd260e181fe59ce6c171b40270b3de0c293d","https:\u002F\u002Fgithub.com\u002FKaiji-Z\u002FKBTVCaster\u002Freleases\u002Fdownload\u002Fv0.4.0\u002Fapp-release.apk",{"tag":68,"publishAt":69,"semVer":70,"prerelease":55,"assets":72},"v0.3.0","2026-10-18T14:41:24Z",[27,71,27],3,[73,78],{"fileName":58,"sizeMb":74,"sha256":75,"downloadCount":76,"originUrl":77},28.32,"a22a8623175e8c3c7c6b90461ab99fefaad46824da4ed4c2446b04590142a726",35,"https:\u002F\u002Fgithub.com\u002FKaiji-Z\u002FKBTVCaster\u002Freleases\u002Fdownload\u002Fv0.3.0\u002Fapp-release-airplay.apk",{"fileName":64,"sizeMb":74,"sha256":79,"downloadCount":80,"originUrl":81},"00a4241a562eb16c4035db2cab9f65cd708f32cf4e0e55626ddcb1bd003fac19",42,"https:\u002F\u002Fgithub.com\u002FKaiji-Z\u002FKBTVCaster\u002Freleases\u002Fdownload\u002Fv0.3.0\u002Fapp-release.apk",{"tag":83,"publishAt":84,"semVer":85,"prerelease":55,"assets":87},"v0.2.0","2026-07-31T12:01:56Z",[27,86,27],2,[88],{"fileName":89,"sizeMb":90,"sha256":91,"downloadCount":80,"originUrl":92},"KBTVCaster-0.2.0.tar.gz",46.18,"f5228ca65cac764c5016c0085ec11e01252026b6ee9109b17824157225f95651","https:\u002F\u002Fgithub.com\u002FKaiji-Z\u002FKBTVCaster\u002Freleases\u002Fdownload\u002Fv0.2.0\u002FKBTVCaster-0.2.0.tar.gz",{"tag":94,"publishAt":95,"semVer":96,"prerelease":55,"assets":97},"v0.2.1","2026-07-31T12:01:39Z",[27,86,61],[98],{"fileName":99,"sizeMb":100,"sha256":101,"downloadCount":102,"originUrl":103},"KBTVCaster-0.2.1.tar.gz",92.27,"b669e62f29bd85f54457df64475a6ca7e8907046e98e441cdc8721a64bc724c9",153,"https:\u002F\u002Fgithub.com\u002FKaiji-Z\u002FKBTVCaster\u002Freleases\u002Fdownload\u002Fv0.2.1\u002FKBTVCaster-0.2.1.tar.gz",[105,129,143,156,181,196],{"owner":106,"repo":107,"repoId":108,"category":109,"subgroup":49,"language":19,"tags":110,"starCount":119,"ownerUid":120,"latestTag":121,"platforms":122,"lastReleaseTime":126,"downloadCount":127,"description":128},"Genymobile","scrcpy",111583593,"tools",[37,111,112,113,114,115,116,117,118],"c","ffmpeg","genyteam-system","libav","mirroring","recording","screen","sdl2",151700,3427627,"v5.0.1",[123,124,125],"windows","mac","linux","2026-10-08T06:44:27Z",7062,"A lightweight, high-performance Android screen mirroring and control tool that displays and controls Android devices on your computer via USB or Wi-Fi, without requiring root access.",{"owner":130,"repo":131,"repoId":132,"category":109,"subgroup":49,"language":133,"tags":134,"starCount":136,"ownerUid":137,"latestTag":138,"platforms":139,"lastReleaseTime":140,"downloadCount":141,"description":142},"barry-ran","QtScrcpy",193305104,"C++",[37,135],"qt",32230,18702692,"v4.2.1",[123,124,125],"2026-09-19T13:28:16Z",9783,"A Qt-based Android real-time display and control software that supports USB and network connections without requiring root privileges.",{"owner":144,"repo":145,"repoId":146,"category":109,"subgroup":49,"language":147,"tags":148,"starCount":149,"ownerUid":150,"latestTag":151,"platforms":152,"lastReleaseTime":153,"downloadCount":154,"description":155},"shihabal3amri","DiPlay",1385817306,"Kotlin",[],12662,42039842,"v0.2.22",[37],"2026-10-28T08:51:23Z",2731,"DiPlay is an independent CarPlay receiver for compatible BYD Android head units, with wired and wireless connections, HUD navigation, and diagnostic exports — no jailbreak, dongle, or auth server.",{"owner":157,"repo":158,"repoId":159,"category":109,"subgroup":49,"language":160,"tags":161,"starCount":174,"ownerUid":175,"latestTag":176,"platforms":177,"lastReleaseTime":178,"downloadCount":179,"description":180},"viarotel-org","escrcpy",691846708,"JavaScript",[37,162,163,164,165,166,167,125,168,169,115,116,107,170,171,172,173,123],"genymobile","gnirehtet","gui","hacktoberfest","hacktoberfest2026","hacktoberfest2027","macos","mapping","scrcpy-engine","scrcpy-gui","screensharing","screenshots",12014,131328070,"v3.3.1",[123,124,125],"2026-10-10T03:43:49Z",1398,"A graphical Android device control tool built on scrcpy, supporting inset mirror, keyboard mapping, multi-device control, AI assistant, and automation scripts, available for macOS, Windows, and Linux.",{"owner":182,"repo":183,"repoId":184,"category":48,"subgroup":49,"language":185,"tags":186,"starCount":189,"ownerUid":190,"latestTag":191,"platforms":192,"lastReleaseTime":193,"downloadCount":194,"description":195},"xfangfang","Macast",373037895,"Python",[41,125,168,44,187,46,188,123],"mpv","upnp-renderer",6971,16631584,"v0.7",[123,124,125],"2022-01-13T18:48:31Z",197271,"A cross-platform menu bar\u002Fstatus bar application that uses mpv as a DLNA media renderer, allowing users to push videos, pictures, and music from their phone to their computer.",{"owner":197,"repo":198,"repoId":199,"category":109,"subgroup":49,"language":200,"tags":201,"starCount":209,"ownerUid":210,"latestTag":211,"platforms":212,"lastReleaseTime":214,"downloadCount":215,"description":216},"TNTcraftHIM","Piik",1338012624,"TypeScript",[202,203,204,205,206,207,208],"live-streaming","p2p","private-streaming","screen-sharing","self-hosted","watch-together","webrtc",3824,35992542,"v2.5.0",[123,124,125,37,213],"other","2026-10-26T18:03:55Z",723,"Piik is a free, open-source screen sharing tool for private sharing among friends. It features P2P-first connections, browser viewing without installation, a desktop app for sharing, and optional self-hosting. It is suitable for games, movie nights, drawings, and photos, supporting one host and up to 20 viewers per room.",{"description":218,"readmeHtml":219},"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.","\u003Ch2 id=\"project-overview\">Project Overview\u003C\u002Fh2>\u003Cp>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\u002FUPnP 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.\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Item\u003C\u002Fth>\n\u003Cth>Value\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Platform\u003C\u002Ftd>\n\u003Ctd>Android TV \u002F boxes (Android 6.0, API 23+)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Protocols\u003C\u002Ftd>\n\u003Ctd>DLNA \u002F UPnP (full), AirPlay mirroring (experimental)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Stack\u003C\u002Ftd>\n\u003Ctd>Kotlin 1.9, Media3 ExoPlayer, Cling, UxPlay, oboe\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Architectures\u003C\u002Ftd>\n\u003Ctd>arm64-v8a \u002F x86_64 \u002F x86\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>License\u003C\u002Ftd>\n\u003Ctd>GPLv3\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cblockquote>\n\u003Cp>Tap on the phone, play on the TV — mirroring is on its way too.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2 id=\"key-features\">Key Features\u003C\u002Fh2>\u003Cul>\n\u003Cli>\u003Cstrong>DLNA media push\u003C\u002Fstrong>: hit the cast button in any phone video app; direct mp4 \u002F mkv links and HLS (\u003Ccode>m3u8\u003C\u002Fcode>) streams both play, including Baidu Netdisk UA adaptation\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Full remote mapping\u003C\u002Fstrong>: play, pause, seek and volume all via D-Pad; a foreground service keeps it resident with boot-time autostart\u003C\u002Fli>\n\u003Cli>\u003Cstrong>AirPlay screen mirroring\u003C\u002Fstrong>: mirror straight from the iPhone Control Center; video decodes via MediaCodec and audio via an AAC-ELD\u002FLC + ALAC chain, non-DRM content only\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Protocol abstraction\u003C\u002Fstrong>: every cast protocol implements a unified CastProtocol interface that forwards PlaybackCommand only, so adding one is a single implementation\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Log-based troubleshooting\u003C\u002Fstrong>: \u003Ccode>adb logcat -s &quot;CastCoordinator:*&quot;\u003C\u002Fcode> pinpoints discovery and playback issues\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"how-to-use\">How to Use\u003C\u002Fh2>\u003Col>\n\u003Cli>Install and open the APK on the TV; a &quot;Kaiji Casting&quot; standby screen appears\u003C\u002Fli>\n\u003Cli>Put the phone and TV on the same WiFi (router AP isolation blocks discovery)\u003C\u002Fli>\n\u003Cli>Tap the cast button on a video page and choose the device &quot;凯机投屏&quot;\u003C\u002Fli>\n\u003Cli>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\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"installation\">Installation\u003C\u002Fh2>\u003Cp>Releases provide two officially signed APKs: \u003Ccode>app-release.apk\u003C\u002Fcode> is the DLNA stable build (mirroring protocol not registered), and \u003Ccode>app-release-airplay.apk\u003C\u002Fcode> additionally enables mirroring. Install over network ADB (\u003Ccode>adb connect &lt;TV_IP&gt;:5555\u003C\u002Fcode>) or sideload from a USB drive. For a slim build add \u003Ccode>-Pkbtv.build.abi=arm64-v8a\u003C\u002Fcode> to produce a single-architecture package of about 19 MB.\u003C\u002Fp>\n\u003Ch2 id=\"system-requirements\">System Requirements\u003C\u002Fh2>\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Item\u003C\u002Fth>\n\u003Cth>Requirement\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>OS\u003C\u002Ftd>\n\u003Ctd>Android 6.0 (API 23) and above\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Architecture\u003C\u002Ftd>\n\u003Ctd>arm64-v8a \u002F x86_64 \u002F x86\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Network\u003C\u002Ftd>\n\u003Ctd>Phone, computer and TV on the same LAN\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Ch2 id=\"notes\">Notes\u003C\u002Fh2>\u003Cul>\n\u003Cli>\u003Cstrong>Mirroring is experimental\u003C\u002Fstrong>: 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\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Non-DRM only\u003C\u002Fstrong>: AirPlay mirroring is based on UxPlay and cannot mirror protected content\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Device not found\u003C\u002Fstrong>: confirm the same WiFi, AP isolation off, and the app running in the foreground\u003C\u002Fli>\n\u003C\u002Ful>\n",1793229043206]