Sie sind auf Seite 1von 48

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Projektdokumentation
fr die Studienveranstaltung Software-Engineering Projekt I SS 2012
Modulleitung Prof. Dr.-Ing. Heiko Tapken Teilnehmer Maximilian Beckers 447109 Julia Dell 413942 Eduard Walter 402638 Betreuer Prof. Dr. rer. nat.Karsten Morisse Dipl.-Inf. (FH), M.Sc. Benedikt Engelbert

Oliver Braun 391251 Florian Gardewin 412503 Dominik Werner 395380

Julia Chatt 412539 Maximilian Staab 402602 Konstantin Wiesmann 397925

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Inhaltsverzeichnis
1. Das Software-Engineering Projekt 1.1. 1.2. 1.3. Aufgabenstellung Auftraggeber Projektbeteiligte 1.3.1. 1.3.2. 1.4. 1.4.1. 1.4.2. 2. 2.1. Mitgliederliste Betreuer & Ansprechpartner Entwicklungsteam Zattoo 4 4 4 5 5 5 6 6 7 8 8 9 12 12 12 13 14 16 16 16 17 19 19 20 23 24 24 25 28 28 28 29

Motivation fr das Projekt

Planung und Analyse Pluginentwicklung: Anforderungen 2.1.1. 2.1.2. 2.2. 2.2.1. 2.2.2. 2.2.3. 2.2.4. 2.3. 2.3.1. 2.3.2. 2.4. 2.4.1. 2.4.2. 2.4.3. 2.4.4. XBMC Zattoo Warum Scrum? Tailoring Rollenverteilung im Projektteam Ablauf / Arbeitsmeeting Entwicklungsumgebung Konventionen Python XBMC Zattoo API - Testclient ZAPI Funktionen 2.4.4.1. 2.4.4.2 . Session Handling Calls User and Product Management calls

Vorgehensmodell: Scrum

Entwicklungsumgebung & Konventionen

Planung des XBMC-Plugins

3.

Usability 3.1. 3.2 3.3 Usability Test Messbarkeit von Usability Eye-Tracking

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

4.

GUI Konzeption 4.1. 4.2. Allgemeines Gestaltung / Umsetzung 4.2.1. Mockups

31 31 31 31 34 34 34 35 36 36 37 37 38 39 39 40 41 45 46 47

5.

Realisierung des XBMC-Plugins 5.1. 5.2. 5.3. 5.4. Entwicklung eines Prototypen Multilanguage Login Funktionaitt Kanal Zapping 5.4.1. 5.4.2. 5.4.3. 5.5. 5.6. 5.5.1. 5.6.1. 5.6.2. 5.7. Umsetzung Zurck-Spring-Problem Pro und Kontra, ob die Funktion beibehalten werden soll Kompilierung Zeitstrahl und Sprints User Stories und Sprint-Zuordnung

XBMC-HLS Fork Spezifizierung der Anforderungen durch User Stories

Sprintdetails

6. 7.

Ausblick Fazit

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

1. Das Software-Engineering Projekt


Das Modul Software-Engineering Projekt (folgend: SWE-Projekt) findet im fnften Semester des Studiums der Medieninformatik an der Hochschule Osnabrck statt. Das Modul soll die teilnehmenden Studierenden befhigen, ein reales Anwendungsprojekt arbeitsteilig zu planen und innerhalb eines Teams zu realisieren. Die Veranstaltung unterteilt sich hierbei in einen Theorie- und einen Praxisteil. Hufig werden externe Unternehmen als Partner fr das SWE-Projekt hinzugezogen. Fr diese Unternehmen soll im Praxisteil eine spezifische Anwendung entwickelt werden. Diese Dokumentation befasst sich mit dem Praxisteil des SWE-Projekts im Sommersemester 2012 mit dem Thema Zattoo Live TV fr das Open Source Media Center XBMC. Im folgenden Kapitel wird zuerst einmal das Projektumfeld mit Mitgliedern, Betreuern, Ansprechpartnern und der jeweiligen Motivation, gerade dieses Projekt gewhlt / angeboten zu haben beschrieben.

1.1. Aufgabenstellung
Entwickelt werden soll eine Erweiterung fr die Open Source Media Center Software XBMC. Das Plugin soll es ermglichen, live TV-Inhalte vom Internet TV Dienst Zattoo abzurufen und anzeigen zu lassen. Neben der eigentlichen Realisierung der Anwendung liegt in diesem Projekt ein besonderer Schwerpunkt in der Usability der zu entwickelnden Anwendung. Die Applikation sollte auch auf einem groen Bildschirm bersichtlich und intuitiv auftreten und auch mit eingeschrnkten Interaktionswerkzeugen wie beispielsweise einer Fnf-Tasten-Fernbedienung gut bedienbar sein. Der Projektpartner Zattoo stellt den Zugriff auf ihre Streams ber ein Application Programming Interface (folgend: API) zur Verfgung. Die ersten Schritte bei der Verwendung des API werden in einem gemeinsamen Workshop erarbeitet. Die Applikation soll nach ausfhrlichen Tests in ein auslieferbares Format und an Zattoo bergeben werden.

1.2. Auftraggeber
Die Zattoo Europa AG ist eigenen Angaben zufolge mit ber 10 Millionen Nutzern Europas fhrender WebTV-Anbieter.

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Zattoo bietet seine Streamingdienste in sechs Lndern an. Auer linearen Live TV stehen Nutzern in der Schweiz alle Sendungen der letzten drei Monate als Aufzeichnung zur Verfgung. Neben der Internetplattform zattoo.com besteht Zattoos Gerte-Portfolio aus Applikationen fr iOS, Android, Windows Phone 7 und diversen Set-Top-Boxen und Smart TVs.

1.3. Projektbeteiligte
In diesem Abschnitt werden die Mitglieder, Betreuer und Schnittstellen untereinander im Rahmen des SWE-Projekts vorgestellt.

1.3.1. Mitgliederliste
Die unten abgebildete Mitgliederliste gibt einen berblick ber die am Projekt beteiligten Studenten und ihre Kontaktdaten: Name
Maximilian Bernhard Beckers Oliver Braun Julia Chatt Julia Dell Florian Gardewin Maximilian Staab Eduard Walter Dominik Werner Konstantin Wiesmann

Alter
24 27 26 30 27 25 25 27 26

Studiengang & E-Mail Semester


MI6 MI6 MI7 MI7 MI7 MI8 MI8 MI8 TI8 Maximilian.Beckers@hs-osnabrueck.de Oliver.Braun@hs-osnabrueck.de Julia.Chatt@hs-osnabrueck.de Julia.Dell@hs-osnabrueck.de Florian.Gardewin@hs-osnabrueck.de Maximilian.Staab@hs-osnabrueck.de Eduard.Walter@hs-osnabrueck.de Dominik.Werner@hs-osnabrueck.de Konstantin.Wiesmann@hs-osnabrueck.de

1.3.2. Betreuer & Ansprechpartner


Neben dem studentischen Entwicklungsteam stellt die Hochschule jedem Projekt ein Team aus Betreuern zur Verfgung, welche die Projektphase als Ansprechpartner fr das Entwicklungsteam begleiten und einen ordnungsgemen Ablauf sicherstellen sollen.

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Betreuer
Prof. Dr. rer. nat. Karsten Morisse Dipl.-Inf. (FH), M.Sc. Benedikt Engelbert

Fachbereich
Fakultt Ingenieurwissenschaften und Informatik / Medieninformatik Medienlabor | eLCC | Projekt eCULT

Fr das Projekt Zattoo Live TV fr das Open Source Media Center XBMC besteht die Gruppe der Betreuer aus: Neben den Betreuern gibt es bei Zattoo selbst noch einen Ansprechpartner, der fr den Zeitraum des Projekts als Schnittstelle zwischen Entwicklungsteam und Zattoo Europa AG dient: Ralf Kruthoff-Brwer, Zattoo Europa AG

1.4. Motivation fr das Projekt


In diesem Abschnitt wird kurz auf die Motivation jedes Projektmitglieds nach der Leitfrage Warum haben Sie gerade dieses Projekt und kein anderes gewhlt? eingegangen. Danach soll auch die Motivation des Auftraggebers Zattoo nher erlutert werden, ihre Inhalte ber XBMC verfgbar zu machen.

1.4.1. Entwicklungsteam
Name
Maximilian Bernhard Beckers

Motivation
kennenlernen und einarbeiten in Python Erfahrungen mit Streaming und verarbeiten von Streams erste Erfahrungen von dem Entwickeln eines Produktes fr ein echtes Unternehmen machen Entwickeln eines Produktes in einer Gruppe erste Erfahrungen in der Projektarbeit / Leitung Python Streaming Techniken Echtes Produkt entwickeln Arbeiten im Team, Organisation reales Projekt im Team fr ein erfolgreiches und interessantes Unternehmen erarbeiten Design & Usability

Oliver Braun

Julia Chatt

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Julia Dell

Florian Gardewin

Maximilian Staab

neugierig durch Prsentation von Zattoo im 2. Semester Design & Usability kennenlernen von Python arbeiten im Team Erfahrungen im Projektmanagement sammeln kennenlernen von Python arbeiten im Team erstes echtes Produkt entwickeln Interesse an Audio- und Videotechnik Wissenserweiterung ber Schnittstellen-Technologien Erweiterung der Programmierfhigkeiten

Eduard Walter

Dominik Werner

Konstantin Wiesmann

die perfekte Verbindung aus Medien und Informatik aktiver User des XBMC Auseinandersetzung mit Python Arbeit im greren Team kennen lernen Mitarbeit an einem Produkt welches von tausenden Usern genutzt werden knnte erste Erfahrungen im Projektmanagement sammeln Generelles Interesse an Streamingdiensten Auseinandersetzung mit Python Auslieferung eines realen Produktes, kein Forschungsprojekt / keine Machbarkeitsstudie Usability Mitarbeit an einem internationalen Softwareprojekt erstes Projekt mit mehr als 3 Personen Python

