This is share svg Share this item

AirSonic Advanced

What is Airsonic-Advanced?
Airsonic-Advanced is a more modern implementation of the Airsonic fork with several key performance and feature enhancements. It adds and supersedes several features in Airsonic.

What is Airsonic?
Airsonic is a free, web-based media streamer, providing ubiquitous access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.

Airsonic is designed to handle very large music collections (hundreds of gigabytes). Although optimized for MP3 streaming, it works for any audio or video format that can stream over HTTP, for instance AAC and OGG. By using transcoder plug-ins, Airsonic supports on-the-fly conversion and streaming of virtually any audio format, including WMA, FLAC, APE, Musepack, WavPack and Shorten.

If you have constrained bandwidth, you may set an upper limit for the bitrate of the music streams. Airsonic will then automatically resample the music to a suitable bitrate.

In addition to being a streaming media server, Airsonic works very well as a local jukebox. The intuitive web interface, as well as search and index facilities, are optimized for efficient browsing through large media libraries. Airsonic also comes with an integrated Podcast receiver, with many of the same features as you find in iTunes.


Feature Enhancements:
The following is an incomplete list of features that are enhanced from Airsonic:

More modern base frameworks and libraries
Spring Boot 2.x (instead of 1.x), Spring Framework 5.x (instead of 4.x). Plus all the additional dependency upgrades due to the base libaries being upgraded (including EhCache, upgraded SQL connectors etc.)
A completely revamped credential system that actually stores credentials securely instead of openly. Includes encryption for credentials that need to be retrievable later (such as for third-party locations) and backwards compatibility. Also includes modern password hashing algorithms such as bcrypt, Argon for password storage.
More compliant with web specs and utilizes frameworks to apply them instead of custom home-implemented solutions
RFC 7233 for Range headers
Send correct ETags and Last-Modified headers to aid in client-side caching
Performance enhancements
A more efficient and compliant streaming engine, utilizing piping and threading
Removal of pessimistic locking throughout the software in favor of more modern concurrency techniques
Upgraded internal database that uses connection pooling and uses MVCC control mode for dealing with concurrent updates
Massive throughput boost (100K media library scan times reduced from ~40 min to ~3 mins)
Much faster UI rendering for browsers, especially for massive playlists
Aggressively uses multi-threading and parallelization for most operations, including but not limited to:
Massively parallelized engine for media scanning (media scanning is done much much faster, ~8x)
Other various use cases utilizing async or parallel options via fork-join pools
Use of websockets to communicate with web-clients instead of polling
Much lighter on resource utilization as well as more dynamic
Does not have to keep running the same command client side again every 10 seconds to check statuses
Server pushes status updates when they're needed when something has changed
Web clients can update UIs immediately (live views)
Removal of DWR (10 year old technology used as an interface between the web-client and the server)
Provides status indicator whether client is connected to server
HTML5 compliant
Redesigned layout: Uses iframes instead of framesets and frames
Utilize a dedicated library (DataTables) to render tables
Deferred rendering and data manipulation outside the DOM allows much faster rendering (~10x-800x!)
The bigger the table, the more performance benefits it sees
Play queue that took about 800s to render in the browser, can now render in < 1s
Allow optional paging and accessible searching within tables
Customize generated cover art thumbnail quality
Ability to show and display more track fields in playlists, playqueue and file browse mode
Option to show header row for track fields
Sort tracks in browse mode (such as show most recently scanned files etc.)
Several race condition fixes
Consistency checks and refactors
Works with JDK14
Uses JSR 310 (Java time) instead of older Java packages for time/duration tracking
Uses Java's NIO for handling files instead of the older IO packages
More precise song duration calculation
Ability to pass properties via environment or system variables. You can but do not need to modify to change preferences
Ability to use custom URLs to scrobble on ListenBrainz servers
Ability to use Repeat-One in play queues in web-clients
Sonos support: read documentation
Ability to upload multiple files simultaneously
Ability to upload and extract more archive formats:
Ability to export Podcasts to OPML
Ability to import playlists with relative file paths (resolved relative to Playlists folder)
Support direct binary internet radio stream urls
Various fixes to make it compatible with multiple external DBs
Automated tests are performed against external DBs
Uses failsafe for integration testing instead of cucumber
Build and deployment
An updated Docker image with JRE 14 base layer.
Add support for XMP to support playing MOD files out of the box
Multiplatform builds, including for ARM v7 and ARM64
A more advanced build pipeline including automatic releases and deploys at merge
Allows people to grab the newest build without compiling from source as soon as features/enhancements are merged, instead of waiting for the next stable build (which may be months away)
The complete list of PRs that were used to enhance Airsonic can be seen on the PRs page. At some point an automatic changelog generator will be added to keep track.

Airsonic-Advanced will occasionally backport features introduced in the base Airsonic fork, but is generally much more modern and bleeding edge than Airsonic.

Your gratitude and finance will help me to continue integration of this QPKG and maintain up to date versions.

Your gratitude and finance will help me to continue integration of this QPKG and maintain up to date versions.

Contact the Author

No older version