ampache
A web based audio/video streaming application and file manager allowing you to access your music & videos from anywhere, using almost any internet enabled device.
Top Related Projects
:satellite: :cloud: :notes:Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)
๐งโ๏ธ Modern Music Server and Streamer compatible with Subsonic/Airsonic
๐ฆ A personal music streaming server that works.
Mopidy is an extensible music server written in Python
The Free Software Media System
Quick Overview
Ampache is a web-based audio/video streaming application and file manager. It allows users to access their music and videos from any internet-connected device. Ampache is designed to be self-hosted, giving users full control over their media library and streaming experience.
Pros
- Self-hosted solution, providing complete control over your media and data
- Supports a wide range of audio and video formats
- Offers a responsive web interface and various API options for third-party clients
- Includes features like user management, playlist creation, and Last.fm scrobbling
Cons
- Requires technical knowledge to set up and maintain
- May have higher resource requirements compared to cloud-based streaming services
- Limited built-in transcoding options for video content
- Some features and integrations may require additional configuration or plugins
Getting Started
To set up Ampache on your server:
- Ensure your server meets the requirements (PHP 7.4+, MySQL/MariaDB, web server like Apache or Nginx)
- Download the latest Ampache release from GitHub
- Extract the files to your web server directory
- Create a MySQL database for Ampache
- Navigate to the Ampache URL in your browser and follow the installation wizard
- Configure your media directories and start adding your music and video files
For detailed installation instructions, refer to the official documentation on the Ampache GitHub repository.
Competitor Comparisons
:satellite: :cloud: :notes:Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)
Pros of Airsonic
- Built on Java, offering better cross-platform compatibility and performance
- Supports a wider range of audio formats, including FLAC and OGG
- More active development and frequent updates
Cons of Airsonic
- Higher system requirements due to Java runtime
- Less extensive plugin ecosystem compared to Ampache
- Steeper learning curve for configuration and customization
Code Comparison
Airsonic (Java):
public class MediaScannerService {
@Autowired
private MediaFileService mediaFileService;
public void scanLibrary() {
// Scan logic here
}
}
Ampache (PHP):
class Catalog {
public function gather_songs() {
// Song gathering logic here
}
}
Both projects aim to provide self-hosted music streaming solutions, but they differ in their implementation and feature sets. Airsonic, being Java-based, offers better performance and wider format support, while Ampache, written in PHP, is more lightweight and has a larger plugin ecosystem. Airsonic's codebase tends to be more structured and object-oriented, while Ampache's PHP code is more procedural in nature. The choice between the two depends on specific requirements, server capabilities, and personal preferences for language and ecosystem.
๐งโ๏ธ Modern Music Server and Streamer compatible with Subsonic/Airsonic
Pros of Navidrome
- Built with modern technologies (Go, React) for better performance and easier maintenance
- Lightweight and resource-efficient, suitable for low-powered devices
- Clean, intuitive web interface with responsive design for mobile devices
Cons of Navidrome
- Fewer features compared to Ampache's extensive functionality
- Smaller community and ecosystem of plugins/extensions
- Limited customization options for the user interface
Code Comparison
Navidrome (Go):
func (s *Scanner) ScanLibrary(ctx context.Context) error {
s.log.Info("Starting library scan")
allFolders := s.getMusicFolders()
for _, folder := range allFolders {
err := s.scanFolder(ctx, folder)
if err != nil {
return err
}
}
return nil
}
Ampache (PHP):
public function run()
{
debug_event(self::class, 'Started catalog update', 5);
$this->update_remote_catalog();
$this->update_local_catalog();
$this->clean_catalog();
$this->update_last_update();
debug_event(self::class, 'Catalog update finished', 5);
}
The code snippets show different approaches to scanning music libraries. Navidrome uses Go's concurrency features, while Ampache follows a more traditional PHP structure.
๐ฆ A personal music streaming server that works.
Pros of Koel
- Modern, sleek user interface with a responsive design
- Built with Vue.js, offering a more reactive and efficient front-end experience
- Supports Last.fm integration for scrobbling and music recommendations
Cons of Koel
- Limited file format support compared to Ampache
- Fewer features for managing large music libraries
- Less extensive plugin ecosystem and customization options
Code Comparison
Koel (Vue.js component):
<template>
<div class="playlist-item" @dblclick.prevent="play">
<span class="title">{{ playlist.name }}</span>
<span class="meta">{{ playlist.songs.length }} songs</span>
</div>
</template>
Ampache (PHP template):
<div class="playlist-item" onclick="playSongs('<?php echo $playlist->id; ?>')">
<span class="title"><?php echo $playlist->name; ?></span>
<span class="meta"><?php echo count($playlist->songs); ?> songs</span>
</div>
This comparison highlights the difference in front-end technologies used by the two projects. Koel leverages Vue.js for a more dynamic and reactive user interface, while Ampache uses traditional PHP templates for rendering. The Koel example demonstrates a more modern approach to component-based development, while Ampache's code is more straightforward but potentially less flexible for complex UI interactions.
Mopidy is an extensible music server written in Python
Pros of Mopidy
- Extensible architecture with a plugin system, allowing for easy integration of various music sources and frontends
- Supports multiple audio outputs and can be controlled remotely
- Active development with frequent updates and a large community
Cons of Mopidy
- Requires more technical knowledge to set up and configure compared to Ampache
- Limited web interface out of the box, often requiring additional frontends
- Focused on streaming and playback, with less emphasis on library management
Code Comparison
Mopidy (Python):
from mopidy import core
class MyFrontend(pykka.ThreadingActor, core.CoreListener):
def track_playback_started(self, tl_track):
print(f"Now playing: {tl_track.track.name}")
Ampache (PHP):
<?php
$ampache = new Ampache\Repository\Model\Song($song_id);
$ampache->format();
echo "Now playing: " . $ampache->get_fullname();
?>
Summary
Mopidy is a flexible, extensible music server with a focus on streaming and playback from various sources. It offers a plugin system and supports multiple audio outputs, but requires more technical setup. Ampache, on the other hand, provides a more comprehensive web-based music management solution with an easier initial setup, but may be less flexible for advanced streaming scenarios.
The Free Software Media System
Pros of Jellyfin
- More active development with frequent updates and releases
- Broader media support, including live TV and DVR functionality
- Modern, user-friendly interface with customizable themes
Cons of Jellyfin
- Higher system requirements due to transcoding capabilities
- Steeper learning curve for initial setup and configuration
- Less focus on music-specific features compared to Ampache
Code Comparison
Jellyfin (C#):
public class MediaBrowser : IDisposable
{
private readonly ILogger<MediaBrowser> _logger;
private readonly IFileSystem _fileSystem;
private readonly ILibraryManager _libraryManager;
// ...
}
Ampache (PHP):
class Media extends database_object
{
public $id;
public $file;
public $title;
public $type;
// ...
}
Both projects use object-oriented programming, but Jellyfin's C# codebase tends to be more structured and follows modern development practices. Ampache's PHP code is simpler but may be less maintainable in large-scale applications.
Jellyfin offers a more comprehensive media server solution with support for various content types, while Ampache focuses primarily on music streaming and management. Jellyfin's active development and modern interface make it appealing for users seeking a full-featured media center, whereas Ampache may be preferred by those looking for a lightweight, music-centric solution.
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
Ampache
News
Ampache6 is here!
Ampache7 development has begun on the patch7 branch!
This branch will become release7 and replace the develop and master branches.
Information and changes for this major release are being recorded in the wiki here.
Ampache7 will continue to use API6 and will not make any breaking changes to that API.
Basics
Ampache is a web based audio/video streaming application and file manager allowing you to access your music & videos from anywhere, using almost any internet enabled device.
Ampache's usefulness is heavily dependent on being able to extract correct metadata from embedded tags in your files and/or the file name. Ampache is not a media organiser; it is meant to be a tool which presents an already organised collection in a useful way. It assumes that you know best how to manage your files and are capable of choosing a suitable method for doing so.
- Check out Ampache 6 for Admins
- As well as Ampache 6 for Users
Recommended Version
The recommended and most stable version is the current stable release6 branch.
You get the latest version with recent changes and fixes but maybe in an unstable state from our develop branch.
If you want to run the last stable version release5 is still available
Installation
Please see the wiki and don't forget to check out the basic config guide after that.
Requirements
-
A web server. All of the following have been used, though Ampache receives the most testing with Apache:
- Apache
- lighttpd
- nginx
- IIS
-
The correct PHP version for your Ampache release
- PHP 7.1-7.4 (Ampache 4.x.x)
- PHP 7.4 (Ampache 5.0.x -> Ampache 6.x.x)
- PHP 8.0 (Ampache 5.1.x -> Ampache 6.x.x)
- PHP 8.1 (Ampache 5.5.0 -> Ampache 6.x.x)
- PHP 8.2 (Ampache 6.0.0 and higher)
- PHP 8.3 (Ampache 6.2.0 and higher)
NOTE That php7.4 will not be supported for Ampache6 but can still be built.
-
PHP modules:
- PDO
- PDO_MYSQL
- hash
- session
- json (included in php8+)
- intl
- simplexml
- curl
- zip (Required in Ampache 7.0.0 and higher)
-
For FreeBSD The following php modules must be loaded:
- php-xml
- php-dom
- php-intl
- php-zip
-
Node.js v15+, npm v7+ (Required in Ampache 7.0.0 and higher)
-
MySQL 5.x / MySQL 8.x / MariaDB 10.x
Upgrading
If you are upgrading from an older version of Ampache we recommend moving the old directory out of the way, extracting the new copy in its place and then copying the old /config/ampache.cfg.php, /rest/.htaccess, and /play/.htaccess files if any. All database updates will be handled by Ampache.
License
Ampache is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License v3 (AGPL-3.0-or-later) as published by the Free Software Foundation.
Ampache includes some external modules that carry their own licensing.
Translations
Ampache is currently translated (at least partially) into the following languages. If you are interested in updating an existing translation, simply visit us on Transifex. If you prefer it old school or want to work offline, take a look at locale/base/TRANSLATIONS for more instructions.
Translation progress so far:
Admin tools and helper scripts
There are a lot of automation and helper tools used to help keep the Ampache release processes running smoothly.
The Ampache Administrator repo is used to build, document and test all Ampache releases.
The ampache-python3 repo is used heavily in the admin repo and provides a few example scripts to do some simple tasks using the latest API versions.
The Ampache Helper Scripts uses lua and is being used to help in Android development and testing of Power Ampache 2
Credits
Ampache would like to request anyone wanting to donate to the project spend that money on the people who really deserve it.
If you use these projects please consider donating in any way possible. (Including your time if you can help out!)
@mitchray developer of ample. https://buymeacoffee.com/mitchray
@icefields developer of Power Ampache
If you're a fan of play.dogmazic.net? Donate to the libre music association
Thanks to all those who have helped make Ampache awesome.
Contact Us
Hate it? Love it? Let us know! Dozens of people send ideas for amazing new features, report bugs and further develop Ampache actively. Be a part of Ampache with it's more than 10 years long history and get in touch with an awesome and friendly community!
- For Live discussions, visit us on our IRC Channel at chat.freenode.net #ampache or alternative via a web based chat client
- For harder cases or general discussion about Ampache take a look at our Google Groups Forum
- Found a bug or Ampache isn't working as expected? Please refer to the Issues Template and head over to our Issue Tracker
- r/Ampache
- Our Telegram Group
- Official Twitter
- Official Mastodon
Further Information and basic Help
- Everything related to the Ampache Project can be found on our Public Repository
- Want to know, how to get Apache to work or learn more about the functions? See our Documentation
We hope to see you soon and that you have fun with this Project!
Top Related Projects
:satellite: :cloud: :notes:Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)
๐งโ๏ธ Modern Music Server and Streamer compatible with Subsonic/Airsonic
๐ฆ A personal music streaming server that works.
Mopidy is an extensible music server written in Python
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