Worum gehts?
Wenn man sich abseits von überteuerten Alben und Singles im nächsten Plattenladen neue Musik anhören möchte, gibt es online wie auch offline haufenweise legale Möglichkeiten.
Neben dem altbewährten Radio oder Diensten wie Grooveshark und Last.fm kann man inzwischen auch auf Youtube, DailyMotion oder MyVideo Songs seiner Lieblingsinterpreten in guter Qualität anhören.
Letztgenannte Videopages haben inzwischen Verträge mit größeren Musiclabeln und bieten meist auch das passende Musikvideo mit an.
Neben der altgedienten MP3, die man via ITunes oder Napster (meist inklusive nervigem DRM) erwerben kann, gibt es also noch eine ganze Menge weiterer möglicher Quellen für Musik.
Die Idee
Wenn man etwas darüber nachdenkt, liegt auf der Hand, was jetzt kommt:
Ein Musikplayer, dem es egal ist, wo die Musik herkommt. Ein Song verfügt nicht mehr nur über einen Dateipfad zur lokalen MP3 sondern alternativ über einen Link zum entsprechenden Youtube-Video oder einem FTP-Server der Musikdateien enthält.
Natürlich kann Musik nicht nur via MP3 kodiert sein, andere Formate wie ogg oder wma sind möglich. Wenn ein passendes Video enthalten ist, gibt es viele weitere Möglichkeiten wie mp4, wmv, avi oder mkv.
Das Design
Datenbank
Songs sollten wie oben schon beschrieben, mehr als eine mögliche Quelle enthalten. Ein Song wird nicht mehr durch eine Datei auf der Festplatte beschrieben.
Um als Player zu funktionieren, sollte der MediaMasher mehr als einen Song am Stück abspielen können, weshalb die Datenbank um eine Playlist-Tabelle erweitert wird.
Abseits der funktionalen Anforderungen an die Datenbank kann man natürlich noch einige Tabellen und Attribute für Zusatzinformationen hinzufügen. Von Interpreten über Genres, Bewertungen, Alben bis hin zum Entstehungsjahr des Songs ist alles denkbar.
Ein großer Vorteil der dezentralisierten Datenhaltung ist, dass Songs auf jedem Computer mit Netzzugang abgespielt werden können. Das heißt im Klartext:
Man kann die Libraries von Freunden und Bekannten übernehmen, diese mergen und somit eine große Datenbasis aufbauen, die bei allen Usern gleichgut funktioniert.
Weiterhin muss für einen Song nurnoch angegeben werden, wo er sich befindet. Es hängt keine große Datei mehr an ihm.
Eine Musiksammlung mit mehreren tausend Songs wäre lediglich einige Kilobyte groß und könnte überall abgespielt werden.
Programmlogik
Nicht jede Source kann direkt abgespielt werden. Der Youtube-Link gibt nicht preis, wo sich die dazugehörige flv-Datei befindet.
MediaMasher muss in der Lage sein, eine gegebene URI in ein abspielbares Format zu bringen.
Hier kann man wie unten dargestellt eine Factory programmieren, die durch Plugins erweitert werden kann und gegebene URIs in abspielfähige Sources verwandelt.
Wie im Bild dargestellt gibt es mehrere Plugins, die jedes für einen bestimmten URI-typ zuständig sind. Je nachdem, welche Plugins ein User hat, kann er andere URIs abspielen.
Mit der Funktion isResponsible() kann die Factory überprüfen, ob ein Plugin eine gegebene URI verarbeiten kann.
Die Funktion getSource() gibt dann die entsprechende Mediasource zurück.
Abspielen der Sources
Derzeit ist unter der Haube des KDE-Projekts unterstützt von den QT-Entwicklern die Multimedia-Library Phonon in Entwicklung.
Phonon kann nahezu alle übergebenen Sources abspielen. Hierbei werden alle auf dem System installierten Codecs genutzt.
Phonon und seinen Möglichkeiten werde ich demnächst sicherlich noch den ein oder anderen Blogeintrag widmen.
GUI
Die Oberfläche des Players sollte relativ einfach gehalten sein. Wer den WinAmp-Lite kennt, weiß wie simpel ein guter Mediaplayer aussehen kann.
Zusätzlich zur Player-Oberfläche muss es noch Möglichkeiten geben, neue Songs hinzuzufügen, die Library zu bearbeiten oder zu ex/importieren.
Natürlich kann man bei fortschreitendem Entwicklungsstand auch die GUI entsprechend erweitern.
Die Umsetzung
Derzeit bin ich nach Feierabend ab und an dabei, das Design des MediaMashers zu erarbeiten.
Das Programm sollte sehr leicht zu verwenden und zu erweitern sein. Portabilität und modularer Aufbau sind sehr wichtig.
Die Sprache Python erfüllt alle oben genannten Kriterien. So bietet mir das Projekt also eine gute Möglichkeit, endlich mal Python zu lernen.
Für die GUI und die Soundwiedergabe kann der Python-Port PyQt4 genutzt werden. Die Datenbasis lässt sich mit dem eingebauten SQlite-Support ansprechen und Plugins lassen sich auch einfach realisieren.
Ich werde euch natürlich auf dem laufenden halten, was den Fortschritt des Projektes und mein Abenteuer mit Python angeht.
Stay tuned ;)
Abonnieren
Kommentare zum Post (Atom)
(0) Comments
Leave a Response