1.4.2. Zattoo
Wie schon erwhnt besteht das Zattoo-Portfolio neben der Onlineplattform aus einer Vielzahl an Applikationen fr mobile Gerte, Set-Top-Boxen und Smart TVs. Generell folgt Zattoo hierbei einer Multi-Device-Strategie; Zattoo-Inhalte sollen dem Endkunden auf mglichst vielen Plattformen so komfortabel wie mglich zur Verfgung gestellt werden. Die Media Center-Anwendung XBMC folgt grundstzlich einer sehr hnlichen Strategie. Die aktuelle XBMC-Version steht beispielsweise plattformbergreifend fr Ubuntu/Linux, Windows und Mac OS X zur Verfgung, zudem gibt es XBMC-Versionen fr das AppleTV2 und 7

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

neuerdings auch Portierungen fr den Raspberry Pi und die mobile Android-Plattform. Durch die Vielzahl an Devices auf denen XBMC zur Verfgung steht, ist XBMC fr Zattoo eine sehr attraktive Anwendung, um das eigene Portfolio auszuweiten. Aus dem Bereich Set-TopBoxen ist gerade das AppleTV mit entsprechenden Anforderungen an das Interaktionsdesign als Zielplattform sehr interessant, weshalb Zattoo ein entsprechendes Testdevice fr das SWE-Projekt zur Verfgung stellt.

2. Planung und Analyse


In diesem Kapitel wird der Ansatz des Entwicklungsteams fr die Bearbeitung des SWEProjekts vorgestellt. Darunter fallen das gewhlte Vorgehensmodell samt etwaigen Anpassungen an das Projekt, aber auch die Beschreibung der Schnittstellen zu XBMC und Zattoo, genauso wie die eigentliche Konzeption und Planung des SWE-Projekts.

2.1. Pluginentwicklung: Anforderungen


Ein Plugin, quasi eine Schnittstelle zwischen zwei bestehenden Software-Systemen, bringt whrend der Entwicklung spezifische Anforderungen mit sich, die in einem Softwareprojekt, bei dem eine Stand-Alone-Applikation entwickelt werden soll, nicht unbedingt vorkommen.

Generell ist es so, dass bei der Pluginentwicklung die Flexibilitt gegenber nderungen an den Applikationen, die ber das Plugin verbunden werden sollen, die grte Herausforderung darstellt. Sowohl XBMC als auch Zattoo entwickeln ihre Software bzw. die entsprechenden Interfaces nach auen kontinuierlich weiter, natrlich auch whrend der Entwicklungsphase dieses Projekts. Fr die Planungsphase des Projekts hat dies zur Folge, dass die Informationsbeschaffung aufwndiger gestaltet werden muss, da nicht nur ein einziges Mal Informationen beschafft werden, auf deren Basis dann eine Software entwickelt wird, sondern in regelmigen Intervallen berprft werden muss, ob sich nicht whrend der Entwicklungszeit grundlegende Ablufe gendert haben.

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Auch fr die Kommunikation untereinander stellt sich dadurch die Anforderung, dass gefundene nderungen schnellstmglich innerhalb des Entwicklungsteams bekannt gemacht werden mssen und bestenfalls direkt dokumentiert werden.

2.1.1. XBMC
XBMC, frher als Abkrzung fr X-Box Media Center, mittlerweile aber als Eigenname ohne tieferen Sinn verwendet, ist eine unter den Bestimmungen der Gnu General Public License (GPL v2) erhltliche, klassische Media Center Software fr einen PC bzw. HTPC - mittlerweile auch fr Android und IOS. Klassisch bedeutet in diesem Zusammenhang, dass XBMC mit dem Ziel entwickelt wird, den Nutzern das Abspielen von Videos, Musik, Bildern und anderen Mediendateien lokal, ber ein Netzwerk oder ber das Internet zu ermglichen, blicherweise an einem regulren Fernseher und gesteuert ber eine Fernbedienung. Die Funktionalitt, ein Fernsehsignal ber eine TV-Karte anzuzeigen bzw. ein laufendes TV-Programm anzuzeigen und aufzunehmen, bietet XBMC derzeit (Stand 04.2012) nicht. Das XBMC-Team hat kurz nach Start des SWE-Projekts eine neue Version ihrer Software verffentlicht, XBMC Version 11.0 Eden. Diese wird als Basis fr die Plugin-Entwicklung verwendet. Die fr das Projekt relevanten Module innerhalb von XBMC sind das Modul GUI, das CORE-Modul und das Plugin-API. Im GUI-Modul wird das generelle Aussehen von XBMCPlugins anhand eines auf WindowXML basierenden Frameworks ber XML-Dateien gesteuert.

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Aus dem weitgehend in C/C++ implementierten Core-Modul von XBMC ist fr das SWE-Projekt der Multimedia Video Player, genannt DVDPlayer, relevant. DVDPlayer wurde von den XBMC-Entwicklern auf Basis des Open Source Multimedia-Projekts FFMPEG entwickelt und stellt einen Cross-Plattform-Player bereit, der in der Lage ist, alle momentan gebruchlichen Audio- und Videoformate abzuspielen. Die Plugin-Schnittstelle von XBMC nutzt seit Release der Version 11 keinen selbst entwickelten Pythoninterpreter mehr. Es wird ein externer Python-Interpreter verwendet, der die Pythonversionen von 2.4 aufwrts (ohne Support von Python >= Version 3) untersttzt. Plugins selbst werden als Python-Script implementiert. Fr die Plugin-Entwicklung selbst gibt es noch Anforderungen, die beachtet werden mssen, damit das entwickelte Plugin nach Auslieferung auch im offiziellen Plugin-Repository von XBMC angenommen wird. Diese wren:

Alle Plugins mssen nach den im XBMC-Wiki beschriebenen Grundprinzipien entwickelt werden Es muss jedem Plugin eine Lizenz-Datei beiliegen. XBMC empfiehlt hier die Creative GPL v. 2+-Lizenz fr Plugins Alle Dateien mssen frei und legal sein Die Plugins drfen kein Copyright verletzen Alle Quelldateien mssen mitgeliefert werden, keine pre-kompilierten Dateien Das XBMC-Team behlt sich das Recht vor, das Plugin bei Bedarf zu aktualisieren oder zu entfernen Jedes Plugin hat seinen eigenen Ordner und wird ber eine XML-Datei mit Namen addon.xml beschrieben. Jedes Plugin hat 2 Bilder als Referenz, einmal ein Icon, welches als Datei icon.png mit den Dimensionen 256x256 Pixel zur Verfgung gestellt werden muss und optional eine Datei fanart.jpg, welche Fanart (Wallpaper etc.) zum Plugin enthlt.

Fr das SWE-Projekt ergeben sich auerdem einige wichtige Schnittstellen zur Informationsbeschaffung, die im Folgenden aufgefhrt und kurz beschrieben werden:

10

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

XBMC Wiki: http://wiki.xbmc.org/

Das Wiki von XBMC wird von der XBMC Community und dem Entwicklungsteam gepflegt und dient dem SWE-Projektteam als erste Anlaufstelle fr Informationen rund um das XBMC-Projekt. Dort sind unter anderem auch die Guidelines fr die Plugin-Entwicklung und einige entwicklungsspezifische Themen wie zum Beispiel die Schnittstellen fr Plugins zum XBMC-Core dokumentiert. XBMC Forum: http://forum.xbmc.org/

Im Forum von XBMC knnen spezifische Fragen zu XBMC-Funktionen gestellt werden. Fr das SWE-Projekt wird ein Account fr das Forum angelegt, um mit der XBMCCommunity in Kontakt treten zu knnen. Die Accountdaten: Benutzername: swehsos Passwort: swe12!

XBMC IRC:

Eine weitere Kontaktmglichkeit besteht ber den Internet Relay Chat (IRC), in dem es einen eigenen Chatraum fr XBMC gibt. Auch dort kann man sich mit anderen PluginEntwicklern austauschen und Fragen stellen. Adresse: http://webchat.freenode.net/ Server: irc.freenode.net Raum: #xbmc oder #xbmc-scripting

XBMC Github-Repository:

Die XBMC-Quelldateien sind in einem mit dem Versionierungssystem Git erstellten Repository ffentlich zugnglich. Das Repository erreicht man unter https://github.com/xbmc/xbmc Dort kann bei Bedarf eine lokale Kopie aller Quelldateien heruntergeladen und bearbeitet werden.

11

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

2.1.2. Zattoo
Auch Zattoo stellt den Zugriff auf ihre Inhalte ber ein API zur Verfgung. Die einzelnen Funktionen des API sind ausfhrlich in einem in englischer Sprache verfassten Wiki beschrieben. Das Wiki ist unter http://developer.zattoo.com | Username: hso | Password: Hs0ZaT!99 zu erreichen. Auer dem Zugriff auf das Wiki lsst Zattoo der Projektgruppe noch einen in Python geschriebenen Testclient zukommen, welcher die relevanten API-Methoden implementiert. Das API greift auf eine Testumgebung, die Sandbox von Zattoo zurck, es wird also nicht mit dem eigentlichen Produktivsystem gearbeitet. Trotzdem stehen alle relevanten Funktionalitten zur Verfgung. Kontakt zu Zattoo besteht ber den Ansprechpartner Ralf Kruthoff-Brwer. Dazu wurde vom Projektteam ein Skype-Account fr eventuelle Skype-Konferenzen angelegt: Skype-Username: hsos-swprojekt | Passwort: xboxzatt00

2.2. Das Vorgehensmodell: Scrum


Das SWE-Projekt wird mit Hilfe des agilen Vorgehensmodells Scrum durchgefhrt, welches grundstzlich auf dem iterativ-inkrementellen Vorgehensmodell basiert. Im folgenden Abschnitt wird davon ausgegangen, dass der Leser mit den Grundzgen von Scrum vertraut ist.

