A completely rewritten high-performance AirPlay server.
Built with .NET 10, supporting cross-platform compatibility, standard dependency injection patterns, and improved lifecycle management for connection objects.
Special thanks to pkillboredom and Stefano Bono for their open-source contributions to the original project SteeBono/airplayreceiver.
My implementation references the forked version from pkillboredom/airplayreceiver, and the code for audio decryption and decoding uses a modified version of the source code from that project.
My original intention was to directly fork that project and make modifications and improvements based on it.
However, after carefully reviewing its source code and attempting some changes, I found that although the codebase was upgraded to .NET 8,
it still contained many outdated coding practices, obsolete NuGet package references, and poor type referencing and lifecycle management.
Additionally, the feature implementation remained incomplete and contained numerous coding errors. Ultimately, I decided to use it as a reference to gather relevant information and rewrite the project.
Unofficial AirPlay Protocol Specification
AirPlay2 Internals
openairplay spec
UxPlay Wiki
Some other references provided limited value and are not listed here.
There are very few reference documents available for AirPlay, and most of the existing literature is outdated.
In most documents, the AirTunes service version number remains atAirTunes/220.68
.
Furthermore, descriptions of protocol details in some older documents are inconsistent, making it difficult to verify their accuracy; validation through code implementation became necessary.
- Supports multiple devices connecting simultaneously to the AirPlay receiver.
- Supports audio streaming from multiple devices in ALAC and AAC formats.
- Supports screen mirroring from multiple devices in H.264 format.
- Supports packet retransmission for real-time audio streams (fixes disconnection and packet loss issues present in the original implementation).
- Supports Dacp service for reverse control of audio connections.
- Support for decoding AAC-ELD format audio
- Support for video stream streaming.