jqssun/android-airplay-server
First open-source AirPlay receiver implementation for Android with mirroring, video and audio support
About jqssun/android-airplay-server
jqssun/android-airplay-server is an open-source project on GitHub, mainly written in Kotlin. First open-source AirPlay receiver implementation for Android with mirroring, video and audio support It currently holds 463 stars and 71 forks with 19 open issues, and was last pushed on 2026-08-23 (repository created 2026-04-08).
Project Overview
Git Homed tracks it on the Today's Trending board, currently at rank #57 with 80 new stars today.
GitHub Repository Details
README
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
[!WARNING]
DRM content (e.g. from the Apple TV application) is not supported.
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.
flowchart LR
AppleDevice["Apple Device (Sender)"]
UxPlay["UxPlay (C/JNI)
RAOP + mDNS
FairPlay + HLS"]
AndroidApp["Android (Receiver)
MediaCodec + AudioTrack
ExoPlayer (HLS)"]
AppleDevice -- "RAOP / HLS" --> UxPlay
UxPlay --> AndroidApp
CMake is used for native C/C++ components under app/src/main/cpp. Submodules must be initialized before building.
git submodule update --init --recursive
./gradlew assembleDebug
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.