2.2.1. Warum Scrum?


Im theoretischen Teil der Veranstaltung hat das Projektteam einige Vorgehensmodelle fr die Softwareentwicklung kennengelernt. Gerade die dort angesprochenen agilen Methodiken und Anstze erscheinen den Projektteilnehmern durchaus sinnvoll und logisch. Da mit Ralf Kruthoff-Brwer ein direkter Ansprechpartner zur Verfgung steht, der auch bereit ist, Zeit in das Projekt zu investieren, ist auerdem eine wichtige Anforderung fr agile Vorgehensmodelle - gute, kontinuierliche Kommunikation mit dem Kunden - erfllt.

12

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Weiterhin ist die Ausgangssituation und somit die Zeitplanung fr das Projekt relativ unklar, da niemand der Projektteilnehmer bisher mit XBMC, der Zattoo-Programmierschnittstelle oder der Programmiersprache Python in Berhrung gekommen ist. Daher kann eine genaue, Zeitplanung anfangs nicht durchgefhrt werden und keine Erfolgsgarantie gegeben werden. Scrum beruht auf der Ansicht, dass dies meist eh nicht der Fall ist, und versucht dieses Problem durch drei Grundprinzipien zu reduzieren, Transparenz, berprfung und Anpassung: Der Projektfortschritt und entsprechende Hindernisse sind immer fr alle Teilnehmer sichtbar, in regelmigen Abstnden werden Funktionalitten geliefert und beurteilt und die Anforderungen werden nach jeder Lieferung neu beurteilt und bei Bedarf angepasst.

2.2.2. Tailoring
Eine der Mglichkeiten, die auerdem zur Wahl von Scrum als Vorgehensmodell gefhrt haben, ist das Tailoring. Dies bedeutet vereinfacht, dass ein Softwareprojekt auf die reellen Anforderungen zugeschnitten werden kann. Artefakte und Ablufe, die nicht bentigt werden, werden aus dem Modell herausgeschnitten oder an die realen Gegebenheiten angepasst, um ein Projekt nicht durch unntige, aber durch ein Vorgehensmodell vorgeschriebene Dokumente o.. aufzublhen. Da das Projektteam nur aus neun Mitgliedern besteht, sind folgende Anpassungen fr das Projekt ntig: Die Sprint-Zeit wird auf eine Woche festgelegt, mit anschlieendem Abschlussmeeting mit dem Zattoo-Ansprechpartner. Die Rollen des Product Owners und des Scrum-Masters werden von einer Person (dem studentischen Projektleiter) ausgefllt. Das Entwicklungsteam wird weiter in Arbeitsgruppen zu entsprechenden Unterbereichen der zu entwickelnden Anwendung unterteilt. Dabei ist diese Einteilung flexibel, d.h. je nach Aufgabenstellung kann die Anzahl der Teammitglieder variieren. Eine Retrospektive wird nur bei Bedarf durchgefhrt. Generelle. nicht-technische Probleme werden soweit mglich direkt geklrt. Wenn Sprint-Ziele vor dem eigentlichen Ende einer Sprints erreicht werden, wird soweit mglich das Abschlussmeeting vorverlegt. Ansonsten wird mit den am sinnvollsten erscheinenden Arbeitspaketen weitergearbeitet.

13

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Ein fester Arbeitstermin wird einmal in der Woche angesetzt, bei Bedarf mehrmals die Woche. An diesem Termin wird das Daily Scrum formell durchgefhrt. Durch die Nutzung einer gemeinsamen Projektplattform (s. Abschnitt Entwicklungsumgebung) werden Arbeitsergebnisse kontinuierlich fr alle Teammitglieder sicht- und berprfbar festgehalten. Die teaminterne Kommunikation auerhalb des Arbeitstermins soll in erster Linie ber die Projektplattform erfolgen. Die Nutzung anderer Kommunikationsmittel (E-Mail, Messenger etc.) bleibt trotzdem erlaubt. Jeder thematische Teilbereich des Projekts hat einen oder mehrere Experten als ersten Ansprechpartner. Wo sinnvoll, werden in der Veranstaltung kennengelernte Entwicklungspraktiken wie Pair Programming angewendet. Das Projektteam versucht, den Zeitplan soweit zu straffen, dass whrend der Klausurenphase im Semester keine weitere Arbeit am Projekt stattfinden muss, damit das Projektteam sich in dieser Zeitspanne voll auf anfallende Klausuren konzentrieren kann. Scrums Timeboxing-Prinzip fr Sprints darf im Notfall durchbrochen werden, wenn z.B. der Ansprechpartner beim Kunden nicht zur Verfgung steht. Dies kann aber nur dann geschehen, wenn sich von beiden Seiten vorher auf einen entsprechend krzeren oder lngeren Sprint geeinigt wird.

2.2.3. Rollenverteilung im Projekt


Wie im Abschnitt Tailoring erwhnt, wird das Projektteam in weitere Unterteams mit spezifischen Aufgabenbereichen unterteilt. Die Aufgabenbereiche sind: GUI-Entwicklung Plugin-Realisierung - XBMC Plugin-Realisierung - Zattoo Generalisten Das GUI-Team setzt dabei den Schwerpunkt auf die Konzeption und Realisierung eines mglichst ansprechenden und intuitiven GUI- und Interaktionsdesigns. Das Team XBMCRealisierung setzt sich im Detail mit den von XBMC zur Verfgung gestellten Funktionalitten auseinander. Das Team Zattoo-Realisierung entsprechend mit den von Zattoo zur Verfgung gestellten Funktionalitten. 14

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Auerdem gibt es noch das Team Generalisten. Diese Gruppe wird besetzt von Teammitgliedern wie z.B. dem Product Owner/Scrum Master, der Aufgaben wie die Dokumentation der Meetings und generelles Projektmanagement erfllen muss, trotzdem aber als Ansprechpartner bei Problemen zur Verfgung steht und bei Bedarf und Zeit seine Arbeitskraft einem Team zur Verfgung stellt. Auch sind in diesem Team die Projektmitglieder vertreten, die sich zum Zeitpunkt der Erstellung noch nicht genau einer Gruppe zuordnen wollten. Scrum Master / Product Owner: Diese beiden Rollen werden wie unter Tailoring beschrieben, von einer Person ausgefllt. In diesem Projekt ist das der Projektleiter Dominik Werner. Team GUI-Entwicklung: Unter Leitung von Oliver Braun als Experten besteht dieses Team aus Julia Chatt und Julia Dell, beides ausgebildete Mediengestalterinnen. Team Plugin-Realisierung - XBMC: Neben Maximilian Bernhard Beckers als Experten befassen sich Eduard Walter und Florian Gardewin mit diesem Bereich. Team Plugin-Realisierung - Zattoo: Da die Zattoo API gut dokumentiert ist, besteht dieses Team nur aus Konstantin Wiesmann, welcher eng mit Maximilian Bernhard Beckers zusammenarbeitet. Team Generalisten: Neben Dominik Werner ist hier noch Maximilian Staab als Springer vertreten. Customer: Der Kunde ist in diesem Projekt Ralf Kruthoff Brwer in Vertretung fr Zattoo. User: Die Benutzer-Rolle wird in diesem Projekt teilweise vom Projektteam selbst, teilweise von Zattoo-Mitarbeitern und fr z.B. Usability-Tests auch von externen Personen bernommen. Geplant ist, die einzelnen Inkremente am Ende jeder Sprint-Woche an Zattoo zu bergeben, woraufhin Ralf Kruthoff-Brwer dann Zattoo-intern Feedback einholt und dieses dem Projektteam zukommen lsst. Auerdem wird jedes neu implementierte Feature dem gesamten Projektteam vorgestellt und von diesem bewertet. Bei spezifischen Tests werden bei Bedarf ausgewhlte Studenten der Hochschule Osnabrck hinzugezogen. Management: Das Management besteht aus dem Projektbetreuer Prof. Dr. rer. nat. Karsten Morisse und als erstem Ansprechpartner fr das Projektteam aus Dipl.-Inf. (FH) / M.Sc. Benedikt Engelbert.

15

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

2.2.4 . Ablauf / Arbeitsmeeting


Das Arbeitsmeeting findet jeden Dienstag ganztgig ab 10 Uhr im Raum SD0005 der Hochschule Osnabrck statt. Zu Anfang des Meetings steht die Informationsphase oder auch das Daily Scrum. Jedes Teammitglied informiert kurz ber den derzeitigen Stand seiner Aufgabe, Hindernisse werden analysiert und bei Bedarf Generalisten oder Experten zu einem Team hinzugefgt, um diese zu bewltigen. Auf Basis der hier gewonnenen Erkenntnisse wird dann die Vorbereitung auf das Meeting mit dem Kunden durchgefhrt. Anschlieend findet eine Arbeitsphase statt, in der in den entsprechenden Teams am Projekt gearbeitet wird. Je nach Terminvorgabe seitens des Kunden findet entweder vor oder nach der Arbeitsphase das Meeting mit dem Kunden statt, in dem die Ergebnisse des letzten Sprints vorgestellt und analysiert werden und die User Stories fr den nchsten Sprint gesammelt werden. Danach findet die Planung des nchsten Sprints statt. Zwischenmenschliche, nicht in erster Linie die zu entwickelnde Software betreffende Hindernisse knnen whrend des Arbeitsmeetings oder auch per Mail im Einzelgesprch mit dem Scrum Master vorgetragen werden, welcher sich dann um eine Lsung bemht.

2.3. Entwicklungsumgebung & Konventionen


Im diesem Abschnitt werden einige vom Projektteam fr die gute Zusammenarbeit aufgestellte Konventionen angefhrt und die Entwicklungsumgebung fr das Projekt vorgestellt.

