Convert Figma logo to code with AI

ampache logoampache

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.

3,503
588
3,503
362

Top Related Projects

:satellite: :cloud: :notes:Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)

11,657

๐ŸŽงโ˜๏ธ Modern Music Server and Streamer compatible with Subsonic/Airsonic

15,964

๐Ÿฆ A personal music streaming server that works.

8,034

Mopidy is an extensible music server written in Python

34,085

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:

  1. Ensure your server meets the requirements (PHP 7.4+, MySQL/MariaDB, web server like Apache or Nginx)
  2. Download the latest Ampache release from GitHub
  3. Extract the files to your web server directory
  4. Create a MySQL database for Ampache
  5. Navigate to the Ampache URL in your browser and follow the installation wizard
  6. 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.

11,657

๐ŸŽงโ˜๏ธ 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.

15,964

๐Ÿฆ 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.

8,034

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.

34,085

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Ampache

Logo

www.ampache.org

Ampache Docker

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.

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. Scrutinizer Code Quality Code Coverage Codacy Badge Code Climate

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:

Transifex

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. buy_me_a_coffeehttps://buymeacoffee.com/mitchray

@icefields developer of Power Ampache Donate Bitcoin Donate - Paypal

If you're a fan of play.dogmazic.net? Donate to the libre music association Donate - Paypal

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!

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!

Team Ampache