jqssun / android-airplay-server
git clone https://github.com/jqssun/android-airplay-server.git
v0.0.36 · 1d ago
🔥 on GitHub Trending today
First open-source AirPlay receiver implementation for Android with mirroring, video and audio support
+50
stars, 24h · #168
—
stars, 7 days
—
stars, 30 days
704
★ total
110
forks · 22 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageKotlin
LicenseGPL-3.0
Created2026-04-08 (6mo ago)
Last push1d ago
Watchers5
OwnerUser
Seen on GitHub Trending
- 2026-10-20 — #7 daily in kotlin · +50 ★
Links
- GitHub: github.com/jqssun/android-airplay-server
- Homepage: https://f-droid.org/packages/io.github.jqssun.airplay/
- Releases · Issues · Hacker News mentions
README excerpt
# AirPlay Receiver for Android A fully featured free and open-source implementation of AirPlay for Android that turns your device into an AirPlay-compatible display and speaker, based on UxPlay. It is the first open-source AirPlay 2 receiver for Android and Android TV, and works with iOS/iPadOS, macOS devices as well as other sender implementations. ## Compatibility - Android 7.0+, including Android TV - AirPlay devices on the same subnet, including iOS/iPadOS, macOS devices, or other sender implementations ## Features - Screen mirroring with H.264 and H.265 (HEVC) video decoding - Audio streaming with AAC-ELD, AAC-LC and ALAC audio decoding - Video playback with support for HLS, downloads, and remote controls - Music playback with track information, cover art, and remote controls - Support for Android TV with directional pad navigation and seeking controls - Support for Picture-in-Picture, automatic resolution and mode switching - Optional PIN authentication - Video resolution, overscan, and frame rate control - Audio latency control and support for software decoder fallback - Debug overlay with real-time statistics (FPS, bitrate, codec, resolution, frame count, audio volume, etc.) - Android native media session integration with notification controls - Wired secondary display for macOS/iPadOS devices over USB tethering > [!WARNING] > DRM content (e.g. from the Apple TV application) is not supported. ## Configure from ADB On devices without a display, settings can also be changed over ADB. The receiver is protected by `android.permission.DUMP` so regular installed apps cannot change them. Values are passed as text using `--es`. Using `adb shell`: [code] To list all settings with their current values as JSON: [code] ## Implementation This application uses the C-based UxPlay library to implement the AirPlay/RAOP protocol, with a JNI bridge to the Android application layer. Audio can be decoded via MediaCodec or a software ALAC decoder, while mirroring video is decoded via MediaCodec and rendered to a SurfaceView. HLS sessions are served through a local playlist proxy. When using USB tethering, the Android device can act as a reliable secondary display over a wired connection. Apple devices natively support USB tethering over CDC-NCM, so on Android devices that default to RNDIS, you may need to switch to CDC-NCM over ADB: [code] [code] CMake is used for native C/C++ components under `app/src/main/cpp`. Submodules must be initialized before building. [code] Check out the CI for more details on reproducible builds. ## Credits - UxPlay for the AirPlay/RAOP server implementation - FFmpeg for the lossless audio decoder - Next Player for the video player --- Disclaimer: This project is not affiliated with Apple Inc.