2.3.1. Entwicklungsumgebung
Um zu den gleichen Ergebnissen zu kommen, soll im Projekt mglichst auch die gleiche Software zur Entwicklung eingesetzt werden. Dazu wird ein System fr die gemeinsame Datenhaltung bentigt. Anbei eine Liste mit der verwendeten Software: IDE: Eclipse Indigo, Version 3.7 installiertes PyDev-Eclipse-Plugin Version 2.4.0.201.202.0116 eGit zur Anbindung an das Versionierungssystem 16

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Versionierungssystem: Git Python-Interpreter-Version: 2.7.2 Projektmanagement (Wiki, Ticketsystem): Redmine Testumgebung: XBMC Version 11.0 Eden, Stable Sources Datenhaltung: Redmine/Dropbox Diagramme: LucidChart

2.3.2 .

Konventionen

Die in diesem Abschnitt folgenden Konventionen wurden vom Scrum Master erstellt und gemeinsam mit dem Projektteam abgesegnet. Die Konventionen stehen unter folgendem Disclaimer des Scrum Masters:ww Disclaimer: Manches hier mag euch wie gesunder Menschenverstand vorkommen. Kurze Antwort: Ist es auch. Lange Antwort: Ist es auch. Erfahrungswerte meinerseits haben aber gezeigt, dass man gewisse Dinge lieber einmal festhlt, damit nicht doch irgendwer kommt und sein eigenes Sppchen kocht und damit alles ins Chaos strzt. Ich hoffe trotzdem, das Projekt auf einer sehr unbrokratischen Ebene halten zu knnen. Arbeitsmeeting Generell besteht bei Arbeitsmeetings Anwesenheitspflicht. Sollte ein Teammitglied keine Zeit haben, meldet es sich in angemessener Zeit vorher beim Scrum Master ab. Jedes Meeting wird im Redmine-Wiki auf einer entsprechenden Seite protokolliert. Der Schriftfhrer wechselt bei jedem Meeting. Vor jedem Meeting wird vom Scrum Master eine Mail mit Raum, genauem Zeitpunkt und evtl. Informationen ber die Tagesordnung an das Projektteam verschickt Bei Diskussionen wird jede Meinung akzeptiert und der gerade Sprechende darf seinen Satz beenden.

17

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Versionierung & Ticketsystem Es wird Git als Versionierungssystem genutzt. Wenn ein Commit gepusht wird, werden Kommentare ber gemachte nderungen hinzugefgt. Generell sollte jede nderung an projektrelevanten Dingen in einem eigenen Ticket festgehalten werden. Allerdings insofern eingeschrnkt, dass nicht jeder Rechtschreibfehler in einem Kommentar ein eigenes Ticket erhlt. Wird aber bestehende Funktionalitt gendert, wird ein Ticket geschrieben/erweitert, damit jeder auf der Aktivittsseite des Redmine-Systems sofort sehen kann, was sich gendert hat. Keine Romane: Kurz und auf den Punkt. Grundsatz fr das Ticketing: Wenn es lnger dauert, ein Ticket zu schreiben als es zu bearbeiten, schreib kein Ticket sondern mach.

Projektplanung Erster Anlaufpunkt fr die Projektplanung ist das Redmine-Wiki. Alles was geplant wird, soll dort festgehalten werden, damit das Projekt auch spter auf einen Blick erfassbar ist. Fr (UML-)Diagramme wird die Webapplikation LucidChart verwendet. Diese bietet die Mglichkeit, kollaborativ an Diagrammen zu arbeiten. Anfallende Dokumente und Daten, die nicht versioniert werden, werden im Redmine-System oder alternativ im gemeinsamen Dropbox-Ordner hochgeladen.

Generelles Der Arbeitsraum wird so verlassen wie er vorgefunden wird. An die aushngende Raumordnung wird sich gehalten.

18

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

2.4. Planung des XBMC-Plugins


In diesem Abschnitt wird auf die spezifische Planung fr das XBMC-Plugin eingegangen.

2.4.1. Python
Fr die Entwicklung des Plugins wird die Skriptsprache Python verwendet, da dies die Standard Programmiersprache der XBMC-Pluginschnittstelle ist. Da das Team vor Projektstart keinerlei Erfahrung mit Python hatte, musses sich zunchst in die Syntax und Logik dieser Programmiersprache einarbeiten und die Grundlagen kennenlernen bevor mit der Entwicklung des Prototypen begonnen wird. Python ist eine Sprache, die im Hinblick auf leicht verstndliche Struktur und Syntax konzipiert wurde.In Python werden beispielsweise Scopes nicht wie aus anderen Programmiersprachen bekannt mit geschweiften Klammern definiert. Die Zuordnung zu einem Scope erfolgt in Python ber eine entsprechende Einrckung. An das Ende einer Anweisung wie zum Beispiel einer IF-Abfrage wird ein Doppelpunkt gesetzt. Eine einfache IF-gesteuerte Ausgabe knnte dementsprechend etwa wie folgt aussehen: if i == 1: print Hallo World! else print Welcome!

Das XBMC-Plugin muss einige Daten aus der ZAPI auslesen und in XML-Dateien speichern, ebenso muss das Auslesen von JSON-formatierten Daten ber die ZAPI realisiert werden. Anstatt die Daten JSON-formatiert auszulesen, knnte auch XML als bertragungsformat herhalten, jedoch zeigen Performance-Tests, dass die Geschwindigkeit der Datenbertragung sich durch Wahl von JSON deutlich steigert und somit die Navigierbarkeit bzw. Benutzerfreundlichkeit innerhalb des Plugins wesentlich verbessert werden kann.

