owntone-server
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.
Top Related Projects
๐งโ๏ธ Modern Music Server and Streamer compatible with Subsonic/Airsonic
:satellite: :cloud: :notes:Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)
Server for Squeezebox and compatible players. This server is also called Lyrion Music Server.
UPnP Media Server for 2024: Stream your digital media through your home network and consume it on all kinds of UPnP supporting devices ๐ฑ๐ป๐บ
The Free Software Media System
Quick Overview
OwnTone (formerly known as forked-daapd) is an open-source media server that supports various streaming protocols, including DAAP (iTunes), MPD, and AirPlay. It allows users to stream their music library to multiple devices and clients, providing a centralized solution for managing and playing audio content across a network.
Pros
- Supports multiple streaming protocols (DAAP, MPD, AirPlay)
- Integrates with various smart home systems (e.g., HomeKit, Chromecast)
- Offers a web interface for easy management and playback control
- Actively maintained and regularly updated
Cons
- Setup and configuration can be complex for beginners
- Limited video streaming capabilities compared to some alternatives
- May require additional setup for remote access outside the local network
- Documentation could be more comprehensive for advanced features
Getting Started
To set up OwnTone on a Debian-based system:
- Install dependencies:
sudo apt-get install build-essential git autotools-dev autoconf libtool gettext gperf bison flex libconfuse-dev libunistring-dev libsqlite3-dev libavcodec-dev libavformat-dev libavfilter-dev libswscale-dev libavutil-dev libasound2-dev libmxml-dev libgcrypt20-dev libavahi-client-dev zlib1g-dev libevent-dev libplist-dev libsodium-dev libjson-c-dev libwebsockets-dev libcurl4-openssl-dev libprotobuf-c-dev
- Clone the repository:
git clone https://github.com/owntone/owntone-server.git
cd owntone-server
- Build and install:
autoreconf -i
./configure
make
sudo make install
- Configure OwnTone by editing
/etc/owntone.conf
and start the service:
sudo systemctl start owntone
For more detailed instructions and configuration options, refer to the project's documentation on GitHub.
Competitor Comparisons
๐งโ๏ธ Modern Music Server and Streamer compatible with Subsonic/Airsonic
Pros of Navidrome
- Built with modern web technologies (Go, React), offering a responsive and feature-rich web interface
- Supports a wide range of audio formats, including lossless formats like FLAC
- Active development with frequent updates and a growing community
Cons of Navidrome
- Lacks some advanced features present in OwnTone, such as AirPlay support
- May have higher resource usage compared to OwnTone, especially for large libraries
Code Comparison
OwnTone (C):
int db_queue_add_by_queryafteritemid(struct query_params *qp, uint32_t item_id)
{
struct db_media_file_info dbmfi;
char *query;
int ret;
memset(&dbmfi, 0, sizeof(struct db_media_file_info));
Navidrome (Go):
func (r *mediaFileRepository) Get(id string) (*model.MediaFile, error) {
sel := r.newSelect().Columns("*").Where(squirrel.Eq{"id": id})
var mf model.MediaFile
err := r.queryOne(sel, &mf)
return &mf, err
}
Both projects use different programming languages and approaches, with OwnTone focusing on C for performance and Navidrome leveraging Go for modern development practices. Navidrome's code appears more concise and readable, while OwnTone's C code may offer better low-level control and optimization opportunities.
:satellite: :cloud: :notes:Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)
Pros of Airsonic
- More extensive feature set, including playlist management, user accounts, and podcast support
- Larger and more active community, resulting in frequent updates and bug fixes
- Better support for various audio formats and streaming protocols
Cons of Airsonic
- Higher resource consumption, especially for large music libraries
- More complex setup and configuration process
- Less focus on integration with smart home devices and voice assistants
Code Comparison
Airsonic (Java):
public class MediaScannerService {
@Autowired
private MediaFileService mediaFileService;
public void scanLibrary() {
// Scan logic here
}
}
OwnTone (C):
static void
library_rescan(void)
{
// Rescan logic here
}
The code snippets show different approaches to media scanning. Airsonic uses a more structured, object-oriented approach with dependency injection, while OwnTone employs a simpler C function. This reflects the overall design philosophy of each project, with Airsonic offering a more feature-rich but complex solution, and OwnTone focusing on simplicity and efficiency.
Server for Squeezebox and compatible players. This server is also called Lyrion Music Server.
Pros of slimserver
- More mature project with a longer history and larger community
- Supports a wider range of audio formats and streaming services
- Offers advanced features like smart playlists and dynamic playlist generation
Cons of slimserver
- Heavier resource usage, especially for large libraries
- More complex setup and configuration process
- Less frequent updates and slower development cycle
Code Comparison
slimserver (Perl):
sub rescan {
my $class = shift;
my $client = shift;
# Start a rescan
Slim::Music::Import->clearProgressInfo();
Slim::Music::Import->setIsScanning(1);
}
owntone-server (C):
static enum command_state
rescan(void *arg, int *retval)
{
*retval = library_rescan();
return COMMAND_END;
}
Both projects implement a rescan function, but slimserver's implementation is more complex, reflecting its broader feature set. owntone-server's code is more concise and focused on the core functionality.
UPnP Media Server for 2024: Stream your digital media through your home network and consume it on all kinds of UPnP supporting devices ๐ฑ๐ป๐บ
Pros of Gerbera
- Supports a wider range of media types, including images and videos
- More flexible in terms of customization and configuration options
- Actively maintained with regular updates and improvements
Cons of Gerbera
- More complex setup and configuration process
- Higher resource usage, especially for large media libraries
- Less focus on audio-specific features compared to OwnTone
Code Comparison
OwnTone (config example):
<library>
<name>My Music</name>
<path>/path/to/music</path>
<scan_interval>3600</scan_interval>
</library>
Gerbera (config example):
<import>
<filesystem>
<autoscan>
<directory location="/path/to/media" mode="inotify" recursive="yes"/>
</autoscan>
</filesystem>
</import>
Both projects are open-source media servers, but they have different focuses. OwnTone (formerly forked-daapd) is primarily designed for audio streaming, while Gerbera is a more comprehensive UPnP media server supporting various media types. OwnTone offers a simpler setup and is more lightweight, making it ideal for audio-centric setups. Gerbera, on the other hand, provides more flexibility and features for managing diverse media libraries but requires more configuration and system resources.
The Free Software Media System
Pros of Jellyfin
- More comprehensive media server solution, supporting video, audio, and photos
- Larger and more active community, leading to faster development and bug fixes
- Cross-platform support with native apps for various devices
Cons of Jellyfin
- Higher resource usage due to its broader feature set
- More complex setup and configuration process
- Steeper learning curve for new users
Code Comparison
OwnTone Server (C):
int db_queue_add_by_queryafteritemid(struct query_params *qp, uint32_t item_id)
{
struct db_media_file_info dbmfi;
char *query;
int ret;
memset(&dbmfi, 0, sizeof(struct db_media_file_info));
Jellyfin (C#):
public async Task<QueryResult<BaseItem>> GetItems(InternalItemsQuery query)
{
var user = query.User;
if (query.Recursive)
{
return await GetItemsRecursive(query).ConfigureAwait(false);
}
Both projects are open-source media servers, but Jellyfin offers a more comprehensive solution with support for various media types and platforms. OwnTone Server focuses primarily on audio streaming and is lighter on resources. Jellyfin has a larger community and more frequent updates, while OwnTone Server provides a simpler setup for those primarily interested in music streaming.
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
OwnTone
OwnTone is a media server that lets you play audio sources such as local files, Spotify, pipe input or internet radio to AirPlay 1 and 2 receivers, Chromecast receivers, Roku Soundbridge, a browser or the serverรขยยs own sound system. Or you can listen to your music via any client that supports mp3 streaming.
You control the server via a web interface, Apple Remote, an Android remote (e.g. Retune), an MPD client, json API or DACP.
OwnTone also serves local files via the Digital Audio Access Protocol (DAAP) to iTunes (Windows), Apple Music (macOS) and Rhythmbox (Linux), and via the Roku Server Protocol (RSP) to Roku devices.
Runs on Linux, BSD and macOS.
OwnTone was previously called forked-daapd, which again was a rewrite of mt-daapd (Firefly Media Server).
Looking for help?
Visit the OwnTone documentation for usage and set up instructions, API documentation, etc.
If you are looking for information on how to get and install OwnTone, then see the Installation instructions.
Top Related Projects
๐งโ๏ธ Modern Music Server and Streamer compatible with Subsonic/Airsonic
:satellite: :cloud: :notes:Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)
Server for Squeezebox and compatible players. This server is also called Lyrion Music Server.
UPnP Media Server for 2024: Stream your digital media through your home network and consume it on all kinds of UPnP supporting devices ๐ฑ๐ป๐บ
The Free Software Media System
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