# Ampache

Ampache ist eine freie Media-Streaming-Weboberfläche unter der GPL-Lizenz. Der Name ist ein Kofferwort aus Amplifier (englisch für „Verstärker“) und dem Webserver-Namen Apache. Ursprünglich wurde Ampache für die Zusammenarbeit mit dem Apache-Modul mod_mp3 entworfen, verfügt aber heute über seine eigene Streaming-Lösung. Die Hauptaufgabe ist es, Musik und Videos im Intranet oder über das Internet zu streamen.

## Projektphilosophie

Die Philosophie des Projekts ist klar definiert und in die vier Hauptziele Sicherheit, Geschwindigkeit, Barrierefreiheit und Kompatibilität aufgegliedert.
Da das in PHP geschriebene Ampache MySQL als Datenbank verwendet, wird die Sicherheit gegen SQL-Injection mit höchster Priorität betrachtet. Besondere Aufmerksamkeit wird auf die Geschwindigkeit des Programmcodes gelegt, da Mediendatenbanken sehr umfangreich werden können und Ampache auch für eine größere Benutzerzahl gewappnet sein soll.
Unter dem Ziel Barrierefreiheit wird die Nutzbarkeit aller Funktionen durch jeden Webbrowser, jedes Betriebssystem, in jeder Sprache und durch jedes menschliche Individuum verstanden. Die beabsichtigte Kompatibilität zu jeder Form von digitaler Musik umfasst die Unterstützung jedes erdenklichen Audioformats, eine beliebige Verzeichnisstruktur einer Sammlung und den Umgang mit Dateien mit mangelhaften oder fehlenden Metadaten.

## Metadaten und Dateiformate

Die Mediendatenbank wird in Form von Katalogen gepflegt, denen jeweils ein lokales Verzeichnis zugeordnet ist. Beim Erstellen eines Katalogs wird dieses Verzeichnis auf Dateien mit einer der unterstützten Dateiendungen durchsucht, die getrennt für Audio- und Videoformate frei konfigurierbar sind. Die gefundenen Dateien werden dann auf Metadaten durchsucht, die in einer frei priorisierbaren Reihenfolge extrahiert werden. Wurden keine Metadaten gefunden, werden diese ersatzweise über frei definierbare Formeln aus Verzeichnis- und Dateinamen konstruiert. Nachdem alle Daten in die Datenbank eingetragen worden sind, ist das Programm betriebsbereit.
Ampache ist eine Suchmaschine, deren Ergebnisse in eine Wiedergabeliste eingetragen werden können. Diese kann lokal zum Fernsteuern eines Abspielprogramms oder aus einem Webbrowser zum Starten eines externen Abspielprogramms verwendet werden. Durch Transkodierung können vom Zielprogramm nicht unterstützte Formate während des Abspielens umgewandelt werden. Hierzu kann jeder beliebigen Dateiendung ein Transkodierprogramm zugeordnet werden, das auf dem Server installiert sein muss.
Dieses Konzept ist sehr flexibel und erlaubt es, beliebige Formate hinzuzufügen. Bei noch nicht unterstützten und zukünftigen Formaten muss lediglich die Extraktion der Metadaten nachgerüstet werden. Bis dahin kann man jedoch auf die Auswertung von Pfad und Dateinamen zurückgreifen, oder selbst in PHP ein Plugin für das neue Format schreiben. Derzeit können Metadaten aus ID3-Tags (v1/v2), Vorbis comments, APE-Tags und aus den Formaten QuickTime, ASF, AVI, MPEG und RIFF ausgelesen werden.

## Schnittstellen und Abspielprogramme

Ampache verfügt über zahlreiche Schnittstellen zur Interaktion mit anderen Programmen; die Standardschnittstelle ist das Abspielen von Wiedergabelisten im Webbrowser.
Das lokale Abspielen von Wiedergabelisten kann zur Steuerung eines MPD- oder SHOUTcast-Servers verwendet werden oder über das Protokoll HTTPq ein externes Abspielprogramm fernsteuern. HTTPq wird direkt vom VLC media player unterstützt sowie über Plug-ins von Winamp und foobar2000.
Über eine XML-Programmierschnittstelle können externe Programme direkt mit Ampache kommunizieren. Dies ermöglicht Abspielprogrammen eine Integration der erfassten Sammlung in ihre Oberfläche. Programme wie Rhythmbox, Amarok, Banshee und das XBMC Media Center machen über Plug-ins davon Gebrauch. Durch Anbindung des Coherence-Mediaservers kann dies auch jedes UPnP/DLNA-fähige Abspielprogramm oder Endgerät sein. Die XML-Schnittstelle kann auch Ampache-Installationen mehrerer Maschinen miteinander verbinden, um den Katalog einer entfernten Installation abspielbar in die lokale Datenbank zu integrieren.
Es stehen auf Ampache spezialisierte Abspielprogramme für die mobilen Plattformen Android, Apple iOS, HP webOS, Blackberry OS und Maemo zur Verfügung, die alle die XML-Schnittstelle nutzen. Das in Python geschriebene Quickplay wurde speziell für Geräte mit limitierten Ressourcen wie auf Intel Atom basierende Computer geschrieben und benötigt GTK+.

## Benutzerverwaltung

Der Zugang zu Ampache ist normalerweise passwortgeschützt. Bei der Installation wird ein Administrator-Konto angelegt. Der Administrator kann dann weitere Konten erzeugen. Benutzer können in verschiedene Berechtigungsstufen klassifiziert werden, vom Gast, der nur Musik hören darf, bis zum Administrator, der die Datenbank erweitern und auch löschen darf. Zur Authentifizierung der Benutzer kann auch LDAP eingesetzt werden.
Ein weiteres Werkzeug zur Kontrolle des Zugangs sind Access Control Lists (auch ACL, deutsch Zugriffssteuerungslisten). Diese schränken den Zugang auf Bereiche von IP-Adressen ein und werden besonders im Zusammenhang mit der XML-Programmierschnittstelle benötigt, die explizit freigeschaltet werden muss. ACL können auch für bestimmte IP-Bereiche eine Transkodierung in niedriger Bitrate erzwingen, um Ampache auch über Verbindungen mit niedriger Datenübertragungsrate nutzen zu können.
Optional unterstützt Ampache auch das Registrieren von Konten durch neue Benutzer. Hierzu stehen Sicherheitsmechanismen wie die Abwehr maschineller Registrierung mittels Captcha sowie die Verifizierung der angegebenen E-Mail-Adresse zur Verfügung.