19

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Ist der grundstzliche Aufbau Pythons erst einmal verstanden und die wichtigsten Bibliotheken bekannt, ist der folgende Code-Ausschnitt aus dem Plugin zum Auslesen der Favoriten aus der entsprechenden XML-Datei keine Schwierigkeit mehr: 1. import xml.dom.minidom as xml 2. fav_dir = xbmc.translatePath( special://profile/favourites.xml ) 3. dom = xml.parse(fav_dir) 4. nodeList = dom.getElementsByTagName(favourite) In der ersten Zeile dieses Code-Abschnitts wird die Bibliothek xml.dom.minidom, welche zum Auslesen der XML-Datei bentigt wird, importiert und ber das Schlsselwort as direkt als Variable xml initialisiert. In Zeile 2 wird der Pfad zu der XML-Datei, die die Favoriten des Benutzers enthlt, relativ zu der Stelle im System an der das XBox Media Center installiert wurde, ausgelesen und in der Variable fav_dir gespeichert. Die dritte Zeile dient dazu, die in der Datei stehenden Datenstze ber den vorher importierten XML-Parser in eine DOM-Hierarchie zu konvertieren und in der Variable dom abzuspeichern. Die letzte Zeile des Ausschnitts zeigt dann wie es mglich ist auf die Daten zuzugreifen. In diesem Fall werden alle <favourite>-Tags aus der XML-Datei extrahiert und in der Variable nodeList gespeichert.

2.4.2. XBMC
Alle Plugins, die innerhalb des XBox Media Centers installiert werden, sind in einem Verzeichnis namens xbmc/addons auf der Festplatte organisiert. Je nach Betriebssystem kann der Ort dieses Verzeichnisses wechseln. Beim Betriebssystem OS X (Snow Leopard, 10.6.8) findet sich der Ordner beispielsweise unter $HOME/Library/Application Support/XBMC/addons In dieses Verzeichnis kann bei Bedarf auch per Hand ein selbst erstelltes Plugin-Verzeichnis eingefgt werden.

20

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Auf obigem Bild sieht man die Struktur des Plugins. Jedes Plugin in XBMC muss ber ein Skript namens addon.py verfgen, welches als Main-Klasse des Plugins dient. Weiterhin muss innerhalb der addon.xml das Plugin spezifisch beschrieben werden. Weiter gibt es noch einen Ordner resources, in dem sich beispielsweise eingebundene, externe Bibliotheken oder auch die settings.xml mit den Einstellungen des Plugins innerhalb von XBMC befindet. XBMC stellt dem Programmierer drei wichtige Schnittstellen zur Verfgung. Dies sind xbmcgui, xbmcplugin und xbmcaddon. Im weiteren wird genauer auf diese Schnittstellen eingegangen und erklrt fr welche Funktionalitt diese in dem Plugin verwendet werden. Die Schnittstelle xbmcgui ist, wie es der Name schon andeutet, fr die Umsetzung eines Graphical User Interfaces innerhalb des Plugins zu verwenden. ber diese Schnittstelle lassen sich beispielsweise Fehlermeldungen in Form eines Dialogfensters darstellen, wie es unter anderem bei der Fehlerberprfung des Loginmoduls angewendet wird. 21

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Um den Umgang mit dieser Schnittstelle zu verdeutlichen, soll der folgende Code-Ausschnitt einen kleinen Einblick geben. dialog = xbmcgui.Dialog() dialog.ok(pluginLanguage(40091), pluginLanguage(40099)+:\n+pluginLanguage(login._errormessage)) In der ersten Zeile wird ein Objekt vom Typ xbmcgui.Dialog angelegt. Die zweite Zeile zeigt dann wie ein Dialog mit einem OK-Button angelegt wird. Dieser bekommt lediglich zwei Strings bergeben, die in dem hier angefhrten Beispiel noch entsprechend der im Media Center eingestellten Sprache und anhand des beim Login entstandenen Fehlertyps dynamisch angepasst werden. Ebenfalls eine sehr wichtige Schnittstelle bei der Entwickelung des XBMC-Plugins ist xbmcplugin. Mit Hilfe dieser Bibliothek werden die Listen erstellt durch welche das Plugin dargestellt wird und in welchen auch die Streams visualisiert werden. Die Listen lassen sich entsprechend des ausgewhlten XBMC-Skins in unterschiedlichen Ansichten darstellen. Die Erstellung der Listen selbst wird ber die Schnittstelle xbmcplugin gesteuert, die einzelnen Listenelemente selbst dagegen ber die Schnittstelle xbmcgui. Zur Verdeutlichung folgt der Aufbau der Listenelemente innerhalb des Plugins: # Liste fr alle Channels listItem = xbmcgui.ListItem(pluginLanguage(50003)) listItem.setProperty(Folder, true) xbmcplugin.addDirectoryItem(thisPlugin, sys.argv[0] + ?clist=all, listItem, datalen) . . . xbmcplugin.endOfDirectory(thisPlugin)

22

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Die Funktion addDirectoryItem() in obigem Beispiel dient dazu, ein neues Element in der Liste anzulegen. Mit dem bergabeparameter thisPlugin wird die ID der aktuellen Plugininstanz bergeben. Der nchste Parameter bezeichnet die URL die aufgerufen wird, wenn ein Benutzer das Listenelement auswhlt. In diesem Beispiel wird ein Parameter per GET bergeben um die entsprechende Funktion beim Aufruf auswhlen zu knnen, da XBMC bei jedem Vorgang die addon.py (die eingestellte Main-Klasse) neu mit den entsprechenden Parametern aufruft. Der folgende Parameter bezeichnet die Funktion des Listenelements als listItem, welches in den vorherigen Zeilen angelegt und als Ordner definiert worden ist. Der letzte Parameter ist optional und gibt die Anzahl der Listenelemente an um beim Laden einer Liste einen Fortschrittsbalken anzeigen zu knnen. Ist die Erstellung einer Liste beendet, wird die Methode endOfDirectory() mit der ID des Plugins aufgerufen. Damit wird signalisiert, dass die Liste an genau diesem Punkt abgeschlossen und fertig erstellt wurde. Die letzte von XBMC gestellte Schnittstelle ist xbmcaddon. Diese Schnittstelle wurde in dem Plugin lediglich an einer Stelle genutzt, um auf die Settings des Plugins, welche in einer XMLDatei namens settings.xml im Plugin-Ordner abgespeichert werden mssen, zugreifen zu knnen: settings = xbmcaddon.Addon(id=plugin.video.zattoo) Hier wird das Plugin ber seine ID, welche in diesem Fall den Namen des Ordners im PluginVerzeichnis von XBMC bezeichnet, ausgewhlt, um dann auf die Inhalte der XML-Datei zugreifen zu knnen.

2.4.3. Zattoo API - Testclient


Von Zattoo wurde zu Anfang des Projekts ein Python Skript gestellt, welches die wesentlichen Schnittstellen der ZAPI testweise beschrieben hat. ZAPI-Methoden wie Login, Logout, Senderliste abrufen, oder auch das Anfordern einer aktuellen Stream URL fr einen Testsender konnten damit in Python aufgerufen werden. Dadurch war eine funktionierende Python Bibliothek verfgbar welche im Plugin weiter verwendet werden konnte.

23

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

2.4.4. ZAPI Funktionen


Wie in Kapitel 2 bereits erwhnt, stellt Zattoo ein Interface fr direkten Zugang zu seinem Angebot Namens ZAPI. Neben dem Verweis auf die ausfhrliche Dokumentation unter http://developer.zattoo.com seien hier die im Plugin verwendeten ZAPI-Funktionen beschrieben. Die Kommunikation mit der ZAPI im Allgemeinen ist der sogenannte API call und geschieht via HTTPS GET oder POST, Parameter knnen als UrlEncodedForm Entitt mitgesendet werden. Die ZAPI erwidert einen Call mit einer Response im XML- oder JSON-Format (in diesem Plugin wird das JSON-Format aufgrund besserer Performanceergebnissen verwendet).

2.4.4.1. Session Handling Calls


(Hello, Get Session, Update Session, General Terms, Privacy Policy, Goodbye) POST to https://HOST/zapi/session/hello Der Hello-Request startet eine Session und muss zu Beginn jedes Verbindungsaufbaus zwischen App und ZAPI gesendet werden. Der Aufruf erfolgt mit POST to https://HOST/zapi/ session/hello. Als Parameter mssen die unique App ID (app_tid), die Gerte-UUID (uuid), und die Sprache (lang) bergeben werden. Desweiteren kann optional das Format (format: XML oder JSON), der Gerte-Typ (device_type; nur fr mobile Gerte), die aktuelle Version (app_version) sowie die Auflsung der thumbnails (live_thumbs, program_thumbs) bergeben werden. Als Response wird ein Session Info Objekt empfangen. GET to https://HOST/zapi/session Mit einem Get Session Request knnen Informationen einer bestehenden Session erneuet abgerufen werden. Der Aufruf ist Parameterlos und hat als Response ebenfalls ein Session Info Objekt. https://HOST/zapi/session/update Zum ndern bestimmter Attribute (insb. der Sprache) einer Session wird der Update Session-Request benutzt. Der Aufruf erfolgt mit POST to und dem entsprechenden Parameter. Auch hier wird wieder ein Session Info Objekt zurckgegeben.

24

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

GET to https://HOST/zapi/general_terms GET to https://HOST/zapi/privacy_policy Um die allgemeinen Geschftsbedingungen(General Terms) oder die Datenschutzrichtlinien (Privacy Policy) abzurufen, knnen der Get General Terms- oder der Get Privacy PolicyRequest gesendet werden. Das kann unter Umstnden dann notwendig sein, wenn diese nicht wie blich ber die Website angezeigt werden knnen. Sie werden innerhalb der jeweiligen Response als einfache Textobjekte bermittelt. Die Aufrufe lauten GET to https://HOST/ zapi/general_terms und GET to https://HOST/zapi/privacy_policy POST to https://HOST/zapi/session/goodbye Der Goodbye-Request ist das Gegenstck zum Hello und sollte nach Mglichkeit zum Trennen der Verbindung zum Server genutzt werden.

2.4.4.2. User and Product Management calls


(Create Account, Login, Get Account, Update Account, Forgot Password, Get Catalog, Get Account Token, Logout) POST to https://HOST/zapi/account/new Die User and Product Management calls sind grtenteils selbsterklrend. Mit dem Create Account-Befehl kann ein neuer Zattoo Account erstellt werden. Eine gltige Email-Adresse und ein Passwort mssen dem Aufruf als Parameter mit bergeben werden. POST to https://HOST/zapi/account/login Mittels Login wird der entsprechende User angemeldet (richtiger Login und Passwort vorausgesetzt). GET https://HOST/zapi/account Mit Get Account knnen Informationen ber den eingeloggten User erhalten werden. Die Response ist ist in Form eines Account Info Objekts POST to https://HOST/zapi/account/update

25

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Update Account ermglicht das ndern der Userdaten Login und Passwort (mssen als Parameter bergeben werden) https://HOST/zapi/forgot-password Der Forgot Password-Request ermglicht das Senden eines neuen Passwortes an die entsprechende Email-Adresse. Hier ist der Aufruf sowohl mit GET als auch mit POST mglich. GET https://HOST/zapi/catalog Fr den User verfgbare Premium-Angebote von Zattoo werden mit dem Befehl Get Catalog abgerufen. GET https://HOST/zapi/catalog GET https://HOST/zapi/account/token Um direkt ber die ZAPI Premium-Angebote zu kaufen, wird ein Token bentigt, der mit Get Account Token angefordert werden kann. POST to https://HOST/zapi/account/logout Logout meldet den Zattoo Account ab und trennt ihn von der Session. Channels, EPG Data and Playlist calls (Get Channels, Guide, Search, ProgramDetails) GET https://HOST/zapi/channels Der Get Channels-Request wird genutzt, um eine Liste der verfgbaren Sender zu erhalten (Channel List). Diese ist abhngig vom Login-Status des Users, seinem Account (zb. Premium) und seiner GeoIP. GET https://HOST/zapi/program/guide Der Guide-Request wird gesendet um Informationen ber das Fernsehprogramm im EPG-Format zu erhalten. Die Response ist vom Typ Guide Info und kann durch entsprechende Parameter eingegrenzt werden (Zeit oder Sender). GET https://HOST/zapi/program/search Der Search-Request ist eine Erweiterung des Guide-Request und durchsucht den EPG nach weiteren (spezielleren) Kriterien. Zustzlich kann nach dem Namen der Sendung (title), dem Namen der Episode (episode_title) sowie weiteren Kriterien gesucht werden. Die Search Response enthlt eine Liste von Sendern GET https://HOST/zapi/program/details 26

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Mit dem Program Details-Request knnen weitere Details zum Programm des als Parameter bermittelten Senders abgerufen werden. Live Channels and Recorded Programs calls (Watch, Stop) POST to https://HOST/zapi/watch Der Watch-Request liefert die URL zum eigentlichen Inhalt (Livestream oder aufgenommene Sendungen). Neben dem bentigten Parameter stream_type (eindeutige ID des Streams) sind weitere optionale Parameter mglich: Recording_id: Zum Anschauen aufgenommener Streams aus einer Playlist cid, start, end: Sender, Start- und Endzeit von aufgenommenen Streams cid: Sender-Id zum Anschauen von Livestreams

Zustzlich knnen eine minimale und/oder maximale Datenrate bermittelt werden, die jedoch nicht zwingend von Zattoo bercksichtigt werden. POST to https://HOST/zapi/stop Sendet ein Stoppsignal an den Server, dass der Inhalt nicht weiter gestreamt werden soll.

27

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

3.1. Usability Test


Es gibt verschiedene Mglichkeiten, die Gebrauchstauglichkeit von Anwendungen zu testen. Diese spielen bei der Entwicklung und Verbesserung von Anwendungen eine groe Rolle. Bei Erstellung des Tests haben wir auf folgende Kriterien geachtet: die Aufgaben sollten realistisch und dem Wissen der Teilnehmer angepasst sein, die Aufgaben sollten nicht trivial, aber doch einfach genutzt sein, um in einer vorgegeben Zeit gelst werden zu knnen. Die Formulierungen sollten klar und deutlich sein. Auerdem haben wir auf folgende fnf Fragen bei der Erstellung der Software geachtet: 1. Werden die Benutzer wissen, welchen Effekt ihre Aktionen haben? 2. Werden die Benutzer das notwendige Element sehen? 3. Werden die Benutzer glauben, dass es sich um das richtige Element handelt? 4. Werden die Benutzer die Auswirkungen der Aktion einschtzen knnen? 5. Werden die Benutzer den nchsten Schritt erkennen?

3.2. Messbarkeit von Usability


Es gibt mittlerweile viele verschiedene Anstze zur Messung der Bedienbarkeit. Kriterien fr die Messungen sind zum Beispiel Effizienz, Effektivitt und Zufriedenheit. Daraus kann man schlussfolgern, dass Anwendungen, welche schneller durchlaufen werden, besitzen auch den hheren Usability-Grad. Weitere Anstze sind z.B. die Fehlerhufigkeit, welche ein Nutzer whrend des Durchlaufs macht oder die Erinnerungsfhigkeit an die Struktur. Wir haben uns an die Zufriedenheit und Effektivitt der Probanden orientiert und diese spter analysiert und bewertet. Aus dem Usability Test heraus konnten wir detaillierte Informationen ber die User Experience herausfinden und solche Faktoren wie Nutzerzufriedenheit und Verstndis der Anwendungen beurteilen. Man sollte die Benutzer geschickt steuern und in die gewnschte Richtung lenken. Die Navigation soll schnell erkennbar und nachvollziehbar sein,um zu vermeiden, dass der Nutzer verwirrt wird. Man sollte eine Balance zwischen sthetik und Funktionalitt finden. Elemente, die die meiste Aufmerksamkeit brauchen, mssen gestalterisch so angeordnet sein, dass diese von einen Besucher schnell gefunden werden.

28

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

3.3. Eye-Tracking
Als Eye-Tracking oder Blickbewegungsmessung bezeichnet man eine Methode, mit welcher der Blickverlauf einer Person beim Betrachten eines Gegenstandes oder einer interaktiven Anwendung gemessen wird, um neue Erkenntnisse ber die Wahrnehmung des Produktes/ Programms zu erhalten. Auerdem liefert Eye-Tracking Anhaltspunkte ber das Orientierungsverhalten der Nutzer. Nachdem ein Proband dem Test unterzogen wird und die jeweiligen Aufgabe erledigt hat, sammelt man diese Daten zur Auswertung. Die darauf folgende Analyse des mittels eines Eye-Trackers aufgezeichneten Pfades, in dem die Fixationsdauer kodiert ist, gibt Aufschluss ber Wirksamkeit der dargebotenen Information und Aufschluss ber das Verhalten des Rezipienten. Bei der Kombination von Eye-Tracking und Usability-Test haben wir die Probanden zur Lsung einiger Aufgaben mit unserem System veranlasst und motiviert die Software dabei zu kommentieren. Mit Hilfe von Fragebgen, die unsere Probanden nach dem Test ausfllen sollten, konnten wir wichtige Erkenntnisse, Meinungen sowie Verbesserungsvorschlgen der Nutzer gewinnen. Eine zentrale Anforderung war eine Favoriten Liste, die daraufhin auch implementiert wurde. Eye - Tracking Tests gaben Aufschluss ber die allgemeine Benutzbarkeit von XBMC und unseres Plugins. Im Verlauf der Tests stellte sich heraus, dass fast alle Probanden Schwierigkeiten hatten das Zattoo Live TV zu finden, weil keinen der Probanden das XBMC zuvor Erfahrung mit XBMC hatte. Fast alle Probanden versuchten ihr Glck unter dem Button Programme und nicht unter dem Button Videos. Dies kann man an den folgenden Screenshots erkennen.
Screenshots, die bei dem Eye-Tracking entstanden sind

29

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Ab dem zweiten Start und mit ersten XBMC Erfahrungen konnte unser Plugin jedoch schnell gefunden werden. Dies besttigt auch nochmal unsere Entscheidung uns fr ein Script zu entscheiden. Ein Plugin htte umstndlich ber die Optionen installiert werden mssen, unsere Lsung ist an der Stelle an der man sie erwarten wrde zu finden.

30

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

4. GUI Konzeption
Die Entwicklung einer optisch ansprechenden und intuitiv zu bedienenden Oberflche wurde mit Projektstart ein groer Stellenwert eingerumt. Leider ist dies jedoch mit einigen Fallstricken verbunden, auf die im Folgenden nher eingegangen wird.

4.1. Allgemeines
XBMC unterscheidet zwischen sogenannten Scripts und Plugins. Fr die GUI Entwicklung ist das relevant, da nur Plugins volle Gestaltungsmglichkeiten bieten. Allerdings sind Scripts sehr viel einfacher zu installieren und vor Allem auch in der erwarteten Kategorie zu finden, unter Video Plugins. Im Hinblick auf die Anforderung von Zattoo auf mglichst vielen Gerten zur Verfgung zu stehen entschieden wir uns fr ein Script.

4.2. Gestaltung / Umsetzung


Durch die Entscheidung fr ein Script im XBMC Sinne waren uns bei der GUI Gestaltung enge Grenzen gesetzt. Das Look & Feel ndert sich je nach verwendeten Skin. Dennoch haben wir Mockups erstellt die zeigen wie man eine schlanke, moderne und intuitiv zu bedienende Oberflche gestalten knnte. Dabei bedienten wir uns Stilmitteln wie Coverflow und kontextabhngigen Mouseover Aktionen.

4.2.1. Mockups

31

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

32

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

XBMC verwaltet seine Mens intern mit Listen. Allerdings werden diese nicht zwangslufig auch als Listen dargestellt. Im verwendeten Confluence Skin knnen die Listeneintrge auch als Galerie oder in Kacheln angezeigt werden. Innerhalb des von XBMC gesetzten Rahmen ist die GUI nach dem In drei Klicks zum Ziel Prinzip gestaltet. Unabhngig davon ob der Nutzer eingeloggt ist oder nicht bedarf es nicht mehr als 3 Klicks um zur Senderauswahl zu gelangen. Neben rein gestalterischen Aspekten spielt natrlich auch die Benutzbarkeit eine Rolle. Comfort Funktionen wurden von Usern gewnscht und von uns auch umgesetzt. So gelang eine im XBMC Rahmen schlanke Oberflche, deren Nutzbarkeit wir mit Usability Tests besttigt haben.

33

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

5. Realisierung des XBMC-Plugins


Im folgenden Kapitel wird nun auf die konkrete Implementierung des Projekts eingegangen.

5.1. Entwicklung eines Prototypen


Um bereits in der Anfangsphase des Projekts auf mgliche Hindernisse und Probleme aufmerksam zu werden wurde mit der Bereitstellung der Zattoo API umgehend ein erster Prototyp einer XBMC-Plugins entwickelt. Hauptaugenmerk der Prototypenentwicklung lag hierbei darauf, die generelle Streamingfunktionalitt von HLS-Streams innerhalb von XBMC zu testen und von diesen Ergebnissen ausgehend die weitere Projektplanung einzuleiten. HLS - eine Abkrzung fr HTTP Live Streaming - ist ein von dem Unternehmen Apple Inc. im Rahmen von Quicktime X entwickeltes, auf HTTP basierendes Protokoll zum linearen Streaming von Medien ber das Internet. Grundstzlich wird dabei ein Stream in eine Sequenz von kleinen Dateidownloads aufgeteilt, wobei jede dieser Dateien einen Teil des Medienstreams enthlt. Auf Empfngerseite wird am Anfang einer Streamingsitzung eine m3u8-Playlist mit den Metadaten des Streams heruntergeladen, darunter auch diverse Substreams in z.B. anderer Qualitt. Auf Basis dieser Daten wird der Stream dann auf Clientseite abgespielt, was zum Beispiel den Vorteil mit sich bringt, dass auch whrend des Streamings die Qualitt schnell gendert werden kann, ohne den Stream neu starten zu mssen. Es wurde schnell festgestellt, dass HLS Streams nur bedingt kompatibel waren mit dem XBMC. Die automatische Bitrate Anpassung funktionierte nicht, dadurch resultierte nur ein Bild mit der minimalen Bitrate. Zudem neigte der Stream oft dazu einfach abzubrechen.

5.2 . Multilanguage
XBMC bietet eine einfache Mglichkeit an Plugins mehrsprachig zu entwickeln. Dazu wird im Unterordner resources/language/<Lndercode>/ eine string.xml hinterlegt, welche die Strings in der jeweiligen Zielsprache enthlt, gekoppelt an fest definierte IDs. In der resources/language/German/strings.xml liegen dann z.B. die deutschen bersetzungen.

34

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Auszug resources/language/German/strings.xml <?xml version=1.0 encoding=utf-8 standalone=yes?> <strings> <string id=30001>Benutzername</string> <string id=30002>Passwort</string> <string id=30003>Nicht einloggen</string> </strings> Auszug resources/language/English/strings.xml <?xml version=1.0 encoding=utf-8 standalone=yes?> <strings> <string id=30001>Username</string> <string id=30002>Password</string> <string id=30003>Do not login</string> </strings> ber die Methode pluginLanguage(<String-ID>) wird vollautomatisch der String aus der passenden bersetzungsdatei zurckgegeben, abhngig davon welche Sprache der Benutzer in den Systemeinstellungen von XBMC eingestellt hat.

5.3. Login Funktionaitt


Ein wichtiger Bestandteil unserer Vereinbarung mit Zattoo war es, dass sich die Benutzer einloggen mssen bevor sie Zugriff auf die Live TV Streams bekommen. Realisiert wird dieses Feature primr ber die ZAPI Funktionen POST to https://HOST/zapi/account/login sowie POST to https://HOST/zapi/account/login. Um nicht bei jedem Plugin Start die Login Informationen neu eingeben zu mssen werden diese zwischen den Sessions in einer XML Datenbank gespeichert. XBMC bietet diese Funktionalitt ber die xbmcplugin.setSetting(p luginID,VariablenName) Schnittstelle an. Dadurch wird eine resources/settings.xml im Verzeichnis des Plugins angelegt. ber xbmcplugin.getSetting(pluginID,VariablenName) lassen sich dann gespeicherte Variablen wieder auslesen.

35

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Das Plugin erkennt beim Starten ob Login Daten schon hinterlegt sind. Ist dies nicht der Fall sieht der User nur ein Listenelement mit dem Namen Login ber welches dann das Einstellungsfenster, mit der Mglichkeit der Eingabe der Daten, aufgerufen wird. Sind ein Benutzername und Passwort gespeichert wird versucht mit diesen sich beim Zattoo Server anzumelden. Ist ein Login erfolgreich zeigt das Plugin das eigentliche Hauptmen an, anderweitig eine entsprechende Fehlermeldung warum der Login gescheitert ist. Im weiteren befindet sich der Login in den Settings des Addons um sich evtl. mit einem anderen Name einzuloggen. Die Settingoption von XBMC ist standardmig ber die rechte Maustaste zu erreichen und wird ber die settings.xml Konfiguriert.

3.4. Kanal Zapping


Unter Zapping stellt sich der Benutzer das vor- und zurck-Schalten zwischen den TV Kanlen vor. In XBMC wrde das bedeuten, dass der Benutzer die vor- und zurck-Taste des Players verwenden will, die eigentlich fr das springen in einer Playlist gedacht sind, um einen Sender weiter oder zurck zu schalten.

5.4.1. Umsetzung
Daher liegt es nahe, die Sende-Streams in eine Playlist zu legen. Da die zustndige Xbox API leider nur die Mglichkeit vor gibt, eine angelegte Playlist komplett ab zu spielen und nicht, einen einzelnen Titel daraus gezielt auszuwhlen, ergibt sich das erste Problem: Der angewhlte Sender muss an die erste Stelle in der Playlist gesetzt werden und die anderen Sender mssen relativ zu diesem Sender an der richtigen Stelle in der Playlist zu finden sein, sodass der Benutzer bei vor- und zurck-Springen die richtigen Sender zu sehen bekommt. Bei klicken auf den gewnschten Sender wird daher eine Playlist aufgebaut, die genau diese Kritrien aufweist. 36

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

5.4.2. Zurck-Spring-Problem
Das wesentlich grere Problem verhlt sich wie folgt: Da XBMC fr persistente Daten, wie etwa Film- oder Musikbibliotheken, ausgelegt ist, ist auch der Player von XBMC nicht fr die Wiedergabe von Streams gedacht. D.h. beim Drcken auf die Vorwrts-Taste springt der Player zwar auch bei Internet-Streams ohne Probleme einen Titel weiter, beim Drcken auf Zurck-Taste wird allerdings erst eine Unterscheidung gemacht. Ein exemplarischer Pseudo-Code macht diesen Vorgang klar: Anfang Springe zurck wenn (aktuelle Abspiellzeit > 1 Sekunde) { Springe zurck zum Anfang des aktuellen Titels } sonst { Springe zum letzten Titel } Ende Springe zurck

Da Zattoo-Fernseh-Streams keine Download-Streams, sondern echte Internet-Streams sind, ist es nicht mglich, darin zu einem anderen Zeitindex zu springen. Dies verursacht zwar keinen Fehler, allerdings kann der Player auch niemals erfolgreich zum Beginn des aktuellen Titels zurckspringen, sodass nach Ende, der ersten Sekunde in einem Sender, nichts mehr bei Drcken auf zurck passiert.

5.4.3. Pro und Kontra, ob die Funktion beibehalten werden soll


Da das Problem nicht bei der eigentlichen Implementierung der Funktion Zapping, sondern beim Player liegt, kann es so erst mal nicht einfach behoben werden. Allerdings ist es auch mglich, dass der Player von XBMC in einer spteren Version noch lernt Internet-Streams richtig zu interpretieren. Daher ist es theoretisch mglich, dass sich das Problem ohne weiteres Beitun von unserer Seite lst. Auf der anderen Seite ist es allerdings auch mglich, dass der Benutzer verwirrt ist, wenn er zwar vor, aber nicht zurck zappen kann.

37

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

Daher folgen nun einige Pro- und Kontrapunkte, ob es dennoch Sinnvoll ist, die fehlerhafte Funktion im Plugin zu behalten. Pro
Eine sptere XBMC Version kann mglicher Weise Live-Streams interpretieren Weiter Schalten funktioniert Zurck Schalten funktioniert in der ersten Sekunde (Fehler fllt beim schnellen Zappen nicht auf )

Kontra
Mglicher Weise wird der Fehler aber auch nie behoben Benutzer wird verwirrt Bugs knnen eine Software unvollstndig erscheinen lassen

Es gibt also Punkte fr und gegen die Entscheidung, das Zapping fehlerhaft im Plugin zu lassen. Es wre eventuell sinnvoll, den Code zum Zappen auskommentiert im Code stehen zu lassen, um ihn spter zu implementieren, sobald der XBMC Player auch fr InternetStreams optimiert wird.

5.5. XBMC-HLS Fork


Recherchen zu der nicht vollstndigen Kompatibilitt der Zattoo Streams durch das XBMC ergaben, dass das XBMC das HTTP Live Streaming nicht vollstndig untersttzte. Weitere Recherchen brachten zutage, dass es aber schon seit lngerer Zeit einen Patch gab, der dieses Problem lst. Jedoch wurde dieser Patch noch nicht vom XBMC Entwickler Team implementiert. Aufgrund dessen wurde die Entscheidung gefllt diesen Patch selbst zu implementieren um zu testen ob eine vollstndige HLS Kompatibilitt im realisierbaren Rahmen lag. Das Patchen und anschliessende Kompilieren klappte unter Windows und Mac OSX sehr schnell, und es zeigte sich, dass der Patch dem XBMC dazu verhalf HLS Streams richtig abzuspielen. Somit wurde gezeigt, dass es mglich ist HLS Streams fehlerfrei zu untersttzen und das ein zuknftiges offizielles XBMC Release mit HLS Kompatibilitt im Rahmen des Mglichen liegt.

38

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

5.5.1. Kompilierung
Da es gerade in der spteren Projektphase neue Builds von XBMC gab mussten die Updates jeweils fr die entsprechenden Systeme neu kompiliert werden. Kompiliert wurde dann die XBMC 12 Alpha um sicher zu gehen dass das Plugin fr einen zuknftigen Release von XBMC lauffhig ist. Zumal die 12 Version von XBMC die Entschlsselung der Streams untersttzt die Seitens Zattoo im Laufe des Projekts zugefgt wurde. Probelme traten oftmals bei der Kompilierung bestimmter Forks bspw. der Version fr IOS auf. Die Entsprechenden Dependencies wurden oftmals falsch gesetzt und machten ein mehrmaliges Kompilieren und widerholen der Schritte notwendig bis eine fehlerfreie Version erstellt werden konnte.

5.6. Spezifizierung der Anforderungen durch User Stories


Wie schon erwhnt, werden bei Scrum hufig User Stories als Mittel zum Festhalten der Anforderungen verwendet, so auch in diesem Projekt. Um eine kleine bersicht ber das Projekt zu bieten, folgt in diesem Abschnitt erst einmal ein Zeitstrahl mit dem Projektzeitraum und der Einteilung in Sprints. Darauf folgt eine Liste aller User Stories mit entsprechender Zuordnung zu einem Sprint. Danach werden die einzelnen Sprints mit entsprechenden Ablufen im Detail erklrt.

39

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

5.6.1. Zeitstrahl und Sprints

40

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

5.6.2. User Stories & Sprintzuordnung


1) Als Kunde mchte ich, dass eine Analyse ber die Streamingfhigkeit von Zattoo-Inhalten ber das Xbox Media Center durchgefhrt wird, um anhand der Ergebnisse die weitere Projektgestaltung ausarbeiten zu knnen. 2) Als Kunde mchte ich, dass die Oberflche der Anwendung mglichst intuitiv ist, da mein Kundenstamm sehr gro ist und sich aus einer sehr heterogenen Gruppe zusammensetzt, die nicht technikerfahren sein muss. 3) Als Nutzer mchte ich die Streams von Zattoo innerhalb meiner XBMC Anwendung anschauen knnen, da ich XBMC als Media Center nutze. 4) Als Nutzer mchte ich die Streams in geeigneter Qualitt ansehen, damit ich mir keine verpixelten Streams ansehen muss. 5) Als Nutzer mchte ich in einer Listenansicht sehen, was gerade auf welchem Sender luft, um auf einen Blick das derzeitige Fernsehprogramm sehen zu knnen. 6) Als Nutzer mchte ich in der Listenansicht ein kleines Bild mit einem Ausschnitt der Sendung sehen, die gerade luft, damit ich mir im Zweifelsfall sicher sein kann, dass es auch die gewnschte Sendung ist. 7) Als Nutzer mchte ich nach dem Start des Plugins die Mglichkeit haben, mich mit meinen Logindaten bei Zattoo anzumelden, da ich sonst keine Streams ber XBMC empfangen kann. 8) Als Nutzer mchte ich nach dem Login eine Liste mit Kategorien fr Sender angezeigt bekommen, um nicht lange nach dem Sender den ich sehen will suchen zu mssen. 9) Als Nutzer mchte ich, wenn ich whrend ich einen Stream gucke auf die vorheriges/ nchstes-Elemente klicke, zwischen den Sendern zappen, damit ich mglichst intuitiv die Kanle wechseln kann. 10) Als Nutzer mchte ich meine Sender-Favoriten in einem entsprechenden Ordner speichern und auswhlen knnen, damit die Schritte bis zum eigentlichen Fernsehen mglichst minimiert werden. 11) Als Kunde mchte ich, dass der entwickelte XBMC-Fork auf mglichst vielen Devices zur Verfgung steht, um mein Portfolio grtmglich auszuweiten. 12) Als Kunde mchte ich, dass XBMC in der Lage ist, verschlsselte Streams abzuspielen, da ich meine Inhalte verschlsselt anbieten mchte. 13) Als Kunde mchte ich eine Projektdokumentation, um evtl. spter darauf zurckgreifen zu knnen, wenn etwas unklar ist. 41

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

1. US1: Als Kunde mchte ich, dass eine Analyse ber die Streamingfhigkeit von ZattooInhalten ber das Xbox Media Center durchgefhrt wird, um anhand der Ergebnisse die weitere Projektgestaltung ausarbeiten zu knnen. 1.1. Sprints nr: 1 - 3 1.2. Analyse Aufbau XBMC, erste Tests (2) 1.3. Python erlernen (1) 1.4 Prototyp erstellen (3) 1.5. => Folge-Userstory: 3 2. US2: Als Kunde mchte ich, dass die Oberflche der Anwendung mglichst intuitiv ist, da mein Kundenstamm sehr gro ist und sich aus einer sehr heterogenen Gruppe zusammensetzt, die nicht technikerfahren sein muss. 2.1. Sprints nr: 1 - 14 2.2. AP: Konzeption & Analyse (1-5) 2.2.1. Fazit: Wenig Spielraum 2.3. Mockuperstellung (6-7) 2.4. Vorbereitung Usability-Tests (8-9) 2.5. Testdurchfhrung (10-12) 2.6. Auswertung(13-14) 3. US3: Als Nutzer mchte ich die Streams von Zattoo innerhalb meiner XBMC Anwendung anschauen knnen, da ich XBMC als Media Center nutze. 3.1. Sprint nr: 4 3.2. Testclient in XBMC-Plugin umsetzen 3.3 Fazit: Bug besteht, dass die Auflsung nicht angepasst wird. 3.4 => Folgestories: 4, 5 4. US4: Als Nutzer mchte ich die Streams in geeigneter Qualitt ansehen, damit ich mir keine verpixelten Streams ansehen muss. 4.1 Sprints: 5 - 15 4.2 Analyse Streaming-Bug (5-6) 4.3 Recherche Lsungswege (7-8) 4.4 Test: Pull-Request, Fazit: erfolgreich (9) 4.5 Kompilieren: OSX / Windows / Linux (10-13) 42

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

