airsonic
:satellite: :cloud: :notes:Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)
Top Related Projects
๐งโ๏ธ Modern Music Server and Streamer compatible with Subsonic/Airsonic
Server for Squeezebox and compatible players. This server is also called Lyrion Music Server.
music streaming server / free-software subsonic server API implementation
Linux/FreeBSD DAAP (iTunes) and MPD audio server with support for AirPlay 1 and 2 speakers (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio.
Quick Overview
Airsonic is an open-source, web-based media streamer and jukebox. It allows users to stream their music and video collection to multiple devices, supporting a wide range of audio formats and transcoding capabilities. Airsonic is a fork of the Subsonic project, aiming to continue its development and improve upon its features.
Pros
- Supports a wide range of audio formats and transcoding options
- Provides a responsive web interface for easy access across devices
- Offers advanced features like playlist management, podcast support, and Last.fm scrobbling
- Actively maintained by the community with regular updates and improvements
Cons
- Setup process can be complex for non-technical users
- Resource-intensive for large media libraries, especially during initial scanning
- Limited video streaming capabilities compared to dedicated video streaming solutions
- Some users report occasional stability issues with certain configurations
Getting Started
To set up Airsonic:
- Install Java 8 or later on your system.
- Download the latest Airsonic WAR file from the GitHub releases page.
- Run the WAR file using the following command:
java -jar airsonic.war
- Access the Airsonic web interface at
http://localhost:8080
. - Follow the initial setup wizard to configure your media folders and user accounts.
For more detailed instructions, including advanced configuration options and deployment methods, refer to the official documentation on the Airsonic GitHub repository.
Competitor Comparisons
๐งโ๏ธ Modern Music Server and Streamer compatible with Subsonic/Airsonic
Pros of Navidrome
- Written in Go, resulting in better performance and lower resource usage
- Modern, responsive web UI with a sleek design
- Active development with frequent updates and new features
Cons of Navidrome
- Fewer plugins and customization options compared to Airsonic
- Lacks some advanced features like internet radio and podcasts
Code Comparison
Navidrome (Go):
func (s *Scanner) processAudioFiles(ctx context.Context, dir string, files []string) error {
for _, f := range files {
if err := s.processAudioFile(ctx, f); err != nil {
log.Error(ctx, "Error processing audio file", "file", f, err)
}
}
return nil
}
Airsonic (Java):
private void scanFile(MediaFile file) {
try {
mediaFileService.refreshMediaFile(file);
} catch (Throwable x) {
LOG.warn("Error in MediaScanner.scanFile()", x);
}
}
Both projects aim to provide self-hosted music streaming solutions, but they differ in their implementation and feature sets. Navidrome offers better performance and a more modern interface, while Airsonic provides more extensive customization options and additional features. The code comparison highlights the difference in programming languages, with Navidrome using Go for potentially better performance and Airsonic using Java for broader compatibility.
Server for Squeezebox and compatible players. This server is also called Lyrion Music Server.
Pros of slimserver
- More active development with frequent updates and contributions
- Broader device support, including dedicated hardware players
- Extensive plugin ecosystem for enhanced functionality
Cons of slimserver
- Steeper learning curve and more complex setup process
- Higher system requirements for optimal performance
- Less modern web interface compared to Airsonic
Code Comparison
Airsonic (Java):
public class MediaScannerService {
private static final Logger LOG = LoggerFactory.getLogger(MediaScannerService.class);
private MediaLibraryStatistics statistics;
private boolean scanning;
private Timer timer;
}
slimserver (Perl):
package Slim::Music::Import;
use strict;
use Slim::Utils::Log;
use Slim::Utils::Prefs;
my $log = logger('scan.import');
my $prefs = preferences('server');
Both projects use object-oriented programming, but Airsonic is written in Java while slimserver uses Perl. Airsonic's code structure appears more modern and follows Java conventions, while slimserver's Perl code is more concise but may be less familiar to some developers.
slimserver's codebase is larger and more complex, reflecting its broader feature set and longer development history. Airsonic's code is generally more straightforward and easier to understand for newcomers to the project.
music streaming server / free-software subsonic server API implementation
Pros of Gonic
- Lightweight and faster performance due to being written in Go
- Simpler setup and configuration process
- Better support for large music libraries
Cons of Gonic
- Fewer features compared to Airsonic's extensive functionality
- Smaller community and less active development
- Limited plugin support
Code Comparison
Gonic (Go):
func (c *Controller) ServeArtwork(w http.ResponseWriter, r *http.Request) {
artID, err := strconv.Atoi(chi.URLParam(r, "id"))
if err != nil {
http.Error(w, "invalid artwork id", 400)
return
}
// ... (artwork serving logic)
}
Airsonic (Java):
public void getAvatar(@RequestParam("username") String username,
HttpServletResponse response) throws Exception {
User user = securityService.getUserByName(username);
if (user == null) {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
}
// ... (avatar serving logic)
}
Both repositories provide self-hosted music streaming solutions, but Gonic focuses on simplicity and performance, while Airsonic offers a more feature-rich experience. Gonic's Go implementation may lead to better performance, especially for larger libraries, but Airsonic's Java codebase provides more extensive functionality and plugin support. The code snippets demonstrate the different approaches to handling HTTP requests in their respective languages.
Linux/FreeBSD DAAP (iTunes) and MPD audio server with support for AirPlay 1 and 2 speakers (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio.
Pros of OwnTone
- Written in C, potentially offering better performance and lower resource usage
- Supports AirPlay and Chromecast for seamless streaming to various devices
- Includes a built-in web interface for easy management and playback control
Cons of OwnTone
- Smaller community and less frequent updates compared to Airsonic
- Limited plugin ecosystem, offering fewer extensibility options
- Lacks some advanced features like user management and playlist sharing
Code Comparison
OwnTone (C):
int mpd_command_playid(struct mpd_command *cmd)
{
int songid;
int ret;
ret = safe_atoi(cmd->arg, &songid);
if (ret < 0)
return -1;
return player_playid(songid);
}
Airsonic (Java):
public void play(int id) {
Player player = playerService.getPlayer(getPlayer());
MediaFile file = mediaFileService.getMediaFile(id);
playQueue.addFiles(false, file);
player.play(playQueue.getFiles().get(0));
}
This comparison highlights the language difference between the two projects, with OwnTone using C for potentially better performance, while Airsonic uses Java for easier development and cross-platform compatibility.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Airsonic
Airsonic isn't maintained anymore, you should migrate to airsonic-advanced instead.
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.
Based on Java technology, Airsonic runs on most platforms, including Windows, Mac, Linux and Unix variants.
History
The original Subsonic is developed by Sindre Mehus. Subsonic was open source through version 6.0-beta1, and closed-source from then onwards.
Libresonic was created and maintained by Eugene E. Kashpureff Jr. It originated as an unofficial("Kang") of Subsonic which did not contain the Licensing code checks present in the official builds. With the announcement of Subsonic's closed-source future, a decision was made to make a full fork and rebrand to Libresonic.
Around July 2017, it was discovered that Eugene had different intentions/goals for the project than some contributors had. Although the developers were hesitant to create a fork as it would fracture/confuse the community even further, it was deemed necessary in order to preserve a community-focused fork. To reiterate this more clearly:
Airsonic's goal is to provide a full-featured, stable, self-hosted media server based on the Subsonic codebase that is free, open source, and community driven.
Pull Requests are always welcome. Keep in mind that we strive to balance stability with new features. As such, all Pull Requests are reviewed before being merged to ensure we continue to meet our goals.
License
Airsonic is free software and licensed under the GNU General Public License version 3. The code in this repository (and associated binaries) are free of any "license key" or other restrictions. If you wish to thank the maintainer of this repository, please consider a donation to the Electronic Frontier Foundation.
The Subsonic source code was released under the GPLv3 through version 6.0-beta1. Beginning with 6.0-beta2, source is no longer provided. Binaries of Subsonic are only available under a commercial license. There is a Subsonic Premium service which adds functionality not available in Airsonic. Subsonic also offers RPM, Deb, Exe, and other pre-built packages that Airsonic currently does not.
The cover zooming feature is provided by jquery.fancyzoom, released under MIT License.
The icons are from the amazing feather project, and are licensed under MIT license.
Usage
Airsonic can be downloaded from GitHub.
Please use the Airsonic documentation for instructions on running Airsonic.
Community
We have several places outside of github for community discussion, questions, etc:
Note that the Matrix room and IRC channel are bridged together.
Top Related Projects
๐งโ๏ธ Modern Music Server and Streamer compatible with Subsonic/Airsonic
Server for Squeezebox and compatible players. This server is also called Lyrion Music Server.
music streaming server / free-software subsonic server API implementation
Linux/FreeBSD DAAP (iTunes) and MPD audio server with support for AirPlay 1 and 2 speakers (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot