jqssun/android-airplay-server

First open-source AirPlay receiver implementation for Android with mirroring, video and audio support

Kotlin

444

52 commits

updated Aug 23, 2026

See the code

README

AirPlay Receiver for Android

Stars GitHub license build release

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.

Get it on Google Play Get it on F-Droid Get it on GitHub

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)<br/>RAOP + mDNS<br/>FairPlay + HLS"]
    AndroidApp["Android (Receiver)<br/>MediaCodec + AudioTrack<br/>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.

Significant stargazers

Brian Callahan

395 followers · starred Aug 2026

aONe

291 followers · starred Sep 2026

Sung Jeon

626 followers · starred Aug 2026

Qifull

63 followers · starred Jun 2026

jqssun/android-airplay-server

First open-source AirPlay receiver implementation for Android with mirroring, video and audio support

Kotlin

444

52 commits

updated Aug 23, 2026

See the code

README

AirPlay Receiver for Android

Stars GitHub license build release

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.

Get it on Google Play Get it on F-Droid Get it on GitHub

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)<br/>RAOP + mDNS<br/>FairPlay + HLS"]
    AndroidApp["Android (Receiver)<br/>MediaCodec + AudioTrack<br/>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.

Significant stargazers

Brian Callahan

395 followers · starred Aug 2026

aONe

291 followers · starred Sep 2026

Sung Jeon

626 followers · starred Aug 2026

Qifull

63 followers · starred Jun 2026