4.6 Tests (14-15) 4.7 Fazit: Grter Showstopper. 5. US5: Als Nutzer mchte ich in einer Listenansicht sehen, was gerade auf welchem Sender luft, um auf einen Blick das derzeitige Fernsehprogramm sehen zu knnen. 5.1 Sprint: 5-7 5.2 AP: Einbau rudimentres EPG 5.3 Fazit: Aktualisierungsproblem, muss nicht weiter bearbeitet werden, weil XBMC es von der internen Struktur her nun mal nicht anbietet (Datenbank kann nicht einfach lschen etc.). Kunde will auf Weiterentwicklung bei XBMC warten. 6. US6: Als Nutzer mchte ich in der Listenansicht ein kleines Bild mit einem Ausschnitt der Sendung sehen, die gerade luft, damit ich mir im Zweifelsfall sicher sein kann, dass es auch die gewnschte Sendung ist. 6.1 Sprint: 7 6.2 Holen der Bilder von ZAPI, mit gemacht im Rahmen von US5. 6.3 Fazit: Aktualisierungsproblem, Bilder werden geladen aber gecached. berschreiben mit aktuelleren Bildern nicht mglich. Ausweichen auf statische Sender Logos. 7. US7: Als Nutzer mchte ich nach dem Start des Plugins die Mglichkeit haben, mich mit meinen Logindaten bei Zattoo anzumelden, da ich sonst keine Streams ber XBMC empfangen kann. 7.1 Sprints: 10 - 12 7.2 Loginfunktionalitt einbauen 7.3 Generator: UUID 7.4 Ausfhrliche Tests 7.5 Optimierungen 7.6 Fazit: Login Funktionalitt implementiert. 8. US8: Als Nutzer mchte ich nach dem Login eine Liste mit Kategorien fr Sender angezeigt bekommen, um nicht lange nach dem Sender den ich sehen will suchen zu mssen. 8.1 Sprints: 13 - 14 8.2 Analyse Mglichkeiten im Rahmen von XBMC das Zattoo-Kategoriesystem abzubilden 43

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

