|
|
MP3 Ströme über IP
Lautsprecher Thema: Effekte und Spielereien mit mehreren Kanälen Gliederung: Gruppenmitglieder Kritiken Abstract Einleitung Probleme Follow-me-Systeme technische Umsetzung Implementierung Datenströme Realisirung Versuchsaufbau Projektweiterführung Fazit Projektverlauf 07.02.2006 24.01.2006 10.01.2006 13.12.2005 29.11.2005 15.11.2005 Downloadbereich Quellen Gruppe: Roman Domke Sven Jaekel Kritiken: Kritik1 Kritik2 Kritik3 Da sich unser Projekt mit "Mp3 Strömen über IP Lautsprecher" befasst, haben wir uns entschieden, Elemente der Akustik und Sensorik zu kombinieren. Unser Ziel ist es, ein intelligentes System zu implementieren, welches gesteuert durch Kameras Musik aktiviert, sobald eine Person einen Raum betritt und diese wieder deaktiviert, wenn sie den Raum verlässt. Das System, bestehend aus mehreren Laptops, mit denen die Lautsprecher verbunden sind, wird von Raum zu Raum vernetzt sein, so dass die Musik der sich durch das Haus bewegenden Person folgt. Damit jeder Laptop dieselbe Musik abspielt, muss der MP3-Datenstrom synchronisiert werden. Das Ziel ist - wie schon im Abstract beschrieben - ein Lautsprechersystem zu entwerfen, welches vom Benutzer individuell gewählte Musik in den Räumen abspielt, in denen er sich gerade aufhält. Bei unseren Recherchen über IP-Lautsprechersysteme sind wir auf ein Fraunhofer Projekt aus dem Jahre 2003 gestoßen, welches dies realisiert. Daher haben wir uns für eine Anlehnung an dieses Projekt IPcom entschieden. Im System vom Fraunhofer Institut wird die Synchronisierung und Ansteuerung der Lautsprecher realisiert, indem speziell entwickelte, netzwerktaugliche Lautsprecher an einen Router angeschlossen und direkt über eine eigene IP Adresse angesteuert werden. Zusätzlich wird ein „Follow me“-Mechanismus implementiert, bei dem der Nutzer mittels einer Infrarotmarke in Gebäudekomplexen geortet und nur durch den ihm am nächsten befindlichen Lautsprecher beschallt wird. Zur Veranschaulichung dient Abbildung 2. Da wir aus Gründen mangelnder Hardware nicht in der Lage sind, Lautsprecher direkt an einen Router anzuschließen, werden wir einen Umweg über mehrere Laptops gehen, die mittels Netzwerk untereinander verbunden sind. Das "Follow me"-System wird mit Hilfe von Kameras implementiert, welche an die entsprechenden Laptops angeschlossen sind. Unter "Follow me"-Systemen im allgemeinen sind Mechanismen zu verstehen, bei denen ein Medium einem anderen folgt. Es gibt verschiedene Arten dieses zu realisieren. In den meisten Fällen folgt ein technischer Sensor einem Menschen, um diesem umgebungsspezifische Informationen zu übermitteln. Beispiele hierfür sind unter anderem intelligente Museumsführer oder Ortungssysteme für Personen, innerhalb von Gebäudekomplexen. Die Art und Weise des Sensors kann von System zu System stark variieren. In den meisten Fällen wird die zu beobachtende Person mit einem Sender ausgestattet, welcher dann die Position des Trägers an eine Basisstation übermittelt. Die verwendete Datenübertragung des Senders ist hierbei variabel, denkbar ist zum Beispiel das Senden der Informationen per Bluetooth oder Infrarot, aber auch eine Überwachung per Kamera ist möglich. Zur Veranschaulichung eines Senders dient Abbildung 1.
Technische Umsetzung des "Follow Me"-Systems in unserem Projekt: Das Infrarot Detektionssystem, wie im Falle des IPcom Projekts vom Fraunhofer Institut, ersetzen wir durch ein kameragesteuertes Motion-Tracker System. Als Grundlage hierzu dient uns ein Open Source Projekt namens Motion, welches in der Lage ist, Bewegungen in Räumen wahrzunehmen. Wird eine solche Bewegung mittels Kamera erkannt, löst diese ein Event aus, der beginnt einen kontinuierlich laufenden, synchronisierten MP3-Datenstrom auszulesen. Zum Vergleich der von uns vorgenommenen Abänderungen zum System IPcom vom Fraunhofer Institut dienen die Abbildungen 2 und 3.
Basisplattform Motion zur Implementierung des "Follow Me" Systems: Wie oben erwähnt, verwenden wir zur Implementierung der "Follow me"-Funktion das Open Source Projekt Motion. Dabei handelt es sich um ein Interface zum Ansteuern von Kameras. In diesem sind bereits vier Filter zur Bewegungserkennung implementiert. Motion verwendet hauptsächlich eine Art von Filter zum Erkennen der Bewegung, Kantenerkennungsfilter.
Kantenerkennungsfilter sind in der Lage Kanten zwischen verschiedenen Farben und die Umrisse von Objekten aus Bildern zu extrahieren. Diese Filter können benutzt werden, um Auswahlen zu erstellen und verschiedene künstlerische Effekte zu erreichen. Die meisten der Filter zur Kantenerkennung basieren auf der Analyse von Farbveränderungen und erzeugen dicke Kantenlinien. Sehr gut zu sehen im ersten Teil der Abbildung (Abb. 4 - fig.1), welche die Veränderungen der Farbintensität symbolisch darstellt. Auf der linken Seite der Abbildung 4 befinden sich leichte Veränderungen, welche keine Kanten darstellen. Dort sieht man eine Kante, dargestellt als Änderung der Farbintensität. Der zweite Teil (Abb. 4 - fig.2) zeigt die Stärke der Veränderung der Farbintensität. Dies ist mathematisch betrachtet die erste Ableitung des Graphen im ersten Teil der Abbildung. Ein Algorithmus zur Kantenerkennung muss nun entscheiden, ab welcher Höhe der Ableitung eine Kante als erkannt gilt. Mittels der in Motion implementierten Kantenerkennungsfilter lösen wir ein Event aus, der Musik aus einem laufenden Datenstrom ausliest und abspielt. Die Auslösung des Events erfolgt folgendermaßen: Die Wahl des Filters entscheidet die Art der Eventauslösung. Bei Filter 1 – Filter 3 werden die Bildpixel von Bild zu Bild verglichen. Sollten diese ungleich sein bedeutet dies, dass eine Bewegung stattgefunden hat. Durch diese Ungleichheit wird der Event ausgelöst. Bei Filter 4 funktioniert die Aktivierung ähnlich. Der Filter erzeugt Vierecke um sich bewegende Bildelemente. Sobald ein Viereck erzeugt wird, wird der Event ausgelöst und beginnt den Datenstrom auszulesen und abzuspielen. Die Folgenden Abbildungen zeigen die vier verschiedenen Filter.
Da wir in unserem Projekt zwecks Synchronisation einen Datenstrom erzeugen wollen, mußten wir uns mit diesem Thema auch auseinandersetzen. Unter Streaming versteht man die Übertragung komprimierter Video- und Audiodateien über ein Netzwerk. Beim Streaming werden die Daten nicht auf einmal heruntergeladen, sondern schubweise im Store-and-Forward-Verfahren. Sie kommen beim Anwender also nicht als fortlaufende Datei an, sondern werden in Puffern kurz zwischengespeichert, was zu Beginn der Übertragung einige Zeitverzögerungen verursacht. Dabei sind sowohl Live-Übertragungen als auch spätere Downloads der Daten möglich. Unter dem Store-and-Forward-Verfahren versteht man ein Vermittlungs- und Übertragungsprinzip, bekannt aus der Datenpaketvermittlung, bei der Datenpakete oder Nachrichten über Teilstrecken von einem Netzknoten zum nächsten weitergeleitet und in diesen zwischengespeichert werden, bevor sie an den Endadressaten übertragen werden
Die meisten Datenströme müssen - wie auch in unserem Fall - komplett auf die nötige Anwendung zugeschnitten werden. Anfang des 21. Jahrhunderts haben sich zur allgemeinen Verwaltung der Datenströme sogenannte DSMS (Data Stream Managment Systeme) etabliert. Eine Skizze der Funktionsweise wird von Abbildung 7 symbolisiert. Realisierung des Datenstreaming in unserem Projekts:
Das Datenstreaming wird mittels Client-Server-Prinzip realisiert. Dabei wird die Rolle des Servers und des Clients in diesem Projekt durch die gleiche Software eingenommen. Die Wahl der Rolle wird interaktiv durch den Benutzer getroffen. Dies geschieht durch Eingabe in der Eingabemaske "Servername". Dabei wird die folgende Notation verwendet: Bei leerer Eingabe arbeitet die Software als Server. Wird dagegen ein Rechnername angegeben, arbeitet sie als Client und versucht mit dem angegebenem Rechner eine synchrone TCP/IP - Netzwerkerbindung aufzubauen. Durch bestätigen der Eingabe in dieser Maske werden verschiedene Prozesse der Software in Gang gesetzt. Nimmt die Software die Rolle des Servers ein, wird der Ablauf des Programms in drei Haupthreads aufgeteilt. Dabei übernimmt der erste Thread den Empfang der Kamerabilder und die Erkennung einer Bewegung. Sollte eine Bewegung erkannt werden, spielt dieser Thread auch die im Speicher befindlichen Sounddaten ab. Der zweite Thread stellt die Verbindung über Netzwerk zu den Clients zu Verfügung und startet für jeden verbundenen Clienten einen eigenen kleinen Thread, der das Senden der Sounddaten zu diesen Threads übernimmt. Der dritte Thread kümmert sich um das Parsen einer Playliste, in der der Pfad der abzuspielenden Sounddateien angeben ist. Diese Playliste kann mittels "Winamp" erzeugt werden und muss sich im Directory der ausführbaren Programmdatei befinden. Alternativ kann man die Playliste auch manuel mittels Editor erstellen. Auch das Editieren einer mit "Winamp" erstellten Playliste ist per Editor möglich. Dabei ist zu beachten, dass diese Playlist immer "playlist.m3u" heissen muss! Nachdem dieser Thread die Playliste geparst hat, durchläuft er die einzelnen Lieder und fügt diese stückchenweise in den Speicher, welcher versendet und auf dem Server auch gleichzeitig bei Bewegung abgespielt wird. Dieses Abspielen der Playliste wird so oft wiederholt bis das Programm beendet ist. Nimmt die Software die Rolle eines Clienten ein wird der Ablauf des Programms in zwei Threads aufgeteilt. Dabei verhält sich der erste Thread wie der des Servers. Er übernimmt - wie oben beschrieben - den Empfang der Kamerabilder, das Erkennen von Bewegung und bei Erkennen einer solchen das Abspielen der Sounddaten. Der zweite Thread verbindet sich mit dem Server und empfängt bis zur Beendung des Programms nur die Daten, welche vom Server gesendet werden und kopiert diese Sounddaten in den Speicher, welcher vom ersten Thread abgespielt wird. Um die Funktionsweise der Software zu testen, muss auf zwei Rechnern in einem lokalen Netzwerk die Software gestartet werden. Die Menuführung ist auf Abbildung 12 dargestellt. Auf dem ersten Rechner, welcher als Server fungieren soll, muss die Eingabe der Maske "Servername" leer bestätigt werden. Dadurch wird dem Programm signalisiert, dass es die Rolle des Servers übernehmen soll (Abbildung 13). Anschließend muss eine Bildquelle ausgewählt werden. Beim Testen wurde eine handelsübliche Webcam benutzt (Abbildung 15). Jetzt ist es nötig, einen Filter zur Erkennung der Bewegung zu wählen. Hierbei sind fünf verschiedene Alternativen möglich. Wir raten zur Verwendung des Filters "Detector 4", da dieser in unseren Tests am wenigsten Rechnerleistung erfordert hat (Abbildung 16). Der Start des Clienten auf dem anderem Rechner erfolgt analog zum Starten des Servers. Dabei ist zu beachten, dass die Eingabemaske "Servername" mit dem Rechnernamen des als Servers fungierendem Rechners bestätigt wird (Abbildung 14). Nach der Konfiguration wird bei jeder registrierten Bewegung des Server- oder Clientrechners die Musik abgespielt (Abbildung 17). Die von uns beigefügten Wav-Dateien wurden aus dem Internetradio aufgenommen und geschnitten - damit wir sie probeweise abspielen konnten. Eine vorkompilierte Version des Programms mit Playliste und abspielbaren Wavfiles findet man hier. Den unkompilierten Quellcode findet man hier.
Zukünftig wäre eine Kooperation mit der Gruppe zu Handgestenerkennung denkbar. Die Aktivierung und Deaktivierung der Musik - mit Hilfe spezieller Handgesten - wäre als Benutzerinterface optimal. Des Weiteren müsste der Datenstrom - bestehend aus Wav-Dateien - ins MP3-format konvertiert werden. Die Filterabstimmung könnte auch noch etwas genauer sein, da beispielsweise schon geringe Änderungen der Lichtverhältnisse als Bewegung erkannt werden. Abschliessend lässt sich sagen, dass sich das Projekt als echte Herrausforderung erwiesen hat. Nach anfänglichen Problemen bei der Einarbeitung und Themenfindung für das Themengebiet "MP3 Ströme über IP-Lautsprecher" stiessen wir auf das Projekt IPCom vom Fraunhofer Institut, an welchem wir uns orientiert haben. Die Kontaktaufnahme zu den Projektmitarbeitern erwies sich als schwierig, weswegen wir eigene Wege zur Realisierung finden mussten. Da wir uns das erste Mal mit einem so umfangreichen Projekt beschäftigt haben, hatten wir natürlich mit einigen Schwierigkeiten zu kämpfen. Zum einen war unsere Zeiteinteilung nicht ganz optimal, weswegen es zum Ende sehr knapp wurde. Zum anderen mussten wir feststellen, dass Ideen, die im Vorfeld von uns als gut befunden wurden, nicht realisierbar waren. 07.02.06 An diesem Tag wurden die Endergebnisse von allen Projekten präsentiert. Leider war unser Programm zu diesem Zeitpunkt noch nicht lauffähig, was darin begründet war, dass wir bei der musikabspielenden Funktion eine Flag falsch gesetzt hatten. Dieser eigentlich triviale Fehler hat verhindert, dass das Abspielen der Musikdaten, welche aus einem durch den Datenstream erzeugten Buffer gelesen wurden, möglich war. Der netzwerktechnisch interessante Teil, wie das Auslesen und Versenden von Musikdaten übers Netzwerk sowie das Verbinden von Rechnern mittels Client-Server-Prinzip, war bereits funktionstüchtig. Auch das Erkennen einer Bewegung und dessen Interpretation als Auslöser für Musik funktionierte bereits. Das eigentliche Abspielen der Musik bei einer Bewegung gelang uns leider erst in der Nachbearbeitung. Die Vortragsfolien vom 07.02.06 findet man hier. 24.1.06 Um einen Datenstrom zu erzeugen, wollten wir ein weiteres Open Source Projekt verwenden - den Ambulant Open SMIL Player. Das Ambulantprojekt ist eine verteilte Initiative, die vom niederländischen Centrum voor Wiskunde en Informatica (CWI) in Amsterdam koordiniert wird. Die Zielgruppe dieses Projekts sind die Entwickler von Multimediaprotokollen, -netzwerken und -infrastrukturen. Leider mussten wir feststellen, dass sich die beiden Programme nicht so leicht kombinieren ließen, wie zuerst angenommen. Deswegen wurde diese Idee von uns schnell wieder verworfen. Auch andere Versuche, wie das Abgreifen eines mittels WinAmp (bekanntes Programm zum Abspielen von mp3´s) erzeugten Datenstroms, waren wenig erfolgreich. Die Präsentation vom 24.01.06 findet man hier. 10.01.06 Hier haben wir unseren vorläufigen Prototyp vorgestellt. Dieser war eine Erweiterung des Motion-Projektes um ein Event (MoveEventHandler), welcher die Aufgabe hatte. bei einer erkannten Bewegung eine Funktion (Playsound) auszulösen, welche dann eine hart vordefinierte Wav-datei anspielt. Die Erkennung der Bewegung ist hier beschrieben. Das Problem an dieser Lösung war, dass es nicht möglich war, mit diesem vorläufigen Prototypen eine Syncronisation zwischen mehreren Zimmern (also Rechnern) zu erreichen. Als Lösung hierzu wollen wir an Stelle der Funktion Playsound einen Datenstrom benutzen, welcher dann bei Auslösung des Events ausgelesen und ausgegeben wird. So ist eine Synchronität zwischen den Rechnern gegeben. Um den Prototypen herrunterzuladen, hier klicken und für den zugehörigen Quelltext hier. 13.12.05 Zu diesem Termin wurden von jeder Gruppe Kurzkritiken zu jedem anderen Projekt verfasst, diese findet man hier. Wir arbeiteten zu diesem Zeitpunkt schon an einer Möglichkeit, mit Hilfe des Motion-Projekts Musikausgabe zu starten. 29.11.05 Da wir nicht über IP-fähige Lautsprecher, wie im System von IPCom, verfügten, mussten wir uns eine alternative Lösung überlegen. Wie Abbildung 2 zeigt, wollten für jeden Raum in der Wohnung des Nutzers einen Rechner abstellen, der auf die Bewegungsmeldung der zugehörigen Kamera reagiert und so die Musik startet. Damit beim Zimmerwechsel nicht jedesmal das selbe Lied von vorn beginnt, sollte die Musik zwischen den Rechnern syncronisiert werden. Ausserdem stellten wir das Open Source Projekt Motion vor, bei welchem schon Bewegungsfilter vorhanden waren. Dieses sollte die Grundlage der Bewegungserkennung in unserem System bilden. Die Präsentation vom 29.11.05 findet man hier. 15.11.05 Nach Suche im Internet stiessen wir auf das Fraunhofer Projekt IPCom, welches es ermöglicht, MP3-Datenströme über spezielle IP-Lautsprecher, die man direkt mit einem Router verbinden und auch über IP ansteuern kann, zu verschicken. Ausserdem besitzt es ein Follow-me-System, das die gesuchte Person mittels eines Infrarotsenders orten und nur Lautsprecher in der Nähe dieser Person anzusprechen kann. Dieses Projekt benutzten wir als Vorlage, allerdings wollten wir es mit unserem Projekt ermöglichen, dass die Lieblingsmusik des Nutzers diesem durch seine Wohnung folgt. Des weiteren wollten wir die Infrarotortung durch eine Bewegungserkennung mit einer Kamera ersetzen, die die Musik aktiviert, wenn man das Zimmer betritt. Dazu wurde am 15.11. von uns unsere Referenzenliste vorgelegt. Die Präsentation vom 15.11.05 findet man hier.
Aus Gründen der Übersicht, haben wir unsere Quellen in einem PDF zusammengefaßt. Zum herunterladen hier klicken. Zuletzt aktualisiert: 22. Februar 2006 22:36 |