8.3 Einbau Funktionalitt 8.4 Fazit: Kategorien als Unterordner realisiert. Kategorienamen direkt ber die ZAPI aufrufbar und mit entsprechenden Sendern befllbar. 9. US9: Als Nutzer mchte ich, wenn ich whrend ich einen Stream gucke auf die vorheriges/nchstes-Elemente klicke, zwischen den Sendern zappen, damit ich mglichst intuitiv die Kanle wechseln kann. 9.0 Sprint: 16 9.1 Einbau Funktionalitt 9.2 Test 9.3 Fazit: Vorwrst schalten funktioniert, zurck schalten jedoch nicht, da XBMC auf den Anfang des Streams schalten mchte. 10. US10: Als Nutzer mchte ich meine Sender-Favoriten in einem entsprechenden Ordner speichern und auswhlen knnen, damit die Schritte bis zum eigentlichen Fernsehen mglichst minimiert werden. 10.0 Sprints: 15-16 10.1 Einbau Funktionalitt 10.2 Fazit: Favoriten Ordner implementiert mithilfe der Original XBMC Favoriten Funktion 11. US11: Als Kunde mchte ich, dass der entwickelte XBMC-Fork auf mglichst vielen Devices zur Verfgung steht, um mein Portfolio grtmglich auszuweiten. 11.0 Sprints: 14-17 11.1 Kompilieren auf diverse Betriebssystem 11.2 Fazit: Fork erfolgreich kompiliert fr Windows, Linux, OSX, AppleTV. XBMC auf IOS allerdings nur mit Jailbreak. 12. US12: Als Kunde mchte ich, dass XBMC in der Lage ist, verschlsselte Streams abzuspielen, da ich meine Inhalte verschlsselt anbieten mchte. 12.0 Sprints: 10 - 11 12.1 Festgestellt, dass die stabilen XBMC 11.0 Sources neue Zattoo Verschlsselung nicht untersttzen. 12.2 Tests mit Alpha-Version v. XBMC-Github-Repository 12.3 Fazit: 12er Alpha Version kompatibel zur Verschlsselung, jedoch manchmal instabil. 44

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

13. Als Kunde mchte ich eine Projektdokumentation, um evtl. spter darauf zurckgreifen zu knnen, wenn etwas unklar ist. 13.0 Sprints: Projektbegleitend, Verweis aufs Wiki. 13.1 Erstellung Dokumentation, Klassendiagramme, Zeitplan, UI Mockups

5.7. Sprintdetails
???????????????

45

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

6. Ausblick
Das Zattoo Plugin erweisst sich gerade auf Devices wie dem ATV als eine sinnvolle und ansprechende Ergnzung zu den vorhandenen Features von XBMC. Auch wenn die Streamingdienste in Deutschland seitens der Privatsender anders positioniert sind als in der Schweiz bietet das Zattoo-Plugin gerade bei groen Sportevents der ffentlich Rechtlichen Fernsehsender eine flexible Mglichkeit des Empfangs. Zumal der Empfang hochaufgelster Inhalte auch in Deutschland meist mit Kosten verbunden ist. Die Zukunft des Plugins ist leider mitunter auf neuere Versionen XBMCs angewiesen. Wie erwhnt verfgen momentane Builds von XBMC keinen nativen HLS-Support. Das es jedoch bereits eine Implementation gibt fr die Untersttzung lsst darauf schlieen das diese auch in zuknftigen Releases dann mit eingebunden wird. Eine solche Implementation seitens der XBMC-Entwickler-Community lsst vielleicht auch Spekulation um weitere Features in Richtung Streaming aufkommen, so dass evtl. fr das Zapping-Problem eine Lsung gefunden werden kann. Da es sich bei XBMC jedoch um eine Open Source Software handelt und es keine feste Roadmap der Entwickler gibt sind Aufschlsse auf neue Versionen weder Abschtzbar noch sind evtl. zuknftige Features abzusehen. Einzig eine Eigeninitiative selbst in Richtung XBMC zu entwickeln wre vermutlich eine Alternative einfluss auf zuknftige Implementationen zu haben und sie den eigenen wnschen anzupassen.

46

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

7. Fazit
Abschliessend lsst sich sagen, dass das Projekt zu einem erfolgreichen Ergebnis gefhrt werden konnte. Alle Muss Anforderungen wurden nach Kundenanforderung umgesetzt und implementiert. Zustzlich gelang es auch einige Kann Anforderungen, wie eine Favoriten Liste einzubauen. Die Arbeit in einem greren Team erwies sich als komplexer als zunchst erwartet. Durch genaue Planung und Umsetzung unserer Vorgaben entwickelte sich jedoch schnell eine Dynamik und ein gutes Arbeitsumfeld. Dabei war der regelmige Kontakt und Austausch mit Ralf Krutthoff-Brwer, Software Entwickler bei Zattoo, und Benedikt Engelbert, Projektleiter an der Hochschule, sehr hilfreich. Viele der im Verlauf dieser Dokumentation beschriebenen Probleme konnten durch gesammeltes Know How der Projektmitglieder gelst werden. Das fhrte auch dazu, dass wir uns mit Themen beschftigten, die im Vorfeld nicht unbedingt zu erwarten waren Kompilierung und Patchen eines eigenen XBMC Forks beispielsweise. Die Veranstaltung Software Engineering Project gibt einen guten Einblick und Vorgeschmack auf das, was uns im Rahmen des Abschlusssemesters und auch danach erwartet. Sie ist eine gute Vorbereitung und hilft den Praxisschock im Unternehmen zu verringern.

47

ZATTOO LIVE TV FR DAS OPEN SOURCE MEDIA CENTER XBMC

8. Klassendiagramm

48