Einsatz von IPTV zur Übertragung und Darstellung von Echtzeitdaten

Transcrição

Einsatz von IPTV zur Übertragung und Darstellung von Echtzeitdaten
Einsatz von IPTV zur Übertragung und
Darstellung von Echtzeitdaten
Maria I. Hauer
DIPLOMARBEIT
eingereicht am
Fachhochschul-Masterstudiengang
Digitale Medien
in Hagenberg
im September 2009
© Copyright 2009 Maria I. Hauer
Alle Rechte vorbehalten
ii
Erklärung
Hiermit erkläre ich an Eides statt, dass ich die vorliegende Arbeit selbstständig und ohne fremde Hilfe verfasst, andere als die angegebenen Quellen
und Hilfsmittel nicht benutzt und die aus anderen Quellen entnommenen
Stellen als solche gekennzeichnet habe.
Hagenberg, am 20. September 2009
Maria I. Hauer
iii
Inhaltsverzeichnis
Erklärung
iii
Vorwort
vii
Kurzfassung
viii
Abstract
I
ix
Einführung und Grundlagen
1 Einleitung
1.1 Motivation . . . . . . . .
1.2 IPTV . . . . . . . . . .
1.2.1 IPTV Definition
1.2.2 IPTV Technik . .
1.3 Gliederung der Arbeit .
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
2
3
3
4
14
2 Stand der Technik
2.1 Personalisierung & Interaktivität . . . . . . . . . . . . . .
2.2 IPTV Anbieter . . . . . . . . . . . . . . . . . . . . . . . .
2.3 IP Set-Top Boxen . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Arten von IP Set Top Boxen . . . . . . . . . . . .
2.3.2 Funktionalität . . . . . . . . . . . . . . . . . . . . .
2.3.3 Physische Schnittstellen . . . . . . . . . . . . . . .
2.4 IPTV Systeme . . . . . . . . . . . . . . . . . . . . . . . .
2.4.1 Dreambox DM 800 HD PVR als Broadcast System
2.4.2 Ocilion als Unicast System . . . . . . . . . . . . .
2.4.3 aonTV als Multicast System . . . . . . . . . . . . .
2.4.4 Vergleich der Systeme . . . . . . . . . . . . . . . .
2.4.5 Trend . . . . . . . . . . . . . . . . . . . . . . . . .
2.5 Andere Technologien . . . . . . . . . . . . . . . . . . . . .
2.5.1 Multimedia Computer . . . . . . . . . . . . . . . .
2.5.2 Multimediale Mobiltelefone . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
15
17
18
19
22
23
25
25
27
31
32
36
37
37
37
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
iv
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Inhaltsverzeichnis
2.5.3
v
IP Fernsehgeräte . . . . . . . . . . . . . . . . . . . . .
3 Zukunft des IPTV
3.1 Die nahe Zukunft von IPTV . . . . . .
3.1.1 Internet am Fernsehbildschirm
3.1.2 Yahoo Widget Channel . . . .
3.1.3 Zukunft für Internet am TV . .
3.2 Zukunftsvisionen . . . . . . . . . . . .
II
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Praktische Arbeit: Sports Notification System
4 Entwurf und Konzept
4.1 Ziele der Anwendung . . . . .
4.2 Anforderungen an das Plug-In
4.3 Präzisierung der Idee . . . . .
4.3.1 Der Inhalt . . . . . . .
4.3.2 Die Funktionen . . . .
4.3.3 Benutzeroberfläche . .
4.3.4 Programmlogik . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
38
39
39
40
42
44
45
47
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
48
48
49
50
50
51
53
55
5 Technologien
57
5.1 Hardwaretechnologien . . . . . . . . . . . . . . . . . . . . . . 57
5.2 Softwaretechnologien . . . . . . . . . . . . . . . . . . . . . . . 58
5.3 Netzwerkprogrammierung . . . . . . . . . . . . . . . . . . . . 63
6 Implementierung
6.1 Das Plug-In . . . . . . . . . . .
6.1.1 Läuferinfo Modus . . . .
6.1.2 Listen Modus . . . . . .
6.1.3 Standort Modus . . . .
6.1.4 Interaktion zwischen den
6.2 Server und Datenübertragung .
6.2.1 Klasse Database . . . .
6.2.2 Klasse RPC_Server . .
6.3 Benutzeroberfläche . . . . . . .
III
Zusammenfassung
. . . .
. . . .
. . . .
. . . .
Modi
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
68
68
68
75
76
82
86
86
89
90
93
7 Resümee und Ausblick
94
7.1 Resümee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Inhaltsverzeichnis
vi
A Inhalt der CD-ROM
97
A.1 Diplomarbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
A.2 Zusätzliche Ressourcen . . . . . . . . . . . . . . . . . . . . . . 97
Literaturverzeichnis
98
Vorwort
Während der Entstehung dieser Arbeit, als auch im Laufe meines Studiums
habe ich Unterstützung von einer Vielzahl an Personen erhalten, bei denen
ich mich hiermit bedanken möchte.
Zuerst möchte ich meinen Dank meinem Betreuer Mag. Volker Christian
aussprechen, welcher mich während dieser Arbeit und bei der Erstellung des
in der Arbeit beschriebenen Projekts tatkräfig, als auch konstruktiv unterstützt hat. Weiters gilt mein Dank meinen Studienkollegen, welche mein Studium an der Fachhochschule zu einem einzigartigen, besonderen Abschnitt
in meinem Leben gemacht haben.
Ein außerordentlich wichtiges „Danke“ gilt meiner gesamten Familie, ohne die ich dieses Ziel nie erreichen hätte können. Vor allem meinen Eltern
Veronika und Rudolf gilt ein großer Dank, da sie mich immer in all meinen
Entscheidungen und Lebenslagen unterstützt und motiviert haben und ohne
die dieses Studium, sowie diese Erfahrung nie möglich gewesen wäre. Auch
meiner Schwester Marlene danke ich für ihre unterstützenden, motivierenden
und ehrlichen Ratschläge, welche mir immer eine Hilfe waren und sein werden. Zusätzlich möchte ich auch meiner Tante Irene danken, die mir immer
unverzüglich und zuverlässlich mit Rat und Tat zur Seite stand.
Ein weiterer Dank gilt auch meinen Freunden, die mir immer geholfen
haben meinen Kopf hin und wieder frei zu bekommen und auf deren Unterstützung ich jederzeit zählen konnte.
vii
Kurzfassung
Durch aktuelle Entwicklungen des aufstrebenden IPTV Sektors verschmelzen
Fernsehen und Internet immer mehr. Technische Verbesserungen hinsichtlich
Bandbreite und Kompressionsmethoden machen Internetprotokoll-Fernsehen
zu einer ernstzunehmenden Konkurrenz des Digitalen Video Broadcasting
(DVB). Vor allem durch die aufkeimenden Ideen und Innovationen hinsichtlich Personalisierung und Interaktivität entwickelt sich diese TV-Übertragungstechnik zum zukünftigen Fernseherlebnis.
Die gegenwärtige Technik ermöglicht endlich eine adäquate Darstellung
von Web- oder Echtzeitinhalten (welche über das Netzwerk bezogen werden)
auf dem Fernsehbildschirm. Durch Entwicklungen wie dem Yahoo Widget
Channel, welcher es dem Benutzer ermöglicht, Echtzeitinformationen (wie
das aktuelle Wetter oder die neuesten Nachrichten) neben einem Film auf
dem Bildschirm erscheinen zu lassen, wird schon ein Einblick in mögliche
Zukunftsszenarien der Fernsehlandschaft gegeben. Zusätzlich werden, durch
neuartige Set-Top Boxen, (wie zB die Dreambox von DreamMultimedia) dem
Benutzer vollständig angepasste Personalisierungsmöglichkeiten in Hinsicht
auf die Benutzeroberfläche oder die empfangenen Inhalte (welche sich nicht
auf Video und Audio beschränken) geboten. Jene Set-Top Boxen bieten
Funktionalitäten, die es dem Benutzer erlauben Plug-Ins zu entwickeln und
auszuführen.
Diese Arbeit versucht nun diese neuen Entwicklungen und Wendungen
in der Fernsehlandschaft festzuhalten und zu beschreiben. Weiters wird ein
Projekt – das sich mit der Entwicklung eines Plug-Ins für die Dreambox beschäftigt – vorgestellt, welches Echtzeitinhalte auf das Fernsehgerät bringt
und diese für den Benutzer so sanft wie möglich in sein bisheriges Fernsehvergnügen einbettet. Hierbei soll gezeigt werden, wie gegenwärtig und
zukünftig versucht werden wird die Verschmelzung von Internet und Fernsehen sanft voranzutreiben, ohne dabei weder die technischen Möglichkeiten
des Systems, noch die Bedürfnisse des Benutzers außer Acht zu lassen.
viii
Abstract
Current trends in the IPTV sector show that television and internet are constantly merging. Furthermore technical enhancements regarding bandwidth
as well as data compression enable IPTV to be a serious competition for
DVB. Burgeoning ideas and innovations concerning personalization and interactivity are the ingredients to place this TV technology at the forefront
of the future television experience.
Present techniques now allow an adequate presentation of web and real
time content (obtained via network) on the television screen. Current developments as for example the Yahoo Widget Channel demonstrate a possible
future scenario of what the TV scenery might look like. Yahoo Widget Channel offers a broad variety of miniature applications for television. These applications are able to deliver real time information such as the current weather
or the latest news to the television screen while for example watching a movie. In addition new set top boxes (i. e. the Dreambox by DreamMultimedia)
also provide techniques and functionalities to create and run personalized
applications. These enhancements support the concept of perfect user driven personalization regarding the Graphical User Interface (GUI) and/or the
shown content besides audio and video.
The recent developments and alterations of the television landscape regarding IPTV are what this thesis focuses on. Furthermore a project about
the development of a plug-in for the Dreambox is introduced and described,
which engages in bringing real time content via IP to the television screen.
Additionally this project attempts a smooth assimilation of the given information and developed interface into the users hitherto TV experience. The
goal is to depict existent and future efforts to gently push the fusion of internet and TV while considering the user’s needs as well as the technical
potentials of the system.
ix
Teil I
Einführung und Grundlagen
1
Kapitel 1
Einleitung
1.1
Motivation
“IPTV ist eine große Umwälzung der TV-Landschaft, größer als
seinerzeit die Einführung des Privatfernsehens...“ 1
Schon im Jahr 2006 war sich die Medienlandschaft der großen Veränderung,
die Internet Protokoll Television (IPTV) mit sich bringen würde, bewusst.
Doch was ist nun nach drei Jahren wirklich möglich? In welche Richtung hat
sich die Technologie entwickelt und welche Trends lassen sich davon ablesen?
Vergangene und aktuelle Studien belegen, dass der Trend hin zum IPTV
weiter anhält. Aus manchen Publikationen geht zwar hervor, dass es möglich
sein könnte, dass IPTV eine zusätzliche, gleichberechtigte Position neben Satellit, Kabel und Terrestrik einnehmen würde [15, Kap. 6]. Doch die aktuellen
Entwicklungen zeigen andere Trends auf.
IPTV bietet vielmehr zusätzliche Möglichkeiten als die bestehenden im
Bereich der Fernsehmedien. Außerdem fördert die Übertragungstechnik via
Internet Protokoll (IP) neue Interaktionen sowie Innovationen in diesem Gebiet und erlaubt die Umsetzung interessanter sowie ungewöhnlicher Ideen.
Genau dort liegt die Motivation dieser Arbeit. Welche Vorteile bietet IPTV
dem Benutzer gegenüber zB Satellitenfernsehen und wie funktioniert es eigentlich? Wodurch wird IPTV zu dem besonderen „Ding“, welches viele neue
Chancen auf dem Fernsehsektor bietet und welches das Sehvergnügen sowie
-verhalten des Sehers nachhaltig beeinflussen und verändern soll? Weiters
stellt sich hier auch die Frage: Ist der Fernsehzuseher im Grunde an mehr
Interaktion seinerseits interessiert? Doch sei hier soweit vorgegriffen, dass
schon Marshall McLuhan das Fernsehen als
„...ein Medium, das eine mitgestaltende Reaktion verlangt.“ [10]2
1
http://www.heise.de/newsticker/IPTV-Schrumpfende-Riesen-wachsende-Zwerge-/meldung/78585
2
http://www.heise.de/tp/r4/artikel/2/2050/3.html
2
1. Einleitung
3
bezeichnet und somit wäre die Frage bezüglich Interaktivität schon am Rande
beantwortet und bietet folglich ein weiteres Argument des Trends zu IPTV
und der Motivation zu dieser Arbeit.
1.2
IPTV
Zu Beginn sollte der Begriff IPTV, wie er in dieser Arbeit verwendet wird,
näher erläutert und die technischen Besonderheiten des Internet Protocol
Fernsehens erklärt werden.
1.2.1
IPTV Definition
Es gibt eine Vielzahl an Definitionen, bei denen zum Einem die Rede von
IPTV
„IPTV bezeichnet die digitale Übertragung von Fernsehprogrammen über ein digitales, breitbandiges Datennetz mit Hilfe des
IP3 .“ [3, S. 13]
und zum Anderen von Internet-Fernsehen ist.
„Beim Internet-Fernsehen werden Fernsehprogramme und Videoinhalte über das IP übertragen...“ [18]
Zusätzlich wird aber auch der Begriff Internet-Fernsehen oft für die Bezeichnung von WebTV oder „Internet video streaming“ verwendet [15, S.15], hier
ist das Empfangen und Sehen von Videoinhalten direkt via Internet gemeint.
Aufgrund dieser Tatsache wird in dieser Arbeit stets der Begriff IPTV verwendet, um jegliche Verwechslungen auszuschließen. Der zusätzlichen Unterscheidung der beiden Technologien dient eine kurze Gegenüberstellung (siehe
Tabelle 1.1).
Diese Unterschiede sind zwar nur wenige, zumal es hier nicht zielführend
ist weitere aufzuzeigen, da auch die Grenzen zwischen WebTV und IPTV
immer mehr verschwimmen. So gibt es jetzt Set-Top Boxen (STB), welche
direkt Inhalte aus dem Internet empfangen und darstellen können, diese ermöglichen es dem Benutzer – ohne sich vorher bei einem Provider registriert
zu haben – zB Youtube4 -Videos auf den Fernseher zu bringen5 . Aufgrund
dieser Tatsache stimmen nun schon einige der in Tabelle 1.1 genannten Unterschiede nicht mehr. Zur zusätzlichen Erläuterung dieser Verschmelzung
bezieht sich der praktische Teil (siehe Teil II) dieser Arbeit auf eine STB,
welche diese Eigenschaften vertritt.
3
Internet Protokoll
www.youtube.com
5
aus http://www.teltarif.de/intern/action/print/arch/2009/kw19/s34126.html
4
1. Einleitung
4
Tabelle 1.1: Hauptunterschiede zwischen IPTV & WebTV (Modifiziert aus
[15, S. 15/16]).
Benutzer
Empfangsgerät
Bandbreite
Video Format
Copyright
1.2.2
IPTV
IP Adressen sind bekannt
Set-Top Box u. Ä.
zwischen 1 und 4 Megabit/s
U. a.
MPEG2,
MPEG4
geschützte Inhalte
WebTV
jeder (unbekannte Benutzer)
meist PC
meist unter 1Mbit/s
Windows Media, RealNetworks, Quicktime,
Flash, ...
oft ungeschützt
IPTV Technik
Zum besseren Verständnis der Funktionalität von IPTV seien dessen technische Grundzüge hier kurz erläutert.
Um IPTV zu ermöglichen, bedarf es nicht nur einer passenden STB,
welche über eine geeignete Schnittstelle verfügt. Ein funktionierendes IPTV
System erfordert mehr als nur eine Komponente [2]:
Video Encoder
Dieser wandelt Audio- und Videoinformationen in ein komprimiertes Format um. Im Falle von IPTV gibt es laut [14, S.64] drei primäre Kompressionstechnologien: Moving Pictures Expert Group (MPEG)-26 , H.264 (auch
genannt MPEG-4 part 107 ) und VC-18 . H.264 bietet für ein IPTV System
die meisten Vorzüge, im direkten Vergleich mit der vorangegangenen Kompressionstechnologie von MPEG-2 [14]. Vorteile wie die Unterstützung von
hochauflösendem Fernsehen (High Definition Television bzw. HDTV), bessere Kompressionsleistung als MPEG-2 sowie die Tatsache, dass H.264 weniger
Bandbreite als MPEG-2 benötigt, um ein qualitativ gleichwertiges Signal zu
übertragen, lässt MPEG-4 im Allgemeinen und H.264 im Speziellen zur Vorzugskompressionstechnologie von IPTV werden [14]. Ferner den technischen
Vorteilen, wird die Kompressionstechnologie H.264 – welche ein freier internationaler Standard ist – von einer Reihe unterschiedlicher Organisationen
verwendet und ihr Gebrauch in deren Spezifikationen empfohlen [14]. Beispie6
http://www.chiariglione.org/mpeg/standards/mpeg-2/mpeg-2.htm
http://www.chiariglione.org/mpeg/standards/mpeg-4/mpeg-4.htm
8
http://www.microsoft.com/windows/windowsmedia/howto/articles/vc1techoverview.
aspx
7
1. Einleitung
5
le dafür sind das DVD Forum 9 , die Blue-ray Disk Association 10 oder auch
das Advanced Television Systems Committee (ATSC) 11 [14]. Auch können
Inhalte, welche mittels H.264 komprimiert wurden, von vielen unterschiedlichen Transportprotokollen (zB User Datagram Protocol (UDP) 12 , Transmission Control Protocol (TCP) 13 , Real-Time Transport Protocol (RTP) 14 ,
usw.) übertragen werden [14].
Video Server
Diese Art von Server besitzen Verbindungen zu Mediaarchivsystemen und
schicken die Mediainformationen per Multi- oder Unicast an die passenden
Clients bzw. STBs. In IPTV-System werden Video Server hauptsächlich für
interaktive Dienste, wie Video on Demand (VoD), oder zum Speichern von
aufgenommenem Material via persönlichem Videorekorder (PVR) [2] verwendet. Grundsätzlich sind Video Server dazu da, Videodaten (zB H.264
komprimierte Videostreams) zu speichern und zu verwalten [14]. Essentielle
Faktoren zum Design eines solchen Servers bzw. zur Erstellung einer derartigen Serverarchitektur sind die Skalierbarkeit der Speichergröße und der
Anzahl der zu verwaltenden Datenströme (Streams), die Wahl der passenden
Managment Software, als auch die Vielfalt der verfügbaren Schnittstellen [2].
Eingehend auf diese Faktoren verfügen Video Server über enorme Speicherund Prozessorkapazitäten, sowie rationelle In- und Ouput Funktionen, um
die entsprechenden IPTV Services bereitstellen zu können [2].
Middleware
Als Middleware wird in [2] die Soft- und Hardware bezeichnet, welche sich
bei IPTV für die Verbindung der Server- und Client-seitigen Komponenten
verantwortlich zeichnet. Respektive sind es Softwarepakete, welche sowohl
auf den Servern des IPTV-Anbieters, als auch auf dem Endgerät (Set-Top
Box) des Benutzers laufen [2]. Die Middleware am Client ist vergleichbar
mit der Sitzungs- und Darstellungsschicht des OSI-Schichtenmodells (Open
System Interconnect) [23] [14]. Sie fungiert als kommunizierende Verbindung
zwischen dem Betriebssystem der STB und den interaktiven IPTV Applikationen [14]. Diese Tatsache erlaubt es den Programmierern von Applikationen, diese zu erstellen ohne genauer über die systemspezifischen Protokolle
Bescheid zu wissen, es vereinfacht den gesamten Entwicklungsprozess [14].
9
http://www.dvdforum.org
http://www.blu-raydisc.com
11
http://www.atsc.org
12
http://tools.ietf.org/html/rfc768
13
http://tools.ietf.org/html/rfc793
14
http://tools.ietf.org/html/rfc3550
10
1. Einleitung
6
Zugangsberechtigungssystem und Digitales Rechtemanagement
Generell besteht die Funktion dieses Systems darin, Inhalte zu schützen, zu
sendende Echtzeit Inhalte zu kontrollieren und die Übersicht über bereits
gesendete Inhalte zu behalten [2]. Bei IPTV arbeiten das Zugangsberechtigungssystem und das digitale Rechtsmanagement (DRM) mit einer Kombination aus Scrambling15 und Verschlüsselung [2]. Die technische Umsetzung
wird auf verschiedene Weisen realisiert zB mit Hilfe einer SmartCard, wie
sie zum Empfang der österreichischen öffentlich rechtlichen Sender (ORF)
obligat ist16 [2].
Benutzer-Endgerät
Als häufigstes Benutzer-Endgerät gilt die Set-Top Box (STB), deren technische Fähigkeiten aufgrund der ständigen Weiterentwicklungen und Variationen von IPTV je nach Anwendungsgebiet oder Service Anbieter unterschiedlich ausfallen [2]. Weiters unterstützen die meisten Set-Top Boxen eine Vielzahl unterschiedlicher Audio-, Video- und Bildformate [2]. Dies ist
notwendig, um die empfangenen, digitalen Media-Signale in vom Fernseher
darstellbare Signale umzuwandeln. Eine STB ist also eine Art Computer,
dessen grundsätzliche Aufgabe darin besteht, die Media-Daten via IP zu
empfangen, diese zu dekodieren und anschließend auf dem Fernsehgerät zu
präsentieren [14]. Die unterschiedlichen Arten von Set-Top Boxen, sowie deren genaue Funktionsweise werden unter Punkte 2.3 genauer erläutert.
Wird so ein System aus einem anderen Blickwinkel betrachtet, so sind
dafür teilweise differierende Komponenten wichtig, um via IP Medieninhalte
empfangen zu können. Abbildung 1.1 veranschaulicht die unterschiedlichen
Bestandteile einer einfachen Variante eines IPTV Systems und lässt die einzelnen Elemente in Client-seitig und Server-seitig unterteilen.
Einen essentiellen Teil Server-seitig stellt der IPTV Service Provider dar,
welcher dafür zuständig ist, dem Kunden bzw. Benutzer eines IPTV Systems
Dienste zum Empfang von Fernsehprogrammen und/oder zur Nutzung von
interaktiven Diensten (wie zB Video on Demand (VoD)) zur Verfügung zu
stellen [6]. D. h. er verwaltet das Angebot an möglichen Fernsehkanälen und
interaktiven Applikationen. Die zur Verfügung gestellten Medieninhalte werden dem Service Provider von etwaigen, unterschiedlichen Content Providern
geliefert [6]. In Abbildung 1.1 werden als Beispiel für mögliche Content Provider ein Broadcast Anbieter – welcher Fernsehkanäle liefert –, ein VoD Anbieter – der zB ein Angebot an Filmen und Serien bietet, die der Endkunde
selektieren und ansehen kann – und ein Web Content Provider – der dafür
zuständig ist, Webinhalte zu liefern – illustriert. Je nach vom Content Pro15
Damit ist eine spezielle Art der Signalverschlüsselung gemeint, welche Datenströme
innerhalb eines Transportstromes aufgrund von Kontrollwörtern verwürfelt [22]
16
digital.orf.at/show\_content.php?sid=83, hier bezeichnet als ORF Digital-Sat-Karte
1. Einleitung
7
Abbildung 1.1: Aufbaumodell einer einfachen Variante eines IPTV Systems
in Anlehnung an [6, Kap. 1], einerseits bestehend aus den Server-seitigen
Komponenten IPTV Service Provider sowie verschiedenen Arten von Content
Providern, andererseits bestehend aus den Client-seitigen Komponenten wie
zB der Set-Top Box und dem Fernsehgerät.
vider gelieferten Inhalt, unterscheidet sich die Übertragungsart. So können
Inhalte eines Broadcast Anbieters zB entweder per Digitalem Videorundfunk
via Satellit (DVB-S) oder via Kabel (DVB-C) an den Service Provider übertragen werden, wohingegen die Inhalte eines Web Content Providers auch
via IP übermittelt werden.
Zusätzlich zur indirekten Übertragung medialer Inhalte über den Service
Provider (wie in Abbildung 1.1) gibt es auch die Möglichkeit, dass Medieninhalte direkt an den Kunden übertragen werden. Somit wird dem IPTV
Benutzer die Option gegeben, zB Fernsehkanäle aus aller Welt zu empfangen, da theorethisch sämtliche Content Provider weltweit erreicht werden
können. Dabei ist kein zusätzlicher Service Provider zwischengeschaltet, welcher – wie in den meisten praktischen Anwendungen – eine Vorauswahl der
angeboteten Inhalte trifft [6].
Das IPTV Empfangsgerät stellt Client-seitig den wichtigsten Teil dar,
welches in Abbildung 1.1 als Set-Top Box illustriert und mit dem Fernseh-
1. Einleitung
8
Abbildung 1.2: Das adaptierte Referenzmodell zur Übertragung von IPTV.
Neben den IPTV relevanten Schichten (Video Encodierung, Video Paketierung und MPEG Transport Stream Konstruktion), sind die restlichen Schichten vor allem für den Datentransport zuständig. RTP bezeichnet das RealTime Transfer Protokoll, UDP das User Datagram Protokoll, TCP das Transmission Control Protokoll und IP das Internet Protokoll. Modifizierte Grafik
aus [14, Fig.3.4].
gerät digital (High Definition Multimedia Interface (HDMI)17 ) oder analog
(zB Syndicat des Constructeurs d’Appareils Radiorécepteurs et Téléviseurs
(SCART)18 ) verbunden wird. Diese wird neben dem Fernsehgerät auch mit
einem Breitbandanschluss verbunden, um somit via IP die oben genannten
Inhalte empfangen und verarbeiten zu können. Abgesehen von der Anschlussweise an den Fernseher beeinflusst auch die Art des Breitbandanschlusses –
zB via Digital Subscriber Line (DSL) oder Asymmetric Digital Subscriber
Line (ADSL) – die Empfangsqualität des IP Fernsehens [6]. Weiters gibt
es neben der Set-Top Box als eigenständiges Empfangsgerät auch sogenannte IP TV-Geräte, welche die Funktionalitäten einer STB bereits integriert
haben (mehr dazu in Abschnitt 2.5).
Abbildung 1.2 zeigt ein adaptiertes Referenzmodell hinsichtlich der Kommunikation in einem IPTV System und geht detailierter auf die Übertragung
von Medieninhalten ein. Um nun Daten vom Service Provider zum Kunden
zu übertragen, müssen diese zuvor alle Schichten des Referenzmodells von
oben nach unten passieren, um dann per zB DSL den Benutzer erreichen zu
17
18
http://www.hdmi.org/consumer/hd_experience.aspx
siehe [6, S. 293]
1. Einleitung
9
können [14]. Beim Benutzer müssen die Daten wiederum all jene Schichten
von unten nach oben durchlaufen. Jede Schicht zeichnet sich für eine andere Aufgabe verantwortlich und fügt den zu sendenden Daten zusätzliche
Informationen an oder verändert diese [14].
Weiters können die verschiedenen Schichten laut [14] in zwei grobe Kategorien eingeteilt werden:
Obere Schichten: Diese sind Video Encodierung und Paketierung sowie
die MPEG Transport Stream Konstruktion. Sie kümmern sich um spezielle IPTV Anforderungen und die Datenformate.
Untere Schichten: Im Gegensatz zu den Oberen Schichten befassen sich
diese vor allem mit dem tatsächlichen Datentransport.
Die Aufgaben der einzelnen Schichten teilt [14] folgendermaßen ein und
werden nachfolgend kurz zusammengefasst:
Video Encodierungs Schicht: Der Kommunikationsprozess startet damit,
ein unkomprimiertes, analoges oder digitales Signal zu komprimieren,
um einen sogenannten MPEG Elementary Stream 19 zu erhalten.
Video Paketierungs Schicht: In dieser Schicht wird der MPEG Elementary Stream in einzelne, sich überlappende Datenpakete – sogenannte
Packetized Elementary Stream (PES)-Pakete – konvertiert bzw. aufgeteilt.
Transport Stream Konstruktions Schicht: Hier werden die soeben erstellten PES Pakete in Transportpakete – sogenannte Transport Stream
(TS) Pakete – mit einer fixen Größe (188 Bytes) zerlegt.
Real-Time Transfer Protokoll (RTP) Schicht: Diese Schicht ist optional, wird dennoch von einer großen Anzahl von IPTV Applikationen
verwendet. Die RTP Schicht fungiert als ein Vermittler zwischen den
soeben beschriebenen Schichten und den unteren Schichten des Referenzmodells. Das Real-Time Transfer Protokoll stellt den wesentlichsten Teil dieser Schicht dar und unterstützt die Echtzeit-Datenübertragung von Mediadaten in einem IP Netzwerk.
Die unteren Schichten: Diese – d. h. die Transportschicht, die IP Schicht,
die Sicherungsschicht und die Bitübertragungsschicht dieses adaptierten Referenzmodells – erfüllen dieselben Aufgaben wie die jeweiligen
Schichten im bekannten OSI-Referenzmodell (siehe [23]).
19
http://www.iptvdictionary.com/iptv_dictionary_MPEG_Elementary_Stream_ES_
definition.html
1. Einleitung
10
Die Aufgaben der unteren Schichten dieses Refernzmodells weichen, wie
schon erwähnt, nicht von den Aufgaben des OSI-Refernzmodells ab, dennoch liegt gerade hier eine wichtige Eigenschaft, welche IPTV so interessant
erscheinen lässt.
Durch den Einsatz des IP auf der Vermittlungsschicht20 [23, Network
Layer S. 430] verfügt die bestehende Verbindung nicht nur über einen einseitigen Übertragungskanal (der Empfänger – in diesem Fall der Seher –
kann nur Daten empfangen, es besteht lediglich ein Hinkanal). Es existiert
auch ein Rückkanal, dementsprechend besteht für den Seher die zusätzliche
Möglichkeit Daten zu senden. Diese Tatsache erweitert die Palette an technischen Fähigkeiten eines solchen Systems um ein Vielfaches im Vergleich
zur Übertragung via Satellit zB. Der vorhandene Rückkanal stellt ein wichtiges Mittel der Interaktivität des IPTV dar [15]. Zusätzlich ist (wie schon
zuvor erwähnt) jeder Benutzer dadurch eindeutig identifizierbar und dieser
Umstand erlaubt es, die dargestellten Inhalte in Hinsicht auf den Seher zu
personalisieren. Durch diesen gegebenen Rückkanal wird nicht nur die Interaktivität unterstützt, ferner ergibt sich die Chance, die darzustellenden
Inhalte zu personalisieren, um auf den Benutzer bzw. Seher und seine Vorlieben eingehen zu können.
Überdies ist neben der Vermittlungsschicht natürlich auch die Transportschicht21 [23, Transport Layer S. 403] zur Datenübertragung bei einem
IPTV-System essenziell. Für IPTV wird hauptsächlich das User Datagram
Protocol (UDP) anstelle des Transmission Control Protocol (TCP) als Übertragungsprotokoll verwendet [7]. Der Grund dafür liegt wohl hauptsächlich
in der unterschiedlichen Art des Transports der beiden Protokolle.
TCP wird als
„zuverlässiges, verbindungsorientieres, Bytestrom Protokoll“ [8,
20]
bezeichnet, kurz gesagt es stellt sicher, dass alle gesendeten Daten beim
Emfpänger angekommen. TCP kümmert sich automatisch um beispielsweise
Zeitüberschreitungen und erneutes Senden der Daten [20]. Geht zB ein Datenpaket bei der Übertragung verloren, wird es ein weiteres Mal gesendet,
damit der Empfänger alle Datenpakete erhält. Ferner werden die Daten bei
TCP erst geschickt, wenn eine Verbindung zwischen IPTV Headend-Server
und dem Client-seitigen Empfangsgerät existiert [14]. Diese Eigenschaft kann
beim Senden von Daten zu Verzögerungen führen, da verlorene oder fehlerhafte Datenpakte wiederholt gesendet werden müssen und erst verspätet
beim Empfänger eintreffen [14].
UDP hingegen wird als
20
www.cisco.com/en/US/docs/internetworking/technology/handbook/Intro-toInternet.html#wp1020694
21
www.cisco.com/en/US/docs/internetworking/technology/handbook/Intro-toInternet.html#wp1020697
1. Einleitung
11
„unzuverlässiges, verbindungsloses, Datagramm Protokoll“ [8,20]
bezeichnet, es stellt nicht sicher, dass die Daten vollständig und korrekt
empfangen worden sind, auch muss keine Verbindung zwischen Server und
Client aufgebaut worden sein. Geht hier ein Paket beim Senden verloren, so
wird es nicht noch einmal geschickt. UDP kümmert sich lediglich um das
Senden der Mediendaten und nicht um die Fehlerbehandlung [14]. Diese Eigenschaft macht UDP zum idealeren Transportprotokoll für IPTV Systeme,
da IP Fernsehen als ein Echtzeitsystem bei Verzögerungszeiten gravierendere
Qualitätseinbussen verzeichnet, als bei fehlerhaften oder verlorenen Datenpaketen [14]. Demzufolge wird UDP mehrheitlich für IPTV Implementierungen
eingesetzt und um den Nachteil der nicht existenten Fehlerbehandlung auszugleichen, gibt es verschiedenen Ansätze, welche diese Funktionalität zB in
die am Netzwerk laufenden Applikationen einbauen oder in den Videodatenstrom selbst integrieren [14].
Neben den unterschiedlichen Protokollen zur Datenübertragung unterscheiden sich auch die Arten der Kanalübermittlung bei IPTV – hier wird
zwischen Unicast, Multicast und Broadcast unterschieden [6, S. 23ff]. Auf
die praktische Verwendung dieser differierenden Techniken wird zusätzlich
in Abschnitt 2.4 eingegangen.
Unicast
Abbildung 1.3 zeigt, dass bei dieser Art der Kanalübermittlung eine einzelne
Verbindung pro Client (IPTV Emfpangsgerät) zum Server besteht [14]. Die
technische Umsetzung eines solchen Systems ist zwar realtiv simpel, sie weist
jedoch einen gravierenden Nachteil auf: Ein solches System ist ineffizient, falls
mehrere Nutzer gleichzeitig zB denselben Fernsehkanal sehen möchten, denn
somit wird für jeden einzelnen Client eine Verbindung aufgebaut und die
gewünschte Information geschickt, dies wiederum führt dazu, dass sich beim
Server die Bandbreite mit der Anzahl der Verbindungen multipiziert (d. h.
je mehr Verbindungen umso größer die Bandbreite beim Server) [6]. Unicast
ist, aufgrund dieser Eigenschaften, für On-Demand IPTV Applikationen geeignet, bei denen jeder Benutzer seine eigenen Mediendaten empfängt [14].
Multicast
Im Vergleich zu Unicast stellt Multicast ein 1:n System dar, mehrere Clients
einer Gruppe erhalten dieselben Daten, wobei diese Informationen nur einmal vom Server gesendet werden. Eine Gruppe selbst wird zB durch einen
Fernsehkanal definiert, d. h. jeder Benutzer, welcher diesen Kanal auswählt,
erhält die gewünschten Daten [14]. Abbildung 1.4 zeigt, wie die Kanalübermittlung per Multicast beispielsweise aussehen könnte. Bei Multicast wird
somit nicht pro Client eine direkte Verbindung zum Server hergestellt [6]. Damit das möglich ist, müssen in einem Netzwerk spezielle Multicast-Router
1. Einleitung
12
Abbildung 1.3: Grundsätzliches System der Unicast Technologie für die
Kanalübermittlung bei IPTV. Pro IPTV Client wird vom Server des Service
Providers eine Verbindung hergestellt und die angeforderten Mediendaten
werden dem Client übermittelt(angelehnt an [14, Fig. 4.2]).
vorhanden sein, welche die Duplikation und Verteilung der Datenpakete auf
die richtigen Mitglieder der Empfangsgruppe übernehmen. Multicast ist jedoch im Vergleich zu Unicast ein etwas komplexeres System, da hier noch
die Verwaltung der Gruppen und die Verteilung der Pakete hinzukommt [6].
Durch diese Übertragungstechnik verringert sich die Anzahl der nötigen IP
Verbindungen in einem IPTV-System und die Daten gelangen nur zu jenen
Benutzern, welche diese auch angefordert haben. Somit stellt Multicast die
beste Kanalübermittlungstechnologie für Live IPTV Übertragungen dar [14].
Broadcast
Jene Kanalübermittlung schickt die Daten eines Fernsehkanals an alle Benutzer des Netzwerkes, egal ob ein Benutzer jene Informationen angefordert
hat. Somit stehen jedem Empfänger eines solchen Systems alle gesendeten
1. Einleitung
13
Abbildung 1.4: Grundsätzliches System der Mulitcast Technologie für die
Kanalübermittlung bei IPTV. Der Server des Service Providers schickt die,
von mehreren Clients angeforderten Mediendaten einmal. Die Router im
Netzwerk übernehmen das Duplizieren und Weiterleiten der gesendeten Daten, um jedem Client die passende Information bereitstellen zu können (angelehnt an [14, Fig. 4.3]).
Inhalte zur Verfügung [15]. Hier wird weder zwischen Gruppen unterschieden, noch werden Daten speziell für einen Client gesendet. Dies führt zu
Engpässen bei den Ressourcen des Empfangsgeräts, da dieses alle empfangenen Datenpakete verarbeiten muss. Zusätzlich unterstützt Broadcast kein
Routing [14].
1. Einleitung
1.3
14
Gliederung der Arbeit
Diese Arbeit gliedert sich grundsätzlich in drei Teile:
Einführung und Grundlagen: Hier wird auf die allgemeine Technik von
IPTV eingegangen, welche Besonderheiten es dabei zu beachten gibt.
Weiters werden verschiedene Möglichkeiten von IPTV Systemen beschrieben und miteinander verglichen. Diese unterschiedlichen Umsetzungen gehen vor allem auf die differierende Kanalübermittlung ein
– Multicasting, Unicasting und Broadcasting – und zeigen drei Systeme auf, welche als Repräsentanten dieser Techniken fungieren. Neben dem aktuellen Stand der Technik widmet sich dieses Kapitel auch
der Zukunft dieses Sektors, vor allem hinsichtlich der Darstellung von
Echtzeit- oder Webinhalten am Fernsehbildschirm. Es werden Möglichkeiten aufgezeigt, wie der IPTV Benutzer sein Fernsehvergüngen
personalisieren und Interaktion erreichen kann. Neben dem Aufzeigen
der nahen Zukunft werden mögliche Zukunftsvisionen erwähnt, wie das
Fernsehen bald aussehen könnte.
Praktische Arbeit: Sports Notification System: Dieser Arbeitsteil beschäftigt sich hauptsächlich mit dem praktischen Pendant, einem für
eine STB – die Dreambox – entwickelten Plug-In, welches es ermöglicht, Echtzeitdaten von Marathonläufern auf dem Fernsehbildschirm
darzustellen. Neben der Entstehung der Idee und der Entwicklung des
Konzepts wird weiters auf die verwendeten Technologien, sowie die letzendliche Implementierung und Gestaltung eingegangen.
Zusammenfassung: Als Abschluss werden die grundlegendsten Punkte der
Arbeit kurz aufgeführt und es wird ein kompakter Ausblick in die mögliche Weiterentwicklung der praktischen Arbeit gegeben.
Kapitel 2
Stand der Technik
Dieses Kapitel gibt einen kurzen Überblick über den jetztigen Stand der
Technik im Bereich des Internet Protokoll Fernsehens. Welche Möglichkeiten
hat der Benutzer, IPTV zu empfangen, wie unterscheiden sich diese verschiedenen Systeme voneinander und was verbindet sie?
Bevor jedoch unmittelbar auf die verschiedenen IPTV Technologien eingegangen wird, sollte ein kurzer Überblick über die bisherigen Überlegungen
hinsichtlich der Chance auf Interaktivität und Personalisierung bei einem
solchen System gegeben werden. Primär stellen diese beiden Charaktereigenschaften die Besonderheit des IP Fernsehens dar. Dier liegt sein Potential,
wodurch es sich maßgeblich von anderen TV Übertragungsarten (zB Kabel
oder Satellit) unterscheidet. Weiters handelt es sich bei der beschriebenen
praktischen Arbeit in Teil II um eine Möglichkeit der Personalisierung des
Fernsehens, aber dazu mehr im erwähnten Teil.
2.1
Personalisierung & Interaktivität
Wie schon unter Punkt 1.1 erwähnt, wird das Fernsehen von manchen Personen schon lange als Medium gesehen, das eine „mitgestaltende Reaktion
verlangt“ [10]. Genau diese Tatsache führt zum Punkt der Interaktivität im
TV, welche schon seit längerem in der Fernsehlandschaft vorhanden ist, sei
es in Form eines einfachen Rückkanals mit Medienbruch1 , zB Tele-Dialog
(TED)2 oder in Form eines vollwertigen Rückkanals, wie es bei IPTV der
Fall ist [15]. Ein vollwertiger Rückkanal hat einerseits den Vorteil, dass kein
Medienbruch erfolgt [22], andererseits ist – wie schon in Kapitel 1 erwähnt
– der Benutzer durch seinen Rückkanal eindeutig identifizierbar.
Die Chance auf Interaktivität eines IPTV Benutzers beginnt schon bei
minimalen Entscheidungsmöglichkeiten. Einerseits hat der Seher die Mög1
Der Rückkanal erfolgt über das Telefon, d. h. der Zuseher wechselt vom Medium Fernseher zum Medium Telefon.
2
TED wird seit Anfang der 1980er Jahre eingesetzt
15
2. Stand der Technik
16
lichkeit „ganz normal“ fernzusehen, andererseits kann er sich jederzeit zB
einen Film via VoD bestellen. Natürlich gibt es neben den Film- und FernsehAlternativen auch viele neue Möglichkeiten der Interaktivität bzw. der Einbindung des Sehers. So existieren Service-Provider, die eine Auswahl an Spielen bereitstellen, ferner gibt es Programme, die es dem Benutzer möglich machen, via TV einzukaufen (T-Commerce), d. h. der Benutzer kann per Klick
auf der Fernbedienung das von ihm gewünschte Produkt auswählen und kaufen [6, Kapitel 2]. Da der Anwender durch den vollwertigen Rückkanal eindeutig identifizierbar ist, kann ein solcher Einkauf passend zugeordnet und
das Produkt verrechnet werden. Derartige Entwicklungen auf diesem Sektor
verändern die Welt des Fernsehens nachhaltig.
Zusätzlich zur Interaktivität entwickeln sich vor allem am Sektor der Personalisierung eine beträchtliche Anzahl neuer Ideen und Lösungen. Gerade
die Tatsache, dass jeder Benutzer eines IPTV Systems eindeutig identifizierbar ist, ermöglicht es, Programme für den Benutzer zu erstellen oder Projekte
zu verwirklichen, die sich individuell dem Seher anpassen. Als Beispiel einer
einfachen Personalisierung dienen kollaborative Filter, welche aufgrund von
bestimmten Eigenschaften des Benutzers (zB demografische Merkmale) die
für ihn passenden Inhalte übermitteln. Dieses Prinzip ist nicht gänzlich neu,
denn es gibt schon seit einiger Zeit Digitale Video Recorder (DVR), welche
dem Benutzer automatisch Inhalte aufzeichnen, die aufgrund seines vergangenen Sehverhaltens gewählt wurden. Ein bekannter DVR nennt sich TiVo3 .
Schon diese Errungenschaft hat die Fernsehlandschaft verändert, da für den
Benutzer nicht nur Sendungen aufgenommen wurden, welche er selbst ausgewählt hat, sondern es wurde eine auf ihn zugeschnittene Vorauswahl getroffen. Zusätzlich zu diesem essentiellen Vorteil hat der Benutzer dadurch
die Möglichkeit, Werbungen zu überspringen oder sich Sendungen zeitverzögert anzusehen [4]. Durch IPTV geht diese Personalisierung noch weiter sie
werden
„...sehen, was sie wollen, wann immer sie es wollen...“ [12]
Eben diese Meinung wird prinzipiell auch von den Sehern vertreten, wie eine
Testreihe aus [3] ergeben hat.
„Nicht der Fernseher soll bestimmen wann es eine Unterbrechung
gibt, sondern ich will das bestimmen.“ 4
Und genau darauf – nicht nur hinsichtlich der Fernsehunterbrechungen, sondern auch hinsichtlich der gesehenen Inhalte – wird es früher oder später in
der Fernsehlandschaft hinauslaufen, aber dazu später mehr in Kapitel 3.
Zusätzlich zu jenen genannten Entwicklungen wird der Fernseher nicht
nur den Fernsehkanälen oder etwaigen Filmen und Serien vorbehalten sein.
3
4
www.tivo.com
Proband der Tests aus [3]
2. Stand der Technik
17
Schon jetzt gibt es einige wenige Möglichkeiten, Webinhalte auf den Fernsehbildschirm zu laden oder Webvideos anzusehen.
2.2
IPTV Anbieter
Ein IPTV Anbieter ist der in Teil 1.2.2 erwähnte Service Provider, welcher
den Endkunden mit TV-Inhalten und verschiedensten interaktiven Diensten versorgt. Der Seher ist sozusagen bei dem gewünschten Service Provider
registriert und bezieht die von ihm angebotenen Dienste. Grundsätzlich variiert die Anzahl und Auswahl der Dienstleistungen per Anbieter, dennoch
gibt es einige Umsetzungen, die von allen oder zumindest den meisten Service
Providern dem Kunden zur Verfügung gestellt werden (aus [3]):
• VoD:
Die Möglichkeit, sich Serien und Filme zu bestellen, um sie sich zu einem selbstgewählten Zeitpunkt anzusehen. Bei den meisten Anbietern
sind die bestellten Filme 24 Stunden verfügbar. Je nach Aktualität
der Filme muss der Kunde diese bezahlen oder nicht. Aber auch diese
Tatsache variiert.
• Electronic Program Guide (EPG):
Als elektronisches Fernsehprogramm, um dem Seher Informationen zB
über eine laufende Sendung zu bieten.
• DVR/PVR:
Die Funktionen des Pausierens, Vor- und Zurückspulens können während des normalen Fernsehbetriebs ausgeführt werden. Sie ermöglichen
es dem Benutzer, diese Funktionen während der laufenden Sendung
auszuführen. Hier wird der lineare Verlauf des aktuellen Programms
beeinflusst. Benutzt der Seher eine dieser Funktionen, zB pausieren,
so wird in diesem Fall die laufende Sendung auf dem Server des Service Providers aufgezeichnet und nach dem Beenden der Pause wird
die Sendung durch Abspielen der aufgenommenen Daten wieder fortgesetzt.
Dies sind die gängisten Dienste, welche von den Anbietern zur Verfügung
gestellt werden. Zusätzlich bieten nur einige wenige Service Provider (zB
Ocilion5 welcher in Teil 2.4 noch genauer beschrieben wird) die Fähigkeit
an, Webinhalte, wie zB das aktuelle Wetter, die neuesten Nachrichten oder
Online-Videos auf dem Fernsehgerät darstellen zu können.
Im Zuge dieser Arbeit wurden die Angebote dreier Direkt-Anbieter (Ocilion verkauft seine Produkte nicht an Endkunden) aus der Schweiz6 , Ös5
6
http://www.ocilion.at
Bluewin TV - http://www.swisscom.ch
2. Stand der Technik
18
terreich7 und Deutschland8 herangezogen und deren Leistungen hinsichtlich
der Möglichkeit der Darstellung von Webinhalten verglichen bzw. betrachtet. Dabei ist wiederum aufgefallen, dass weder Bluewin TV, noch Alice
dem Kunden derartige Funktionen und Leistungen zur Verfügung stellen,
die ihm diese Optionen ermöglichen. aonTV hingegen bietet zumindest die
Möglichkeit, sich Informationen bezüglich des derzeitigen Wetters und der
aktuellen Schlagzeilen auf den Fernsehbildschirm zu holen, dennoch werden
diese Inhalte nicht aus dem Internet bezogen. Diese noch nicht sehr ausgereifte Situation auf diesem Sektor wird sich aber in bevorstehender Zukunft
nachhaltig ändern (dazu mehr in Kapitel 3).
Die elementare Technik, welche die meisten Serviceanbieter verwenden,
bleibt – genauso wie die angebotenen Leistungen – meist die gleiche. Dem
Kunden wird eine STB zur Verfügung gestellt, welche meist nur das Dekodieren der Daten, sowie das Rendern des TV-Bildes übernimmt (Ocilion nennt
deren Box „Thin-Client“). Die Programmlogik selbst befindet sich auf einem
Frontend-Server beim Provider. Genaueres zu dieser Art von Server und zur
gesamten Service Provider Technologie wird unter Punkt 2.4.4 am Beispiel
von Ocilion, als auch aonTV´ ausführlicher erläutert.
2.3
IP Set-Top Boxen
Da sich die praktische Arbeit in Teil II mit einem Plug-In für eine „standalone“ IP STB (genauer gesagt, die Dreambox 9 ) beschäftigt, wird hier genauer auf die verschiedenen Arten von STBs eingegangen, deren Unterschiede
erläutert, sowie die verschiedenen Funktionalitäten und die üblichen physikalischen Schnittstellen erklärt.
Grundsätzlich ist eine Set-Top Box ein kleiner Computer, zu dessen
Standard-Hardware zB ein Prozessor gehört. Dieser Computer ist im Allgemeinen dafür zuständig, ein empfangenes, digitales Signal in ein Format
zu konvertieren, welches sich auf dem Fernsehbildschirm darstellen lässt, sei
dieses Endformat nun digital oder analog. Eine IP Set-Top Box verfügt, ergänzend zur obigen Beschreibung, über eine Netzwerkschnittstelle, welche
das digitale Signal via eines Breitbandanschlusses empfängt [14]. [14] teilt
die Funktionen einer IP STB in drei Hauptaufgaben ein:
• Empfang,
• Dekodierung und
• Präsentation von IP Mediendaten zur Darstellung am Fernsehbildschirm.
7
aonTV - http://www.aon.tv
Alice - http://www.alice-dsl.de
9
http://www.dream-multimedia-tv.de
8
2. Stand der Technik
2.3.1
19
Arten von IP Set Top Boxen
In diesem Teil der Arbeit wird primär auf die unterschiedlichen Ausführungen von IP Set-Top Boxen eingegangen. Jede Art von STB ist im Wesentlichen dazu da, das empfangene Audio- und/oder Videosignal in ein Format
umzuwandeln, welches das darstellende Endgerät, also das Fernsehgerät verwenden und präsentieren kann [6]. Dieses sogenannte Media Processing ist
die trivialste Funktion einer Set-Top Box. Je nach Aufgabengebiet existieren
verschiedene Ausführungen von IP Set-Top Boxen. [14] teilt sie folgendermaßen ein:
Multicast und Unicast Set-Top Box
Diese Ausführung einer IP STB stellt die Standardausführung dar. Sie ist
dementsprechend in der Lage, zB „live“ Datenströme via Multicast, sowie
VoD via Unicast empfangen und verarbeiten zu können. Abbildung 2.1 zeigt
die einzelnen Hardware Elemente, welche eine solche STB besitzt, um Multicast und Unicast bei der Kanalübermittlung zu unterstützen [14]. Diese
einzelnen Module übernehmen laut [14] folgende Aufgaben:
Prozessor: Dieser ist neben anderen Aufgaben für das Lesen der IPTV
Datenpakete, das Initialisieren der STB Hardwarekomponenten und
das Betreiben des Betriebssystems zuständig.
Random Access Memory (RAM): Dient als temporärer Speicher zur
Grafikverarbeitung und Ausführung interaktiver Applikationen.
Read-Only Memory (ROM): Speichert wichtige Informationen, wie zB
die Netzwerkeinstellungen.
Transport Stream Demultiplexer: Jener übernimmt die Auswahl und
das Entpacken der gewünschten Medienpakete.
Audio und Video Dekoder: Diese Elemente zeichnen sich für die Verarbeitung und Dekodierung von Audio- und Videoinhalten zuständig.
Sicherheitssystem: Hier werden die empfangenen Audio- und Videodaten
entschlüsselt.
Sonstigen Schnittstellen: Jene können beispielsweise eine Infrarotschnittstelle oder etwaige Video- und Audioausgänge (siehe dazu Abschnitt
2.3.3) sein.
IP Set-Top DVR
Hierbei handelt es sich um eine IP STB, welche zusätzlich die Funktionalität
eines digitalen Videorekorders (siehe Abschnitt 2.2) in sich birgt [14]. Durch
2. Stand der Technik
20
Abbildung 2.1: Hier werden die einzelnen Module einer Standard IP STB
dargestellt – angelehnt an [14, Fig. 5.9].
eine Festplatte, welche sich im Gerät befindet, können die DVR Funktionalitäten ausgeführt werden. Generell wird zwischen einer eigenständigen
(„Stand-alone“) und einer sogenannten „Multi-Room“-Variante unterschieden.
„Stand-alone“ Set-Top DVR: Hier handelt es sich um eine herkömmliche, eigenständige STB, welche über die Optionen eines digitalen Videorekorders verfügt [14].
„Multi-Room“ Set-Top DVR: Durch eine solche technische Ausführung
ist es möglich, zB aufgenommen Videoinhalte auf unterschiedlichen Fernsehgeräten anzusehen [14]. Technisch unterscheidet sich die zentrale von der
dezentralen Variante. Bei Ersterer wird die Haupt-DVR-STB an das Heim-
2. Stand der Technik
21
Abbildung 2.2: Vorderansicht der Dreambox DM800 HD PVR.
netzwerk angeschlossen, diese kümmert sich um das Aufnehmen, Pausieren
und Abspielen der Mediendaten [14]. Alle anderen Set-Top Boxen im Netzwerk erhalten die aufgenommenen Daten von jener Haupt-STB [14]. Die
dezentrale Variante arbeitet ebenfalls mit mehreren Set-Top Boxen, wobei
jede einzelne mit DVR Funktionaltität ausgestattet ist [14].
Hybride Set-Top Box
Bei einer Hybriden STB handelt es sich um ein hybrides Gerät, welches
Live-Videodaten via DVB-T, -C oder -S empfängt und zusätzlich einen Breitbandzugang bietet, um zB VoD oder Webinhalte empfangen zu können [14].
Da hierbei die Live-Fernsehinhalte nicht über den Breitbandzugang geschickt
werden, braucht eine solche STB weniger Bandbreitenkapazität als eine „herkömmliche“ IP STB, welche auch diese Art von Informationen über die Netzwerkschnittstelle empfängt [14]. Um nun Inhalte via DVB empfangen und
darstellen zu können, verfügen hybride Set-Top Boxen zusätzlich über einen
eingebauten Radiofrequenz (RF) Empfänger und einen Demodulator [14].
Bei der auf Seite 25 genauer erläuterten Set-Top Box – der Dreambox (siehe
Abbildung 2.2) – handelt es sich um eine hybride STB, welche Fernsehkanäle via DVB, als auch Medieninhalte via IP empfangen und am Fernsehgerät
anzeigen kann.
2. Stand der Technik
2.3.2
22
Funktionalität
Verschiedene Set Top Boxen bieten differierende Funktionalitäten an. Auch
hier gibt es wiederum Standardfunktionen, die wohl die meisten STB offerieren, wie zB das Rendern oder Skalieren des Fernsehbildes passend zum
Fernsehgerät. Die Fähigkeiten jener Set-Top Boxen, welche von einem Provider zur Verfügung gestellt werden, halten sich in Grenzen, da der Großteil
der Arbeit auf den Servern des Service Providers erledigt wird, welcher die
Daten zum passenden Client (in diesem Fall der STB) schickt. Jedoch verfügt
eine Standard STB laut [6] meist über folgenden Fähigkeiten:
Picture in Picture (PiP)
Diese Funktion gibt es schon seit längerer Zeit bei Set-Top Boxen oder Fernsehgeräten. Sie erlaubt es dem Seher, zB zwei Fersehprogramme gleichzeitig
anzusehen. Meist wird eines der beiden Programme in verkleinerter Form
auf dem gesendeten Bild des zweiten Programmes dargestellt.
Smart Card
Das naheliegendste Beispiel einer Smart Card ist jene des ORFs, welche
der Benutzer seit Einführung des digitalen terrestrischen Video-Rundfunks
(DVB-T)10 in seine STB einführen muss, um Zugang zu den österreichischen,
öffentlich-rechtlichen Sendern zu erhalten. Im Grunde genommen speichert
die Smart Card Informationen, welche benutzerabhängig sind. Zusätzlich zu
der physischen Smart Card existieren auch virtuelle Smart Cards, welche als
Software in der Set Top Box integriert sind und dem gleichen Zweck dienen.
Protokolle
Die Fähigkeiten jeder STB sind, wenn es um Kommunikationsprotokolle wie
zB TCP/IP11 geht, sehr hoch. Da eine Set Top Box eine beträchtliche Anzahl
von Mediendaten empfängt und sendet, wurde eine hohe Anzahl von Regeln
verfasst und als Protokolle umgesetzt, welche angeben, in welcher Art und
Weise diese Daten behandelt werden müssen. So ist gerade TCP/IP für das
Senden und Empfangen der Datenpakete aus dem IP Netzwerk zuständig.
Darüber hinaus existieren weitere Protokolle, welche die STB kennen und
verstehen muss (Siehe dazu Abschnitt 1.2.2).
Plug-In
Grundsätzlich ist ein Plug-In eine Software Applikation, welche auf der SetTop Box ausgeführt wird und standardmässig nicht darauf zu finden ist. Im
10
11
Digital Video Broadcasting Terrestrial, siehe http://www.dvb-t.at
Transmission Control Protocol/Internet Protocol
2. Stand der Technik
23
Abbildung 2.3: Die Rückansicht der Dreambox DM800 HD PVR zur Darstellung der vorhandenen physischen Schnittstellen.
Falle der Dreambox haben die Benutzer die Möglichkeit, eigene Plug-Ins zu
implementieren und von der Box ausführen zu lassen. Ein Plug-In erweitert
somit den Fähigkeitsumfang einer STB und kann zu einer besseren Personalisierung und größeren Interaktivität hinsichtlich Fernsehvergnügen führen.
Der Benutzer hat durch ein von ihm gewähltes Plug-In die Möglichkeit, die
Funktionalitäten seiner STB hinsichtlich seiner Interessen und Wünsche zu
erweitern. Die praktische Arbeit in Teil II befasst sich mit einem solchen
Plug-In, welches für die Dreambox erstellt wurde. In jenem Teil der Arbeit
werden auch die technische Umsetzung, sowie die anfänglichen Überlegungen
hinsichtlich Personalisierung und Interaktivität näher erläutert.
2.3.3
Physische Schnittstellen
Wie schon bei den Funktionalitäten einer Set Top Box gibt es auch bei
den physischen Schnittstellen, die eine STB bietet, Unterschiede. Hier soll
vor allem auf die schon zuvor erwähnte Dreambox von DreamMultimedia 12
eingegangen und anhand dieser die grundsätzlichen Funktionen der wichtigsten, physischen Interfaces aus Abbildung 2.3 erläutert werden. Die einzelnen
Schnittstellen werden hier nur kurz erklärt (aus [5]), denn wie schon in Abbildung 2.3 sichtbar wird, weist die Dreambox keine gänzlich neuen oder
unbekannten Interfaces auf.
12
http://www.dream-multimedia-tv.de
2. Stand der Technik
24
Low-Noise Block Converter (LNB) Ein- & Ausgang
Beim Eingang für LNB13 wird das Koaxialkabel der vorhandenen Satellitenanlage angeschlossen. Die LNB-Schnittstelle ist dafür zuständig, die höhere
Satellitenfrequenz auf die niedrigere Fernsehfrequenz zu transformieren. An
den LNB-Ausgang kann im Fall der Dreambox ein analoger oder digitaler
Satellitenempfänger angeschlossen werden.
Modem Schnittstelle (RJ-25)
Diese Schnittstelle ermöglicht eine direkte Verbindung zum Internet via analoger Telefonleitung, d. h. die STB wird direkt an die Telefonbuchse oder an
das jeweilige Modem angeschlossen. Über diese Schnittstelle können Inhalte
aus dem Internet oder via IPTV empfangen werden.
Serielle Schnittstelle (RS 232/EIA-232)
Der geräteabhängige Nutzen dieser Schnittstelle liegt beim Updaten der Betriebssoftware und/oder der Vorprogrammierung mittels PC.
Netzwerk Schnittstelle (Ethernet 10/100Mbit/RJ-45)
Hier ist es möglich, das Netzwerkkabel anzuschließen, um einerseits mittels
Hypertext Transfer Protokoll (http), File Transfer Protokoll (ftp), Network
File System (nfs), Telecommunication Network (Telnet) oder Samba14 mit
der Box zu kommunizieren, andererseits kann dadurch in einem Netzwerk
die indirekte Verbindung mit dem Internet und/oder mit einem vorhandenen
Service Provider hergestellt werden.
TV Anschlüsse
Natürlich bietet die Dreambox, wie die meisten anderen Set Top Boxen, unterschiedliche Schnittstellen zum Anschluss an das Fernsehgerät. Hier sind es
Digital Visual Interface (DVI) zur digitalen Signal- und falls möglich High
Definition (HD)-Übertragung, bei welchem am TV-Gerät ein HDMI Anschluss benötigt wird. Zusätzlich gibt es die Möglichkeit, per SCART das
Fernsehgerät anzuschließen und so das Video- und Audiosignal analog zu
übertragen.
Digitaler Audio Ausgang
Weiters verfügt die Dreambox über einen digitalen Audio Ausgang (Toslink15 ).
13
Rauscharmer Signalumsetzer
http://www.samba.org
15
„Fiber Optic Device“ von Toshiba http://www.toshiba.com
14
2. Stand der Technik
25
Weitere Schnittstellen
Wie schon zuvor erwähnt, sind dies nur jene Interfaces, welche auf der Dreambox vorhanden sind. Andere STBs unterstützen auch drahtlose Verbindungen, wie zB Wireless Local Area Network (WLAN) oder Ultra Wide Band
(UWB)16 zum Übertragen von Audio- und Videosignalen [6].
2.4
IPTV Systeme
Ein potentieller IPTV Benutzer steht schon heute einer Menge von Angeboten gegenüber. Größtenteils beherrschen den IPTV Markt Serviceanbieter
(siehe Punkt 2.2), dennoch gibt es für den Kunden andere Optionen für
IP Fernsehen. Dieser Abschnitt beschäftigt sich mit drei unterschiedlichen
IPTV Systemen, welche sich vor allem in der Art der Kanalübermittlung
unterscheiden und somit verschiedenste Vor- und Nachteile aufweisen. Als
Repräsentant der Multicast Technik wurde aonTV 17 ausgewählt, Unicast
kommt bei dem IPTV Anbieter Ocilion 18 zum Einsatz und via Broadcast
werden die Kanäle bei der hybriden STB – der Dreambox DM 800 HD PVR
– empfangen.
2.4.1
Dreambox DM 800 HD PVR als Broadcast System
In Abschnitt 2.3 wurde die Dreambox (kurz DM800 ) schon als Beispiel herangezogen und deren Funktionen und Schnittstellen kurz erläutert. Bei dieser
STB handelt es sich – laut deren Hersteller – um einen
„Digitalen Satellitenempfänger zum Empfang von freien und verschlüsselten DVB-Programmen mit optionaler digitaler Aufzeichnungsmöglichkeit.“ [5]
Die DM800 ist eine Set Top Box, welche neben DVB auch die Möglichkeit
hat Daten per IP zu empfangen und darzustellen. Es handelt sich hier um
eine intelligente, hybride STB, zu deren Standardhardware ein 300 Megahertz (MHz) Prozessor gezählt wird, auf welchem Linux als Betriebssystem
läuft19 . Hinsichtlich der Kanalübermittlung werden, aufgrund der hybriden
Technik, mittels DVB die einzelnen Videodaten empfangen, d. h. es kommt
Broadcast zum Einsatz. Die Kanalübermittlung mittels Broadcast wurde bereits in Abschnitt 1.2.2 erläutert.
Einen der wichtigsten Teile der Dreambox stellt die graphische Benutzeroberfläche (GUI - Graphical User Interface) dar. Diese nennt sich für die
16
Ultrabreitband
http://www.aon.tv/
18
http://www.ocilion.at
19
aus http://dream.reichholf.net/wiki
17
2. Stand der Technik
26
DM800 Enigma2 und basiert auf der Programmiersprache Python 20 , welche
die Progammierschnittstelle21 LinuxTV DVB 22 verwendet23 . Enigma2 ist
die zweite Version einer solchen „Framebuffer“-basierten Zapping Applikation und wird seit der DM7025 eingesetzt23 . Grundsätzlich wurde Enigma2
für die verschiedenen Dreambox Versionen entwickelt, doch die Tatsache,
dass sie ebenfalls mit der freien Multimedia-Bibliothek Simple DirectMedia Layer (SDL)24 arbeiten kann, ermöglicht es, diese GUI auch auf einem
Personal Computer (PC) anzuwenden23 . Das wiederum bietet jenen Vorteil, dass Benutzer nicht an die Dreambox als Hardware gebunden sind und
somit jeglichen, technisch passenden Computer verwenden können, um die
Funktionalitäten von Enigma2 zu nutzen, d. h. um sich eine „eigene STB“
zu schaffen.
Die Programmiersprache, in welcher Enigma2 verfasst ist, ist zum größten Teil Python. Zusätzlich verfügt diese grafische Applikation über ein in
C++ 25 verfasstes Backend 23 . Dies ist ein Relikt der ersten Enigma-Version,
welche vollständig in C++ verfasst war23 . Enigma2 stellt nun eine sehr flexible Open-Source GUI Applikation dar, welche von jeglichem Programmentwickler erweiterbar ist (sofern die Veränderungen der Lizenz entsprechen
und von den Herstellern akzeptiert wurden)23 . Zusätzlich zu der erweiterbaren Grundapplikation gibt es die Möglichkeit, Plug-Ins zu entwickeln. Diese
unterliegen keiner bestimmten Lizenz und können vom Entwickler frei gestaltet werden. Die Option, Plug-Ins zu gestalten, birgt einen enormen Vorteil
hinsichtlich Personalisierung, denn hier kann sich der Benutzer unbegrenzt
einbringen, ferner ergibt sich daraus eine Vielfalt von erstellten Zusatzapplikationen, welche bei Bedarf installiert werden können. Der offensichtliche
Nachteil dabei ist, dass diese Option der eigenständigen Plug-In Entwicklung nur den technisch versierten Benutzern vorenthalten ist und bis jetzt
leider keine Funktion angeboten wird, welche es Laien ermöglicht, Plug-Ins
zu entwickeln.
Neben der Steuerung der Box via Fernbedienung gibt es die Option,
verschiedenste Funktionalitäten mit Hilfe einer Webschnittstelle (WebIf )
zu steuern und abzufragen. Dieses WebIf kann via Browser bei Eingabe
der IP-Adresse der Dreambox oder per http:// dreambox erreicht werden23 .
Darüber hinaus erlaubt eine Programmierschnittstelle (API) durch httpAbfragen Informationen bezüglich der aktuellen Einstellungen (zB TimerEinstellungen) oder Auswahl (zB EPG) der Dreambox als Extensible Markup Language (xml)-Datei zu erhalten. Diese API basiert auf einem Client/Server-Konzept, welches zusätzlich zum http-Client den Informationszu20
http://www.python.org
API - Application Programming Interface
22
http://www.linuxtv.org
23
aus http://dream.reichholf.net/wiki
24
http://www.libsdl.org
25
http://www.cplusplus.com
21
2. Stand der Technik
27
griff via html, JavaScript26 , C++ oder Java27 ermöglicht28 . Somit erhält
der Entwickler die unkomplizierte Möglichkeit, Informationen – welche die
STB betreffen – abfragen zu können, um diese zB in einem möglichen Plug-In
zu verwenden.
Neben der Webschnittstelle verfügt die Dreambox darüber hinaus über
eine Wireless Application Protocol (WAP) Schnittstelle, die den Zugriff auf
die oben beschriebenen Inhalte mit Hilfe eines Mobiltelefons ermöglicht28 .
2.4.2
Ocilion als Unicast System
Bei Ocilion IPTV Technologies GmbH, kurz Ocilion, handelt es sich um ein
Unternehmen, das Live-Fernsehen, interaktive Dienste und zusätzliche Services (EPG, PVR, ...) für Service Anbieter vertreibt, welche diese Dienste
den Endbenutzern zur Verfügung stellen. Die Kunden dieses IPTV Unternehmens sind vornehmlich Kabel-TV Anbieter, Internet Service Anbieter oder
Anbieter von Telekommunikations Lösungen im Gast- und Pflegebereich (zB
Hotels oder Krankenhäuser) [13].
Ocilion repräsentiert jene Art von System, welches per Unicast die Daten
dem Client übermittelt. In Abschnitt 1.2.2 wurde die Funktionsweise von
Unicast bereits erläutert und illustriert. Das Besondere an dieser Systemart
ist, dass nicht wie bei Multi- und Broadcast pro Kanal sondern pro Client
enkodiert wird, da jedem Kunden ein Datenstrom übermittelt wird, d. h. je
mehr Systembenutzer, umso mehr Enkoder müssen zur Verfügung gestellt
werden, was zu etwaigen Engpässen hinsichtlich der technischen Ressourcen,
sowie der Bandbreite führen kann.
Um flexibel ihren Abnehmern gegenüber zu sein, stellt Ocilion zwei unterschiedliche Lösungen bereit, wobei eine Lösung auf eine hohe Anzahl von
Endbenutzern ausgerichtet ist und deshalb eher auf Kabel-TV und Internet
Service Anbieter abzielt [13]. Die zweite Option richtet sich vor allem an Telekommunikationsanbieter im Gast- und Pflegebereich, bei denen die Anzahl
der Endbenutzer deutlich unter jener der Kabel-TV und Internet Service
Anbietern liegt [13].
Jede dieser angebotenen technischen Lösungen basiert jedoch auf dem
in Abbildung 2.4 dargestellten System Design, das sich aus verschiedenen
Modulen zusammensetzt und in [13] folgendermaßen erklärt werden.
Die Videodaten dieses Systems werden im Video Input Teil einerseits per
DVB-S empfangen und an das TvDVB Modul weitergeleitet. Externe RTP
Daten werden an das TvRTP Modul gesendet. Weiters existiert ein System
Management, dessen Aufgabe es ist, alle Systemaktivitäten zu verwalten und
zu kontrollieren. Nur hier ist das System via Virtual Private Network (VPN)
mit der Ocilion Hauptzentrale verbunden, um zB einfach Fehler beheben zu
26
http://de.selfhtml.org/javascript/
http://java.sun.com
28
aus http://dream.reichholf.net/wiki
27
2. Stand der Technik
28
Abbildung 2.4: System Desgin des Ocilion IPTV Systems, adaptiert aus
[13, Figure 2-1].
können. Den dritten inneren Teil stellen Externe Daten Schnittstellen dar,
welche es ermöglichen, zusätzliche Inhaltsquellen in das IPTV System einzuspeisen (wie zB Webinhalte oder Spiele). Das Management Netzwerk ist
sozusagen das Verwaltungsnetzwerk, alle Module, sowie auch das System
Managment stehen in Verbindung mit ihm. Ein weiterer Punkt ist, dass an
der Stelle zwischen Management Netzwerk und den Modulen sich die Kanalübermittlung von reinem Unicast auf Unicast und Multicast ändert. Die
Funktionalität der Module wird in den Unterabschnitten von 2.4.2 genauer
erläutert. Jedes einzelne Modul steht mittels Datentransfer in Verbindung
mit den beiden „Backbone-Switches“. Die Module TvFrontend und TFTP/DHCP liegen wiederum, in Hinsicht auf die Kanalübermittlung, im reinen
Unicast-Bereich. Weiters haben nur diese beiden Module eine direkte Ver-
2. Stand der Technik
29
bindung zum Verteilungsnetzwerk, auf welches auch der Benutzer mit dem
Teilnehmer-Endgerät (CPE) Zugriff hat. Die einzelnen Module lassen sich
wiederum laut Ocilion [13] in vier Gruppen unterteilen.
Empfangsgruppe
Die Aufgaben der Module dieser Gruppe befassen sich mit dem Empfangen
verschiedenster Inhalte. Ihre Funktionen lauten folgendermaßen:
TvDVB: Dieses Modul kümmert sich um den Import von Daten der Fernsehkanäle, sowie um die Einspeisung dieser Daten in das Backbone-System.
Diese Daten werden zuvor wiederum von einem DVB-S Empfänger entgegengenommen und an das TvDVB Modul weitergegeben.
TvRTP:
Das TvRTP Modul ist für Inhalte im RTP Format zuständig.
TvTranscode: Zum Transkodieren oder neu Enkodieren eines Signals zeichnet sich dieses Modul verantwortlich. Einsatz findet es zB, falls ein Netzwerk eine limitiertere Bandbreite besitzt und ein Signal erneut enkodiert
werden muss.
Systemgruppe
Diese Module kümmern sich um verschiedenste Systemaufgaben, wie zB dem
Speichern und Archivieren von Logdateien.
TvTime: Jenes Modul stellt den restlichen Modulen die koordinierte Weltzeit (UTC) zur Verfügung.
TvConf: Wird zur Verwaltung der zentralen Konfigurationsinformationen
des Systems eingesetzt.
TvLog:
Dieses Modul sammelt alle Logdateien des Systems.
TvStat Wird zur Erfassung jeglicher Status Informationen der gesamten
Module des IPTV Systems eingesetzt und stellt diese Informationen für externe Applikationen bereit.
TvDB: Dieser Teil des Systems ist ein integriertes Datenbank-Modul für
Endnutzer, sowie für direkte Ocilion Kunden, zur Speicherung interner Daten zB Kundendaten.
TvFile: Das Systemmodul TvFile versorgt das TvFrontend Modul mit den
gewünschten Dateien.
2. Stand der Technik
30
TvXML: Bestehend aus dem TvXmlSystem Modul, welches eine xnl Aggregationsschicht zwischen internen und externen Services darstellt und dem
TvXMLPassThrough Modul, welches eine xml-basierte Schnittstelle zur Weiterleitung von STB Input an externe Applikationen und zur Darstellung von
Anweisungen jener externen Applikation, darstellt.
TvHTML: Jenes Modul stellt einen µhtml für Standard html-Formate
bereit. Somit können Webinhalte oder html Seiten dargestellt werden.
TvRFB: In Verbindung mit dem TvRfbDispatcher Modul wird dieses Systemmodul verwendet. Gemeinsam ermöglichen sie es, jegliche Applikationen, welche in einer X.11 Linux29 Umgebung laufen, auf der STB des Benutzers darstellen zu können.
Verarbeitungsgruppe
Die dritte der Modulgruppen befasst sich vor allem mit dem Verarbeiten
von darstellbaren Inhalten. In dieser Gruppe befinden sich auch jene Module, welche sich um die zusätzlichen System-Services wie EPG oder VoD
kümmern.
TvTeletext: Dieses Modul zeichnet sich sowohl für den Empfang, als auch
die Verarbeitung aller Teletext-Daten von jedweder TV Station verantwortlich und speichert diese ab, damit die Daten ohne Verzögerung an den Endbenutzer geschickt werden können.
TvEPG: Dieses Verarbeitungsmodul ist für das Extrahieren von EPG Informationen aus dem Video-Datenstrom bzw. das Empfangen von EPG Informationen aus externen Quellen, sowie das Abspeichern dieser Daten auf
einem zentralen EPG Server zuständig.
TvStore: Das TvStore Modul ermöglicht dem Benutzer ein zeitversetztes
Fernsehen. Verwenden Endbenutzer diese Systemeigenschaft, so wird der aktuelle Datenstrom des Fernsehkanals unmittelbar auf einer Modul-internenen
Festplatte aufgezeichnet. Weiters übernimmt dieses Modul auch die Aufgabe,
Zugang, auf die vom Benutzer via VoD gewählten Filme, welche gesamtheitlich auf einer zentralen Festplatte gespeichert werden, zu erhalten. Die dritte
Aufgabe besteht aus der Funktion des persönlichen Videorekorders (Erklärung siehe Abschnitt 2.2).
29
http://www.kefk.net/Linux/X11/index.asp
2. Stand der Technik
31
TvDir: Es arbeitet in enger Verbindung mit dem oben erwähnten TvStore
Modul, da es alle inhaltlichen Abfragen auf das TvStore Modul kontrolliert
und visualisiert.
Präsentationsgruppe
Auf jene Module dieser Gruppe kann der Endbenutzer zugreifen. Sie sind es
auch, welche die gewünschten Inhalte zur Darstellung an die Set-Top Box
schicken.
TvFrontend: Dies ist das Verbindungsmodul zwischen dem Verteilungsnetzwerk und den „Backend“-Services des IPTV Systems. Mit dem Verteilungsnetzwerk ist wiederum zB das Modem des Benutzers verbunden, mit
welchem die Set-Top Box zusammenhängt. D. h. das TvFrontend Modul ist
das einzige Modul, zu welchem der Benutzer fast direkt verbunden ist. Jegliche anderen Module sind durch zwei „Backbone“-Switches abgeschirmt.
TFTP/DHCP: Oder auch Trivial File Transfer Protocol und Dynamic
Host Configuration Protocol. Dieses Modul ist für das Neustarten der STB
zuständig. Eine weitere Verantwortung liegt beim Senden von anbieterspezifischer (d. h. spezifisch hinsichtlich des direkten Ocilion Kunden) Software
für die Set-Top Boxen.
2.4.3
aonTV als Multicast System
aonTV ist das IPTV System der Telekom Austria 30 und kann vom Benutzer
über das Telefonleitungssystem empfangen werden. Laut Telekom Austria
muss am Benutzerstandort ein Wählamt vorhanden sein, welches ADSL2 31
tauglich ist. Sind alle Voraussetzungen erfüllt, kann der Benutzer sich mit
einer simplen STB, welche ihm zur Verfügung gestellt wird, per SCART
oder HDMI zum Fernsehgerät verbinden. Die Verbindung zum Empfang der
Daten kann sowohl kabelgebunden, als auch drahtlos per WLAN erfolgen32 .
Der Benutzer hat nun die Möglichkeit, HD-, sowie auch SD33 -Daten zu
empfangen. Jene werden je nach Auflösung im H.264 (bei HD-Auflösung)
oder MPEG2 (bei SD-Auflösung) Format übertragen (laut 32 ).
Aus [11] geht hervor, dass es bei diesem System keine Möglichkeit des
zeitversetzten Fernsehens gibt. Weiters besteht die ausschließliche Personalisierungsoption für den Kunden darin, sich einen Film aus der sogenannten
aonTV Videothek auszuwählen [11]. Zusätzlich kann nur noch die Reihung
30
http://www.telekom.at/
http://www.itwissen.info/definition/lexikon/ADSL2-plus-ADSL2-plus.html
32
aus http://www.aontv.org/wiki/Hauptseite
33
Standard Definition
31
2. Stand der Technik
32
der Sender verändert werden, um sie an die Bedürfnisse des Kunden anzupassen [11].
Wie nun schon zuvor erwähnt, erfolgt die Kanalübermittlung der Fernsehkanäle per Multicast [9]. VoD wird jedoch per Unicast übermittelt [9]. Im
Gegensatz zu Ocilion wird die Übermittlungstechnik aufgrund der zu übertragenden Inhalte ausgewählt. In Abschnitt 1.2.2 wurden die Vorgehensweise
und die Vorteile dieser Variante der Kanalübermittlung bereits erklärt. Prinzipiell werden nur jene Daten enkodiert und an den Seher geschickt, welche er
verlangt. Die Daten werden danach gruppenspezifisch übermittelt, wobei eine
Gruppe von einem Fernsehkanal repräsentiert wird, d. h. nur jene Benutzer,
welche zB den ersten Kanal des österreichischen Rundfunks (ORF1) sehen,
empfangen die adäquaten Daten. Server-seitig wird pro Kanal enkodiert und
übermittelt. Die Verteilung an die Clients wird von den Multicast-Routern
übernommen. Aufgrund dieser Tatsachen bietet Multicast, laut [9], einen ernormen Vorteil gegenüber Unicast zur Übertragung von Live-Fernsehen.
2.4.4
Vergleich der Systeme
Dieser Abschnitt zieht einen Vergleich dieser drei Arten der Systeme. In manchen Punkten können die speziellen Eigenschaften der Systeme, die jeweils
Unicasting, Multicasting und Broadcasting repräsentieren, nicht außer Acht
gelassen werden.
System Design
Hier wird konkret auf das produktspezifische System Design eingegangen.
Broadcast System: Alle nötigen Funktionen, Hard- und Software sind
auf der STB vorhanden, da es sich um eine intelligente Set-Top Box handelt.
Somit hat der Benutzer alles vor Ort, ist selbst für die Wartung des Systems
(zB für seine gespeicherten Videoinhalte) zuständig und kann eigenständig
bestimmen, wann er etwas von seinen Daten manipulieren möchte. Dies hat
zum Vorteil, dass der Benutzer jegliche Inhalte auf seiner eigenen Set-Top
Box speichert und selber für deren Verwaltung zuständig ist. Gleichzeitig
ergibt sich daraus auch ein Nachteil für jene Anwender, die technisch nicht
versiert sind.
Unicast System: Das IPTV-System ist hier zentral gestaltet und gesteuert. Alle Funktionen, Daten und Einstellungen werden auf systeminternen
Servern gespeichert. Dem Kunden steht somit eine beschränkte Anzahl von
zB Gigabyte (GB) zum Abspeichern von Fernsehinhalten oder VoD-Filmen
zur Verfügung, welche zusätzlich nach Ablauf einer bestimmten Zeit nicht
mehr verfügbar sind. Der Endbenutzer besitzt lediglich eine STB (Ocilion
nennt jene „Thin-Client“) mit wenigen Funktionen. Sowohl die Wartung des
2. Stand der Technik
33
Systems, als auch die Verwaltung seiner Daten werden vom Anbieter übernommen.
Multicast System: Dieses IPTV System wird, ebenfalls wie das Unicast
System, zentral gesteuert und verwaltet. Der Benutzer ist wiederum in Hinsicht auf seine Daten und auf die Anzahl der empfangenen Kanäle vom Anbieter abhängig. Lediglich die VoD-Funktion ist vom System abgekoppelt.
Um Filme per Unicast effizienter übermitteln zu können, existieren mehrere Content-Server, welche in ganz Österreich verteilt sind. Der Kunde erhält Zugriff auf jenen Server, welcher ihm, hinsichtlich seines Standortes, am
nächsten ist [9]. Dies verteilt die Zugriffe und entlastet die Zentrale [9].
Kanalübermittlung
Broadcast System: Erfolgt bei diesem Beispiel eines solchen Systems je
nach angeschlossener Technologie. Falls die Live-Fernsekanalübermittlung
mittels DVB geschieht, wird Broadcast verwendet und unterscheidet sich
nicht von „nicht-IPTV-Systemen“ (wie zB DVB-S, DVB-T oder DVB-C).
Falls Live-TV-Inhalte via IP übertragen werden, so hängt die genutzte Kanalübermittlungstechnologie vom Sender der Inhalte ab. Die Box kann sowohl per Multicast, als auch per Unicast übertragene Inhalte empfangen.
Unicast System: Die genutze Technolgie zur Datenübertragung ist Unicast. Der Vorteil hier liegt darin, dass die technische Umsetzung relativ simpel ist und die Profilanforderungen an die STB nicht hoch sind. Da dieses
IPTV-System gänzlich zentral gesteuert wird, können durch die Verwendung
der Unicast Technologie Benutzer-spezielle Informationen und Daten übertragen werden, zB eine personalisierte Benutzeroberfläche. Da Ocilion neben
anderen Services auch VoD anbietet und jener Service vollständig in das System integriert ist, ist eine Übertragung per Multicast ohnehin nicht möglich,
außer der VoD-Service würde vom Gesamtsystem abkoppelt und die Daten
würden separat gesendet werden.
Multicast System: Hier werden die Fernsehkanäle per Multicast zu den
einzelnen Benutzern übertragen. Der Vorteil dieser Technik liegt hier bei der
geringeren Bandbreite zur Übertragung (im Gegensatz zu Unicast), sowohl
für HD-, als auch für SD-Übertragungen. Einen weiteren Vorteil hat diese Übertragung auch hinsichtlich Broadcasting, da der Empfänger lediglich
den von ihm gewünschten Inhalt erhält, anstatt des gesamten Umfanges an
Videodaten der einzelnen Fernsehkanäle.
2. Stand der Technik
34
Personalisierung
Dieser Abschnitt bezieht sich vor allem auf die systemspezifischen Optionen der Personalisierung. Auf den Umgang hinsichtlich Personalisierung bei
anderen IPTV-Systemen wird in dieser Arbeit nicht eingegangen.
Broadcast System: Wie schon unter „System Design“ erklärt, ist die Dreambox eine „Stand-alone“ STB und vereint jegliche Funktionalität, Hardund Software in ihrem Inneren. Diese Tatsache lässt es für den Benutzer
zu, auf jegliche Daten zugreifen und diese erweitern zu können, vor allem in
Hinsicht auf Plug-Ins. Der Besitzer des Gerätes kann somit die gewünschten Plug-Ins, welche ständig von Entwicklern erstellt werden, selbstständig
auf seine Box spielen und diese nach seinen Wünschen und Interessen erweitern. Durch den denkbaren Internetzugriff wird die Vielfalt und Auswahl
an möglichen Plug-Ins und übertragenen Inhalten erweitert. Ist der Besitzer technisch interessiert, so kann ein Plug-In selbst verfasst werden. Die
Personalisierungsmöglichkeiten sind hier enorm. Einen Nachteil bringt dies
jedoch mit sich, denn das Verfassen eines Plug-Ins bedarf eines größeren,
technischen Verständnisses und kann von Laien nicht problemlos umgesetzt
werden. Dennoch gibt es schon eine große Anzahl an bereits gefertigten Applikationen, die mühelos auf die Dreambox gespielt werden können.
Unicast System: Dieses IPTV-System bietet ebenfalls eine mögliche Personalisierung, jedoch ist diese Option nur den direkten Kunden Ocilions
vorbehalten. Jene können in der eigens entwickelten Skript-Sprache eine Datei verfassen, welche dann über die Externe Datenschnittstelle (siehe Abbildung 2.4 Seite 28) in das System eingespeist wird. Durch jene Skripte
kann die grafische Benutzeroberfläche des Endbenutzers verändert werden.
D. h. die Optionen der Personalisierung sind hier für den Seher nicht so
groß wie bei der zuvor beschriebenen Dreambox, jedoch gibt es dennoch eine gewisse Chancen auf familiäre Gestaltung seines Fernseherlebnisses. Dem
Direktkunden des Systems stehen hingegen durch die Option auf Verfassen eigener Skripte mehrere Personalisierungsmöglichkeiten zur Verfügung.
Aufgrund der Kanalübermittlung via Unicast wäre es allerdings auch kein
Problem, auf spezifische Endkundenwünsche einzugehen, da für jeden Client
ohnehin ein separater Übertragungskanal existiert.
Multicast System: Dieses System bietet keine Personalisierungsmöglichkeiten in Hinsicht auf Plug-Ins. Dennoch stellt es die Option auf zB Spiele
oder Online-Shopping34 zur Verfügung. Zusätzlich können Filme per VoD
für 24 Stunden verfügbar gemacht werden [9].
34
laut http://unternehmen.telekom.at/Content.Node/media/news/0530-aontv.php
2. Stand der Technik
35
Datensicherung
Broadcast System: Bei dieser IPTV-Variante ist wiederum der Benutzer
für etwaige Sicherungen verantwortlich. Da jedoch ein vollständiger Zugriff
via PC (falls die Dreambox an das eigene LAN angeschlossen ist, kann zB via
Telnet darauf zugegriffen werden, ansonsten steht dem Benutzer die Webschnittstelle – siehe Abschnitt 2.4.1 – zur Verfügung) auf alle Daten der STB
möglich ist, kann somit eine Sicherung einfach durchgeführt werden.
Unicast System: Hier werden jegliche Daten redundant (mindestens zweimal) abgespeichert, damit keine Fehler bei zB Modulausfällen auftreten. Dieser Vorgang sichert auch die Daten der Endkunden. Der Vorteil hierbei ist,
dass sich der Endbenutzer nicht um die Datensicherung kümmern muss.
Multicast System: Dieses IPTV-System stellt dem Kunden ohnehin keinen Speicherplatz zur Verfügung, somit kümmert es sich lediglich um die
Sicherung der internen Daten, auf die der Benutzer, zB per VoD-Funktion,
Zugriff erhält.
Sicherheit
Broadcast System: Für den STB-Zugriff ist ein Passwort nötig, das vom
zugriffsberechtigten Benutzer geändert werden kann, bzw. beim ersten Gebrauch der Box geändert werden sollte, vornehmlich falls die STB an das
Internet angeschlossen wird35 . Diese Vorgehensweise trifft auf die erwähnte
Dreambox zu.
Unicast System: Aufgrund des System Designs, bei welchem der Client
nicht authorisiert ist, direkt auf das IPTV-System zuzugreifen, dies erfolgt indirekt über das TvFrontend Modul, kann ein externer Zugriff auf das System
ausgeschlossen werden. Die Daten und Informationen des Systemanwenders
werden zentral auf einer Datenbank gespeichert, auf welche – wie oben schon
erwähnt – extern nicht zugegriffen werden kann.
Multicast System: Um auf dieses System Zugriff zu erhalten ist nicht nur
die adäquate Technik obligat, sondern auch eine persönliche Identifikationsnummer (PIN). Diese PIN kann laut [9] mit der einer Kreditkarte verglichen
werden, nennt sich One Time PIN und wird dem Kunden exklusiv zugesendet. Bei Erstinstallation muss die Nummer eingegeben werden, damit das
System für den Benutzer freigeschaltet wird. Weiters wird jeder Kunde über
diese PIN identifiziert und verwaltet (zB um Zugriff auf das VoD System zu
erhalten).
35
aus http://dream.reichholf.net/wiki
2. Stand der Technik
36
Inhalte
Broadcast System: Diese STB kann verschiedenste Arten von Inhalten
darstellen. Neben dem herkömmlichen Fernsehinhalt, welcher meist via DVBS empfangen wird, gibt es die Möglichkeit, über die Netzwerk- oder Modemschnittstelle (siehe Abschnitt 2.3.3) zB Webinhalte zu erhalten und darzustellen. Zusätzlich existiert die Option, ebenso Echtzeitdaten (wie zB das
aktuelle Wetter oder die neuesten Nachrichten) zu empfangen und darzustellen, welche von einem Server an die STB gesendet werden. Die einzige
Schwachstelle hierfür ist, dass vorher ein passendes Plug-In entwickelt werden muss, welches die gesendeten Daten richtig interpretiert und darstellt.
Ein solches Plug-In zum Empfang von Echtzeitdaten via IP wurde für diese
Arbeit entwickelt und wird in Teil II näher erklärt.
Unicast System: Jene IPTV-Systeme von Ocilion bieten ebenfalls die
Möglichkeit, externe Dateninhalte darstellen zu können (siehe bei Abbildung
2.4 die Externe Daten Schnittstellen). Im System gibt es passende Module,
welche neben dem html- und xml-Format auch noch Anwendungen darstellen und interpretieren, die in einer X.11 Linux Umgebung laufen (siehe dazu Abschnitt 2.4.2). D. h. auch dieses System kann zB Echtzeitdaten wie
Wetter und Nachrichten empfangen, sie müssen jedoch eines dieser Formate
besitzen, um vom System erkannt, interpretiert und dargestellt werden zu
können. Zusätzlich bietet Ocilion einen Webbrowser namens Ocifox, welcher
auf Mozilla Firefox 36 basiert und speziell für diese Laufzeitumgebung adaptiert wurde [13]. Der Benutzer kann dadurch mit Hilfe des Fernsehgeräts
und der Fernbedienung im Internet „surfen“ [13]. Wie in anderen Systemen
damit umgegangen wird, hängt sowohl vom System Design, als auch von den
Vorstellungen und Zielen des Anbieters ab.
Multicast System: Beim Repräsentanten der Multicast Übermittlungstechnik, aonTV, lassen sich neben Fernsehinhalten auch die neuesten Nachrichten und das aktuelle Wetter darstellen. Diese Daten werden von Content
Providern ausschließlich für aonTV zur Verfügung gestellt, von der Telekom
Austria für die Darstellung aufbereitet und dem Kunden zur Verfügung gestellt [11]. Die Option Webinhalte darstellen zu können, wird derzeit noch
nicht angeboten laut [11].
2.4.5
Trend
Grundsätzlich kann kein allgemeiner Trend erkannt werden, da jedes dieser
Systeme, sowie deren Repräsentanten, verschiedene Zielgruppen haben.
Hinsichtlich des System Designs könnte ein solches Unicast System, welches Ocilion verwendet, eher für Abnehmer aus Gast- und Pflegebetrieben
36
http://www.mozilla-europe.org/de/firefox
2. Stand der Technik
37
verwendet werden, da hier die Anzahl der Endbenutzer überschaubar ist und
es nicht zu Engpässen hinsichtlich Ressourcen sowie Bandbreite kommen
kann. Der direkte Kunde kann die maximale Anzahl der Benutzer genauer
bestimmen.
Für die breite Masse wäre diese Lösung eher nicht passend, hier würde
sich ein Multicast System – so wie es aonTV repräsentiert – oder ein Broadcast System – wie bei der Dreambox – besser eignen. Wobei beide Varianten
wiederum unterschiedliche Zielgruppen haben. So wäre eine intelligente, hybride STB, wie es die Dreambox ist, eher für Benutzer, welche sich nicht nur
für das Fernsehen selbst, sondern auch für die Technik, die dahintersteckt
und die Möglichkeiten, die eine solche STB bietet, interessieren. Ein System
wie aonTV ist eher für Benutzer geeignet, welche zwar neben den Fernsehkanälen auch die Option auf etwas Personalisierung und Abwechslung haben
möchten, sich aber nicht eingehender mit der Technik beschäftigen bzw. Änderungen und Anpassungen vornehmen wollen.
2.5
Andere Technologien
Neben den oben genannten Optionen zum Empfang von IPTV gibt es natürlich auch noch andere Geräte oder Möglichkeiten.
2.5.1
Multimedia Computer
Die meisten Heim-PCs können als Multimedia Computer bezeichnet werden,
denn es handelt sich hierbei um PCs, welche eine Netzwerkschnittstelle besitzen und zu deren Software-Anwendungen ein Media Player, wie zB jener
von Microsoft 37 zählt [6]. Zusätzlich ist zum Empfang von Fernsehen mittels IP eine Verbindung zu einem IPTV-Serviceanbieter oder einem IPTVMedienserver obligat [6].
2.5.2
Multimediale Mobiltelefone
Diese Art von Mobiltelefon hat die Fähigkeit, Videosignale zu empfangen und
darzustellen [6]. Jene multimedialen Inhalte können natürlich auch via Internet empfangen werden, somit haben diese Telefone die Möglichkeit, IPTV
zu empfangen und darzustellen [6]. Dennoch gibt es bei diesem Empfangsgerät aufgrund der eingeschränkten Bandbreite und den höheren Kosten beim
Datenempfang über das Internet einige Abweichungen zu Standard IPTVSystemen [6]. Es werden vor allem effizientere Kompressionsmethoden sowie
Protokolle verwendet [6].
37
http://www.microsoft.com/windows/windowsmedia/player/11/default.aspx
2. Stand der Technik
2.5.3
38
IP Fernsehgeräte
Jene Fernsehgeräte brauchen keine STB, um IPTV empfangen zu können,
denn alle Funktionalitäten, Hard- und Software, die zum Empfang erforderlich sind, sind im Gerät integriert [6]. Die Entwicklung in diesem Sektor von
IPTV Empfangsgeräten38 wird zur Zeit durch aktuelle Entwicklungen enorm
vorangetrieben und revolutioniert (siehe Kapitel 3).
Kapitel 3
Zukunft des IPTV
3.1
Die nahe Zukunft von IPTV
Die nahe Zukunft des IPTV lässt sich jetzt schon fast als Gegenwart bezeichnen, da vor allem die Entwicklung auf dem Sektor der Fernsehgeräte
mit Internetzugang (d. h. IP Fernsehgeräte siehe Seite 38) in diesem Jahr
(2009) konsequent voranschreitet.
Zur Zeit steigt am Markt die Anzahl der TV-Geräte mit Internetanschluss stetig an. Frühere Ansätze, Webinhalte auf den Fernsehbildschirm zu
bringen, schlugen meist aufgrund der zu geringen Bandbreite, der umständlichen Bedienung oder der qualitativ minderwertigen Darstellung von Bild und
Text fehl [1]. Die neuen Geräte achten aber darauf, solche Inhalte optimal für
den Benutzer zu integrieren. So werden meist Web-Seiten nicht exakt wie sie
im Internet-Browser auf dem Heimcomputer erscheinen für das TV-Gerät
übernommen. Die meisten Hersteller dieser neuen Generation von Fernsehern achten auf die Darstellung und adaptieren diese Inhalte in einer Weise,
die es erlaubt, zB ohne lange textuelle url-Eingabe die gewünschte Webseite
zu betrachten1 . Weiters werden alle darzustellenden Inhalte auch hinsichtlich
ihrer Steuerung verändert, damit der Kunde bequem mit seiner Fernbedienung interagieren kann1 . Aufgrund dieser Entwicklungen finden sich schon
die ersten positiven Kritiken hinsichtlich der neuen Technologie:
„Die neuen Konzepte überzeugen mit ähnlich einfacher Bedienung
und attraktiven Inhalten, womit sich gerade auch PC-Muffel angesprochen fühlen dürften.“ Video2
1
aus http://www.teltarif.de/intern/action/print/arch/2009/kw19/s34126.html
Zeitschrift, http://downloads.magnus.de/download/inhaltsverzeichnis-video-homevision52009.html
2
39
3. Zukunft des IPTV
40
Abbildung 3.1: Fernsehbild bei Verwendung von NetTV von Philips (Quelle: http://www.heise.de).
3.1.1
Internet am Fernsehbildschirm
Die Mehrheit namhafter Fernsehgerätehersteller hat begonnen, auf diesen
Fortschritt zu reagieren und bringt ihre Versionen jener Fernsehgeräte mit
Netzwerkschnittstelle bzw. Internetanschluss auf den Markt.
Philips: Philips 3 hat jegliche Geräte der 9000er-, 8000er-Serie, sowie das
Cinema 21:9 Gerät mit der Möglichkeit Internetinhalte darzustellen ausgestattet4 . Bei Philips nennt sich diese Funktion NetTV 4 . Bei diesem Service
hat der Benutzer neben dem Ansehen von Webinhalten der Philipspartner
(siehe Abbildung 3.1) die Möglichkeit, urls frei einzugeben4 . Das Manko von
NetTV ist jedoch, dass es Java und Flash 5 nicht darstellen kann4 .
Panasonic: Hier nennt sich der Service Viera Cast und setzt sich aus mehreren kleinen Programmfenstern, welche um das Hauptfernsehbild angereiht
sind, zusammen (siehe Abbildung 3.2)4 . Wie die Abbildung zeigt, sieht der
3
http://www.philips.at/
aus http://www.teltarif.de/intern/action/print/arch/2009/kw19/s34126.html
5
http://www.adobe.com/support/documentation/de/flash
4
3. Zukunft des IPTV
41
Abbildung 3.2: Fernsehbild bei Verwendung von Viera Cast von Panasonic
(Quelle: http://pss.panasonic.eu).
Benutzer hier eine Auswahl an dargestellten Echtzeitdaten, zB dem Wetter oder den aktuellen Börsenkursen. Auch Viera Cast verfügt über einen
Webdienst zur Darstellung von Fotos, in diesem Fall übernimmt Picasa 6
von Google diese Aufgabe7 . Weiters verfügen die Dienste von Panasonic und
Philips über Partnerseiten (zB http://www.tagesschau.de bei beiden Optionen), welche speziell für die TV-Darstellung angepasst wurden7 .
Sony: AppliCast lautet Sonys Antwort auf Viera Cast oder NetTV. Laut
http://www.sony.at/hub/bravia/block/6/subblock/2 stellt dieses System dem
Benutzer verschiedenste Widgets zur Verfügung, mit denen der Anwender
wiederum Echtzeitdaten, wie Nachrichten oder aktuelle Uhrzeiten rund um
den Globus, erhalten kann. Diese Widgets werden auf einer Seitenleiste direkt am Bildschirm angezeigt, während das normale Fernsehbild ungestört
weiterläuft7 . Dem Aufbau der GUI liegt laut Sony die Überlegung, das Fernseherlebnis des Sehers nicht zu beeinträchtigen und die Widgets sanft in das
Fernsehbild einzubauen, zugrunde. Zur Erstellung der Widgets wird hier Yahoo Widget 8 verwendet7 .
Samsung: Dieser Hersteller bietet ebenfalls eine Reihe von Widgets, erstellt durch Yahoos Widget Engine 9 (siehe Abbildung 3.3)7 . Wie schon Sony,
6
http://picasa.google.com/
aus http://www.teltarif.de/intern/action/print/arch/2009/kw19/s34126.html
8
http://widgets.yahoo.com/
9
http://widgets.yahoo.com/tools/
7
3. Zukunft des IPTV
42
Abbildung 3.3: Fernsehbild bei Verwendung von Internet@TV von Samsung (Quelle: http://www.gadgetreview.com).
stellt auch Samsung Echtzeit- und Internetdaten am Fernsehbildschirm dar
und versucht, diese so sanft wie möglich in das Fernsehbild einzugliedern10 .
Zusätzlich kann der Benutzer mittels der Yahoo Widget Engine kleine Applikationen selbst erstellen und auf sein Fernsehgerät laden. Abschnitt 3.1.2
geht näher auf die Funktionsweise und Technik dieser „Engine“ ein10 .
3.1.2
Yahoo Widget Channel
Wie schon in Abschnitt 3.1.1 kurz erklärt, handelt es sich bei dem sogenannten Yahoo Widget Channel um eine Applikation, welche es via TV ermöglicht, auf Informationen des Internets zugreifen zu können. Diese Appliktion
setzt sich aus mehreren kleinen Applikationen, sogenannten Widgets zusammen, wobei der Benutzer hier aus einer Liste von Widgets jene aussuchen
kann, welche er gerne auf seinem Fernsehgerät benutzen möchte11 .
Entwickelt wurde der Widget Channel vor allem durch die Kooperation
von Intel 12 und Yahoo 13 . Weiters findet diese Applikation nun Verwendung
bei einigen Fernsehgeräten der Marken Samsung 14 , Sony 15 , LG 16 und VI10
aus http://www.teltarif.de/intern/action/print/arch/2009/kw19/s34126.html
http://connectedtv.yahoo.com/
12
http://www.intel.com/
13
http://www.yahoo.com
14
http://www.samsung.com
15
http://www.sony.com
16
http://www.lg.com
11
3. Zukunft des IPTV
43
ZIO 17 (aus7 ).
Neben der oben erwähnten Liste an möglichen Kleinapplikationen für den
Fernsehbildschirm (darunter befinden sich neben Wetter- und NachrichtenWidgets auch Informations-Widgets von Firmen wie The New York Times
oder VoD-Widgets von zB Blockbuster ) haben zur Zeit Unternehmen aus der
Programmentwicklungs-, der Werbe-, der Verlags-, sowie der Unterhaltungselektronikbranche die Möglichkeit, eigene Widgets zu entwickeln und diese
auf dem Widget Channel dem Benutzer zugängig zu machen.
Widget Entwicklung
Zur Entwicklung selbst stellt Yahoo das sogenannte Widget Development Kit
(WDK) zur Verfügung, welches dem Programmierer ermöglicht, via einer
API seine eigene kleine Applikation zu entwickeln. Die gesamte Technologie
des WDK baut auf die schon bestehende Widget Engine von Yahoo auf. Diese
benutzt xml, um jene Widgets zu erstellen und die Objekte, aus denen sie
bestehen, zu definieren [21]. Das Handbuch [21] zur Erstellung einer solchen
Kleinapplikation führt das folgende, einfache Beispiel an:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
17
Listing 3.1: Yahoo Widget Beispiel
<widget minimumVersion="4.0">
<window id="main_window"
title="Sample Yahoo! Widget"
width="500"
height="500">
<image id="sun1"
src="Resources/Sun.png"
hOffset="250"
vOffset="250"
hAlign="center" />
<text id="text1"
style="font-size:35px;
font-weight:bold"
hOffset="250"'
vOffset="250"'
hAlign="center"
onMouseUp="this.changeOpacity();"
Click Here/>
</window>
<script>
function changeOpacity() {
this.opacity = (this.opacity/100)*90;
}
</script>
</widget>
http://www.vizio.com
3. Zukunft des IPTV
44
Dieses Widget würde nun bei jedem Klick auf den Text „Click Here“ die
Deckkraft des Bildes um 10% verringern. An diesem Beispiel ist erkennbar,
dass sowohl mit xml, als auch mit JavaScript gearbeitet wird. Wobei JavaScript für die Funktionalität der Kleinapplikation eine wichtige Rolle spielt.
Bei umfangreicheren Widgets gibt es die Möglichkeit, das gesamte JavaScript in eine .js-Datei auszulagern. Weiters unterstützt die Widget Engine
auch css bei einigen Objekten, die Stilangaben müssen aber zur Zeit noch
direkt im xml-Code vermerkt werden (siehe style Attribut des text Objektes). Bei zukünftigen Versionen wird es laut Yahoo die Möglichkeit geben,
css-Dateien einzubinden.
3.1.3
Zukunft für Internet am TV
Intel und Yahoo sehen diesem Trend positiv entgegen und bemühen sich,
viel Energie in diese aufstrebende Technologie zu stecken18 . Vor allem der
Benutzer steht für die Entwickler dafür im Vordergrund. Intel setzt hierfür
Anthropologen ein, welche erforschen sollen, wie Menschen das Fernsehgerät
benutzen. Damit wird garantiert, dass sich die entwickelte Technologie so
sanft wie möglich in die jetzige Fernsehlandschaft einbettet. Laut Patrick
Barry – Vizepräsident der Yahoo Connected TV Initiative – soll die Zukunft
folgendermaßen aussehen:
„We see this as moving into the mainstream. In 2009 we’re going
to see good penetration into the product lineups of the consumer
electronics companies. Beginning in 2010 ... you’re going to see
Internet-connected consumer electronics devices dominating the
lineup.“ Patrick Barry18
Um solche Aussagen zu stützen, wurden von Intel darüber hinaus Konsumentenbefragungen durchgeführt, bei denen erhoben wurde, wie sich die Probanden das Zukunftsfernsehen vorstellen würden. Die Antworten können in
drei Kategorien eingeteilt werden und passen ideal zu den Vorstellungen und
technischen Entwicklungen von Yahoo und Intel 18 . Folgende Möglichkeiten
sollten beim Zukunftsfernsehen gegeben sein:
• Teilnahme am Gesehenen, zB durch exaktere Informationen über die
einzelnen Schauspieler und bei welchen Filmen diese bisher mitgewirkt
haben oder welche weiteren Projekte ein bestimmter Regisseur verwirklicht hat. Zusätzlich wären ebenfalls Filmkritiken und -beurteilungen
für die Seher von Interesse.
• Verbindung mit Leuten über soziale Netzwerke wie zB Facebook 19
18
19
aus http://news.zdnet.com/2100-9595\_22-256992.html
http://www.facebook.com
3. Zukunft des IPTV
45
• Bereitstellung von relevanten Echtzeit-Informationen, zB Wetter oder
Nachrichten.
Jene Aussagen der Befragten zeigen deutlich eine Richtung, welche das
Fernsehen in Zukunft einschlagen wird und sollte. Vor allem IPTV, die Verbindung zum Internet und Enwicklungen wie der Widget Channel machen
es möglich, die Fernsehlandschaft nachhaltig und positiv dem Seher gegenüber zu beeinflussen. Innovationen und Entwicklungen in der TV-Branche
werden sich laut Patrick Barry nun eher auf die neuen Potentiale, welche ein
Internetzugang dem Fernsehen bringt, konzentrieren20 .
„...the consumer electronics industry has not really explored the
... connectivity that the Internet provides.“ Patrick Barry20
D. h. die Zukunft liegt in diesem Gebiet und bietet eine Menge an interessanten, innovativen und interaktiven Möglichkeiten für beide, den Benutzer und
den Entwickler.
3.2
Zukunftsvisionen
Abschnitt 3.1 gibt einen Einblick in die Gegenwart bzw. nahe Zukunft des
Fernsehens. Durch technische Fortschritte wie IPTV könnten solche Szenarien bald zu einem fixen Bestandteil der Fernsehlandschaft werden. Dieser Abschnitt geht nun mehr auf die technischen Möglichkeiten, welche sich durch
jene Errungenschaften entwickeln könnten, ein. Wozu wird ein Seher sein
Fernsehgerät in zehn Jahren benutzen?
Der Zugriff auf das Internet ermöglicht es, auf eine enorme Anzahl von
Daten zugreifen zu können und jene für das Fernsehgerät aufzubereiten. Weiters machen Technologien wie zB der Widget Channel es möglich, mittels
Programmierung diese Daten zur eigenen Zufriedenheit bzw. zur Zufriedenheit des Kunden zu verändern, um somit auf dessen Bedürfnisse einzugehen.
Diese Errungenschaften ermöglichen, das Fernseherlebnis für den Kunden
hochgradig zu personalisieren. Bisherige Personalisierungen mittels VoD oder
PVR werden in den Schatten gestellt werden. So wird man zB als Benutzer in
Zukunft in Echtzeit Informationen über jenen Schauspieler erfahren, welcher
soeben durchs Fernsehbild gelaufen ist, obwohl man dessen Namen nicht
kennt. Umgesetzt könnte das Ganze mittels Bildverarbeitungsalgorithmen
werden, welche das ausgewählte Fernsehbild analysieren und die nötige Information an eine Datenbank weiterleiten, diese wiederum schickt die passenden
Daten zurück an das Gerät des Sehers. Auch die Verwendung von sozialen
Netzwerken via TV-Gerät bietet dem Seher viele neue Möglichkeiten der
Interaktion. So besteht die Möglichkeit sich über einen Film noch währenddessen auszutauschen oder zB in Erfahrung zu bringen, welches Programm
20
aus http://news.zdnet.com/2100-9595\_22-256992.html
3. Zukunft des IPTV
46
ein Freund zur Zeit sieht. Diese Option der Einbindung hängt natürlich in
erster Linie vom Benutzer ab, da man dadurch schon sehr in die Privatsphäre des Sehers eindringt. Eine weitere Anwendung fände im Bereich des
T-Commerce statt. Hier könnten nicht nur Produkte, welche ein bestimmter
Fernsehkanal anbietet gekauft werden. Wird ein interessantes Auto in einem
Film gesehen, so kann zB der Kaufpreis oder andere Informationen bezüglich des PKWs abgefragt werden. Dies bietet der Produktvermarktung via
Product Placement viele neue Möglichkeiten. So könnte man Produkte nicht
nur in Werbungen, sondern auch in Serien und Filmen speziell kennzeichnen, damit der Seher bei Interesse auf die Website des jeweiligen Produktes
gelangen und sich darüber informieren kann.
Auch hinsichtlich IPTV-Systemen von Serviceanbietern könnte es eine
Vielzahl von Möglichkeiten geben, diese Technologie auszunutzen. So könnte
zB die Tatsache, dass ein Serviceanbieter für jedes Hotel einer Hotelkette rund um den Globus zuständig ist, eine Personalisierung hinsichtlich des
einzelnen Hotelgasts bieten. Einem Geschäftsreisenden, welcher den Großteil
seines Arbeitsjahres in Hotels verbringt, wird eine SmartCard mit allen nötigen Profileinstellungen, Benutzerdaten und benutzten Applikationen vom
Hotel gegeben. Jene Karte kann der Reisende nun in allen Set-Top Boxen
der gleichen Hotelkette verwenden, um somit immer auf sein persönliches
Fernsehprofil zugreifen zu können, welches ihm zB immer Echtzeit-Daten
über die neusten Nachrichten seiner Branche oder das aktuelle Wetter seines
gegenwärtigen, sowie seines zukünftigen Aufenthaltsortes liefert. Dies würde
somit den Vorteil für den Kunden bringen, immer auf die nötigen Daten zugreifen zu können, in einem stets gleich zu bedienenden System. Auch für die
Hotelkette bietet es den Vorteil, dass somit ein Kunde wiederholt in einem
ihrer Hotels übernachten wird.
Dies sind nur einige Visionen bezüglich der Zukunft des Fernsehens, eine
weitere Vision wird in Teil II thematisiert, konkretisiert und umgesetzt.
Teil II
Praktische Arbeit: Sports
Notification System
47
Kapitel 4
Entwurf und Konzept
Dieser Teil der Arbeit beschäftigt sich mit der entsprechendend praktischen
Umsetzung einer Applikation, welche Echtzeit-Informationen auf den Fernsehbildschirm bringt. Das aktuelle Kapitel geht auf die Ideenfindung, die
Ziele der Anwendung, sowie die Anforderungen, welche an die Applikation
gestellt werden, ein.
4.1
Ziele der Anwendung
Aufgrund der, in Teil I erläuterten Entwicklungen von IPTV bzw. der Fernsehlandschaft, war das grundsätzliche Ziel, eine Anwendung zu schaffen, welche sich die Vorteile von IPTV (zB den Rückkanal) zunutze macht und dem
Seher zusätzlich eine mögliche Personalisierungs-, sowie Interaktionsoption
bietet, die sich sanft in das bisherige Fernseherlebnis einbindet.
Von jenem grundsätzlichen Ziel ausgehend wurde dann die Entscheidung
gefällt, eine Applikation zu entwickeln, welche es dem Benutzer ermöglichen
soll, Informationen über einen bestimmten, von ihm gewählten Marathonläufer zur Zeit des Marathons auf den Fernsehbildschirm geliefert zu bekommen.
Ausschlaggebend für die Idee hinsichtlich des Marathons war die Tatsache,
dass ein solches System für Mobiltelefone bereits besteht und schon mehrmals erfolgreich eingesetzt wurde. D. h. die Marathon-spezifischen Daten, um
nun eine solche TV-Applikation zu entwickeln, werden zur Zeit des Marathons in eine bereits bestehende Datenbank geschrieben und können für die
Anwendung verwendet werden.
Zusätzlich zur Idee hinsichtlich der zu entwickelnden Anwendung wurde
auch eine technische Plattform zur Umsetzung gesucht und gefunden. Die
Entscheidung fiel auf die in Kapitel 2.3 erwähnte Dreambox, die es erlaubt,
Plug-Ins zu erstellen, welche aufgrund der Verbindung zum Internet auch
mit Datenbank-Inhalten von netzwerkfremden Servern arbeiten können. Ein
weiterer Grund, eine intelligente Set-Top Box als IPTV Gerät zu verwenden,
war die Tatsache, dass die Dreambox es ermöglicht, das Fernsehvergnügen
48
4. Entwurf und Konzept
49
auf einfache, direkte Weise zu personalisieren. Wie schon in Abschnitt 2.4
erwähnt, ist ein flexibles, persönliches und unkompliziertes Arbeiten, ohne
Umwege über ein fremdes System möglich. Prinzipiell ist alles erlaubt und
die Entwicklung eines Plug-Ins auf diesem Gerät unterliegt keinen massiven
Restriktionen, welche die Arbeit einschränken würden.
4.2
Anforderungen an das Plug-In
Eine der wichtigsten Anforderung im Vorfeld der Konkretisierung der Idee
war die Tatsache, dass das Plug-In simpel und zuverlässig hinsichtlich Bedienung und Betriebsweise sein musste1 . Vor allem der Benutzer und dessen
Sehgewohnheiten sollten im Vordergrund stehen, nachdem vergangene Versuche das Fernsehen interaktiver zu gestalten gescheitert sind, da Passivität
im Gegensatz zu aggressiver Interaktivität bei Weitem bevorzugt und meist
vom Seher als Wohltat empfunden wird [17]. Deshalb sollte die Applikation
sanft integrierbar sein, ohne die bisherigen Fernsehgewohnheiten des Sehers
bewusst zu verletzen2 . Diese Tatsache bestätigt auch Intels Anthropologin
Genevieve Bell.
„The success of these services partly hinges on the usability of
the interface. TVs are easy to use, and the interface needs to flow
in smoothly without breaking the TV experience people are used
to“ Genevieve Bell2
D. h. die Anforderungen, sowie auch die weitere Ideenentwicklung kann in
zwei wichtige Teile eingeteilt werden:
Benutzerfreundlichkeit: Vor allem hinsichtlich der Gestaltung der Oberfläche, der Integration in das Fernsehbild und der Logik der Steuerung.
Technik: Hier sollten in erster Linie alle technischen Vorteile, welche durch
IPTV bzw. durch eine Verbindung mit dem Internet und mit fremden Datenservern möglich sind, genutzt werden. D. h. eine aktive Verwendung des Rückkanals muss im Endprodukt gegeben sein, um eine
gewisse Interaktivität zu gewährleisten. Weiters spielt die Schnelligkeit der Datenübertragung eine Rolle, die in enger Verbindung mit der
Benutzerfreundlichkeit steht.
Diese beiden Hauptanforderungen müssen im Plug-In bestmöglich miteinander verschmelzen damit ein optimales technisches sowie auch benutzerfreundliches Endergebnisse zustande kommen kann.
1
2
aus http://news.zdnet.com/2100-9595\_22-256992.html
aus http://www.itworld.com/print/59340
4. Entwurf und Konzept
4.3
50
Präzisierung der Idee
Nachdem die Grundidee gefunden und die Anforderungen an das Plug-In
gestellt sind, folgt nun die Präzisierung der konzeptionellen Anfangsgedanken
mit Rücksicht auf die in Abschnitt 4.2 definierten Anforderungen hinsichtlich
Benutzerfreundlichkeit und Technik.
4.3.1
Der Inhalt
Eine der am Anfang zu klärenden Fragen betrifft den Inhalt, welchen das
Plug-In darstellen sollte. D. h. welche Informationen sollen dem Benutzer zur
Verfügung stehen. Im Wesentlichen wurde der darstellbare Inhalt vom Umfang der bereits bestehenden Datenbank (DB) beeinflusst. Hinzu kam noch
die Zeitspanne, in der jene Daten aktualisiert wurden, d. h. ein Einflussfaktor war das bestehende System, mit welchem die Inhalte für die Datenbank
gemessen wurden3 .
Aufgrund der oben genannten Restriktionen kamen nur Inhalte in Frage,
welche sich aus den Daten der Datenbank berechnen oder übernehmen ließen.
Da das Plug-In zudem so simpel wie möglich gehalten werden sollte, wurden
folgende Läufer-spezifische Daten festgelegt:
• Startnummer
• Name des Läufers
• Gelaufene Kilometer
• Aktuelle Laufzeit
• Aktuelle Platzierung
• Aktuelle Geschwindigkeit
• Startgruppe
• Gruppenplatzierung
Weitere Überlegungen hinsichtlich des darzustellenden Inhalts betrafen
folgende Laufinformationen:
• Voraussichtliche Ankunftszeit
• Voraussichtliche Platzierung
3
Das System funktioniert mittels eines General Packet Radio Service (GPRS) Chips,
welchen der Läufer ständig bei sich trägt. Auf der gesamten Laufstrecke liegen in gleichmässigen Abständen Matten. Läuft nun ein Teilnehmer über diese Matte, wird er registriert und die Datenbank aktualisiert die jeweiligen Spalten des entsprechenden Läufers.
4. Entwurf und Konzept
51
• Voraussichtliche Gruppenplatzierung
• Durchschnittsgeschwindigkeit
• Laufzeit zwischen zwei Messpunkten
4.3.2
Die Funktionen
Das Augenmerk bei den Funktionalitäten der Anwendung lag auf der logischen Anordung, sowie der einfachen Bedienbarkeit hinsichtlich des Benutzers. Er sollte durch das Plug-In so wenig wie möglich in seinem normalen
Fernsehvergüngen gestört werden. Dennoch war es wichtig, die Applikation
so zu gestalten, dass sich der Seher bei größerem Interesse soviele Informationen wie möglich dadurch beschaffen konnte.
Die weiteren Überlegungen betreffend der Funktionalitäten waren von
den gegebenen Inhalten (siehe Abschnitt 4.3.1) sowie den Möglichkeiten hinsichtlich der zur Verfügung stehenden Technik abhängig. Folgende Überlegungen bezüglich des möglichen Funktionsumfanges des Plug-Ins wurden in
Erwägung gezogen:
Informationen über den favorisierten Läufer: Der Benutzer sollte sich
einen favorisierten Läufer (FL) auswählen können, dessen Informationen (siehe Abschnitt 4.3.1) standardmäßig angezeigt werden. Die Auswahl des FL könnte mittels einer Anmeldung auf einer Webseite (per
PC) oder bei Start der Anwendung passieren.
Liste aller Läufer: Dem Anwender steht eine geordnete Liste aller teilnehmenden Läufer zur Verfügung, welche er nach einem bestimmten
Teilnehmer durchsuchen kann.
Informationen über einen Läufer: Aus der Liste aller Teilnehmer kann
der Benutzer einen auswählen, dessen Informationen ihm im gleichen
Format wie jene des FL angezeigt werden.
Läufer wechseln: Die Applikation muss ein einfaches Wechseln zwischen
den verschiedenen Läufern und deren Informationen ermöglichen. Vor
allem sollte der Benutzer so einfach wie möglich wieder zu den Informationen seines FL zurückkehren können.
Ein-/Ausblenden der Applikation: Zur sanften, also nicht aufdringlichen Einbettung der Applikation in das Fernseherlebnis, soll sich jene
einfach ein- und ausblenden lassen können bzw. diese Funktion automatisch erledigen. Das Ausblenden ist, so scheint es, eine der wichtigsten
Funktionen hinsichtlich Benutzerfreundlichkeit, da die Benutzer laut
Intel den Wunsch haben, Fernsehapplikationen mit einem einfachen
4. Entwurf und Konzept
52
Knopfdruck verschwinden lassen zu können4 . Die Funktionalität des
Einblendens sollte abhängig von der Aktualität des Inhalts sein, d. h.
sobald die Informationen des FL in der Datenbank aktualisiert wurden,
sollen jene automatisch am Fernsehbildschirm erscheinen. Somit kann
der Benutzer seine gewünschte Passivität beim Fernsehen (siehe [17])
behalten und sich nur bei speziellen Wünschen der Bedienung widmen.
Standortinformationen des Läufers: Zur Erweiterung des Informationsinhalts bezüglich des gewählten Teilnehmers kann der Benutzer mittels
integrierter Satellitenansicht den aktuellen Standort betrachten.
Informationsvergleich der Läufer: Die Informationen (zB aktuelle Laufzeit, Geschwindigkeit oder Position) von zwei unterschiedlichen Läufern können miteinander verglichen werden. Auch der aktuelle Standort der beiden Läufer kann via Satellitenbild vergleichend betrachtet
werden.
Informationsvergleich eines Läufers: Eine weitere mögliche Funktionalität der Anwendung könnte der Informationsvergleich eines einzelnen
Läufers mit sich selbst sein, um zB Verbesserungen oder Verschlechterungen zum Vorjahresmarathon zu erkennen. Diese Funktion ist nur
entwickelbar, falls die alten Daten archiviert und zur Verfügung gestellt
werden.
Dies sind jene Funktionen, welche sich lediglich auf die Informationsüberlieferung der Marathon-spezifischen Daten des gewählten Läufers an den Benutzer konzentrieren. Zusätzlich zu diesen Fähigkeiten der Anwendung gibt
es eine Vielzahl weiterer Möglichkeiten. Eine Option wäre, dass sich die Informationen zB nicht nur auf jene aus der Datenbank beschränken. Wählt der
Benutzer einen berühmten Marathonläufer aus, so würden dem Anwender
bei Bedarf persönliche Details dieser Person aus dem Internet geliefert werden. Eine andere Möglichkeit wäre das Fernsehbild zu analysieren und nur
die darauf sichtbaren Läufer aufgrund ihrer Startnummer zu identifizieren
und deren Details anzuzeigen.
Die Liste der potentiellen Möglichkeiten eines solchen Plug-Ins sind umfangreich und müssen vor der technischen Entwicklung sorgfältig hinsichtlich
des gewünschten Zieles aussortiert werden.
Ein weiterer wichtiger Punkt des Funktionsumfanges betrifft die logische
Bedienung der Applikation. Aufgrund der Tatsache, die Bedienung für den
Benutzer so unkompliziert wie möglich zu gestalten4 , kann und sollte keine komplexe Menüstruktur umgesetzt werden. Die Navigationslogik sollte so
einfach und überschaubar realisiert werden, damit der Benutzer keine Probleme bei der Steuerung hat.
4
aus http://news.zdnet.com/2100-9595\_22-256992.html
4. Entwurf und Konzept
53
Abbildung 4.1: Dieser Ansatz der Benutzeroberfläche stellt alle Informationen gleichzeitig dar. Die Voraussetzung dafür ist ein zusätzliches Ein- und
Ausblenden der einzelnen Informationsfenster. Weiters ist das Fernsehbild
durch die Transparenz der einelnen GUI-Elemente nicht vollständig verdeckt.
Hauptfenster hierbei ist jenes Element mit den „Läuferinformationen“. Die
„Steuerungsinformationen“ dienen zur Erklärung der Navigation durch die
Anwendung bzw. der Funktionsweise des Plug-Ins, d. h. was muss auf der
Fernbedienung gedrückt werden, um zB die Läuferliste auszublenden. Die
Elemente „Läuferliste“ und „Standort des Läufers“ beinhalten einerseits eine
Liste aller Teilnehmer, andererseits ein Satellitenbild des aktuellen Standortes des Läufers.
4.3.3
Benutzeroberfläche
Wie schon in Abschnitt 4.2 erwähnt, soll sich die Anwendung sanft in das
bisherige Fernseherlebnis des Sehers einfügen. Hierbei spielt vor allem die
Gestaltung und Positionierung der Grafischen Oberfläche (GUI) eine entscheidende Rolle. Die Überlegungen hinsichtlich dieser Thematik befassen
sich vor allem mit der Größe und der Positionierung der Applikation, da die
grafische Gestaltung durch die vorhandenen grafischen Themen der Dreambox bereits vorbestimmt ist.
Abbildung 4.1 zeigt die ersten Versuche zur Positionierung, welche aber
hinsichtlich der Verbindung von Fernsehbild und Applikation nicht zufriedenstellend waren. Weitere Überlegungen zogen die gegenwärtigen GUI-Positionierungen auf dem Fernsehgerät in Betracht, vor allem jene hinsichtlich
4. Entwurf und Konzept
54
(a)
(b)
(c)
Abbildung 4.2: Diese Abbildungen zeigen die verschiedenen Modi der Applikation. Der Standardmodus (a) besteht aus einem aus- und einblendbaren
Element, das die Informationen eines Läufers anzeigt. Neben diesen Informationen gibt es auch noch Auskunft über die Funktionsweise der Navigation, die auch im „Standort“-Modus (b) gegeben wird. Dieser Modus zeigt
den aktuellen Standort des Läufers in Form eines Satellitenbildes. (c) zeigt
den „Listen“-Modus, welcher eine Liste aller Läufer anzeigt. Auch hier gibt
es wieder Steuerungsinformationen. Es ist möglich zwischen allen Modi zu
wechseln.
4. Entwurf und Konzept
55
Abbildung 4.3: Positionierung der allgemeinen Kanal- und Programminformation bei Verwendung der Dreambox DM 800 HD PVR.
der allgemeinen Kanal- und Programminformation (siehe Abbildung 4.3).
Diese Informationen werden stets am unteren Rand des Fernsehbildschirms
angezeigt und verschwinden meist nach einiger Zeit wieder automatisch (hierbei entstand auch die Idee der Ein-/Ausblend-Funktion aus Abschnitt 4.3.2).
Untertitel, d. h. spezielle Informationen zu Filmen, erscheinen auch stets im
unteren Bereich des Fernsehbildschirms. Aussagen der Intel-Anthropologin
Genevieve Bell zufolge, bevorzugen Seher den unteren Rand bei der Positionierung der Widget Channel Applikation, da jene an Informationen in diesem
Bereich ohnehin gewohnt sind5 . Somit zeigt und erklärt Abbildung 4.2 die
GUI-Positionierung und -Aufteilung nach diesen Überlegungen.
4.3.4
Programmlogik
Die in Abbildung 4.2 gezeigte Benutzeroberflächenlösung war ein wichtiges
Kriterium bei den Überlegungen hinsichtlich der Programmlogik, d. h. wie
ist die Applikation zu bedienen, was ist von wo aus steuerbar. Aufgrund
der Aufteilung in drei verschiedene Programmmodi ist eine grundsätzliche
Programmlogik bereits vorgegeben.
Wie schon in Abschnitt 4.3.3 erwähnt, soll der Benutzer vom aktiven
Modus die zwei inaktiven Modi erreichen. Diese Tatsache setzt voraus, dass
für jeden Modi eine spezielle Taste auf der Fernbedienung zuständig ist, welche sich unabhängig vom aktiven Modus nicht verändert, dies wäre also eine
5
aus http://www.itworld.com/print/59340
4. Entwurf und Konzept
56
Abbildung 4.4: Diese Grafik zeigt den Funktionsaufbau der einzelnen Modi. Die Anwendung ist aufgeteilt in drei Module, die „Läuferinformation“, die
„Läuferliste“ und den „Läuferstandort“. Alle drei Programmteile sind funktionsmässig miteinander verknüpft, d. h. bei zB aktuellem „Läuferliste“-Modus,
wird bei Auswahl eines bestimmten Läufers in den „Läuferinformations“Modus gewechselt. Zusätzlich kann dessen Standort im „Läuferstandort“Modus angesehen werden. Weiters müssen bestimmte Daten zwischen den
Modulen ausgetauscht werden (dazu später mehr in Kapitel 6). In jedem
Modus soll es möglich sein, die Anwendung beenden zu können. Zusätzlich
verfügt jedes der einzelnen Module über eigene Funktionen.
global gültige Bedienungsregel. Neben den global gültigen Regeln bzw. Funktionen gibt es noch Modus-spezielle Funktionen, welche nur für den jeweils
aktiven Modus gelten (beim „Läuferlisten“-Modus zB die Funktion, die Liste
zu durchsuchen oder einen Eintrag aufgrund einer Sucheingabe zu finden).
Abbildung 4.4 gibt eine Übersicht über die verschiedenen Funktionalitäten
der einzelnen Modi und wie diese miteinander verknüpft sind. Die finale Lösung hinsichtlich der Programmlogik wird in Abschnitt 6.1 näher erörtert.
Kapitel 5
Technologien
Für die technische Umsetzung des in Kapitel 4 beschriebenen Konzepts waren einige zu verwendende Technologien schon vorgegeben (zB Dreambox ).
Auch hinsichtlich der Softwaretechnologie zur Plug-In Programmierung wurde die Auswahl an Programmiersprachen auf eine einzige – Python 1 – reduziert. In diesem Kapitel wird nun auf die verschiedenen Technologien eingegangen.
5.1
Hardwaretechnologien
Die für die Umsetzung verwendete Hardwaretechnologie wurde durch das
Konzept dieses Projekt bereits festgelegt. Wie in Kapitel 4 erwähnt, befasst
sich das praktische Projekt damit, ein Plug-In für die STB Dreambox DM 800
HD PVR zu enwickeln. Diese Tatsache selbst legt nicht gänzlich fest, dass die
Hardwaretechnologie auch jene Box sein muss, denn wie schon in Abschnitt
2.4.1 erklärt, kann jene grafische Programmschnittstelle – die Enigma2 –,
welche unter Anderem auf der DM 800 Verwendung findet, auch auf PCs
benutzt werden. Deshalb war die praktische Umsetzung des Konzepts hinsichtlich der zur Verfügung stehenden Hardware nicht völlig eingeschränkt.
Die Entscheidung fiel letztendlich trotzdem auf die in den Abschnitten
2.3 und 2.4.1 näher erläuterte Version der Dreambox (siehe Abbildung 2.2).
Ein Grund dafür war der geringere Arbeitsaufwand zu Beginn der Durchführung, da die nötige Software schon auf dem Gerät installiert ist und das
Augenmerk nun primär auf der Entwicklung des Plug-Ins liegen konnte. Ein
zusätzlicher, wohl noch ausschlaggebenderer Grund war, dass die Verwendung von Enigma2 auf einem Computer noch nicht gänzlich ausgereift ist2 .
Dies hätte den Prozess der Entwicklung um einiges erschwert und der nötige
Fokus auf die Entwicklung einer für den Benutzer optimalen Applikation –
wie in Kapitel 4 beschrieben – wäre nicht mehr so stark gewesen.
1
2
http://www.python.org
aus http://dream.reichholf.net/wiki
57
5. Technologien
58
Die Dreambox hinsichtlich ihrer Hardware bietet – wie bereits in Kapitel
2 erwähnt – folgendes:
• 300 Megahertz(MHz) MIPS3 Prozessor
• Organische Leuchtdiode (OLED) für die Anzeige
• MPEG-2 / H.264 Hardware-Dekodierung
• DVB-S Tuner4
• Smartcard Leser
• 64 Megabyte Flash-Electrically Erasable Programmable Read Only Memory (EEPROM)
• 256 Megabyte RAM
• Integrierter Serial Advanced Technology Attachment (SATA) Anschluss
• Infrarot (IR) Fernbedienung mit äquivalentem IR-Empfänger an der
Dreambox
Angeschlossen wird diese STB entweder via DVI und HDMI oder via
SCART an das Fernsehgerät. Ein weiterer wichtiger Teil der HardwareAusstattung ist die Fernbedienung, welche die Benutzerschnittstelle darstellt.
Der Anwender steuert damit die Applikation, in dem er die dafür vorgesehenen Tasten bedient. Das in Kapitel 4 erläuterte Plug-In verwendet zur
Steuerung nicht alle Tasten der Fernbedienung. Es beschränkt sich lediglich
auf die in Abbildung 5.1 gezeigten. Im nächsten Kapitel wird die Verwendung
der einzelnen Tasten und die dafür nötige Implementierung ausführlicher erklärt.
5.2
Softwaretechnologien
Die Auswahlmöglichkeiten hinsichtlich der Softwaretechnologien war größtenteils vorgegeben. Da die GUI der Dreambox – Enigma2 – grundsätzlich
in Python entwickelt ist (siehe dazu Abschnitt 2.4.1), ist diesbezüglich eine
Plug-In-Entwicklung in Python ebenso vorgesehen. Um ein Plug-In erstellen
zu können, ist ein Standardaufbau vorgegeben, welcher entsprechend erweitert und verändert werden kann bzw. muss. Dieser Aufbau wird in diesem
Abschnitt erklärt, in Abschnitt 6.1 wird konkret auf das entwickelte Plug-In
und dessen speziellen Aufbau eingegangen.
3
„Microprocessor without Interlocked Pipeline Stages“ bzw. „Mikroprozessor ohne
Pipeline-Sperren“
4
DVB-C und DVB-T sind optional
5. Technologien
59
Abbildung 5.1: Die Fernbedienung der DM800. Hervorgehoben sind jene
Tasten, welche beim Plug-In eine Funktion haben.
Alle Plug-Ins, welche auf der Dreambox installiert sind, liegen im Ordner /usr/lib/enigma2/python/Plugins. Dort sollte auch jene Anwendung
einen Ordner besitzen, welche selbst erstellt wird5 . Im Ordner selbst kann die
Aufteilung hinsichtlich Dateien in Unterordnern oder Code in .py-Dateien
beliebig gestaltet werden5 . Vorgabemässig müssen folgende zwei Dateien vorhanden sein, damit das Plug-In ordnungsgemäß ausgeführt werden kann5 :
__init__.py: Diese Datei muss keine Information bzw. keinen Code enthalten – kann also leer sein – sie wird dennoch zur Ausführung des
Plug-Ins benötigt, da das Verzeichnis ansonsten von Python nicht als
Modul erkannt wird5 .
plugin.py: Diese Datei stellt das Hauptskript der Applikation dar, dessen
Inhalt teilweise vorgegeben ist, wie Listing 5.1 zeigt5 .
5
aus http://dream.reichholf.net/wiki
5. Technologien
60
Listing 5.1: plugin.py
from Plugins.Plugin import PluginDescriptor
#Import des PluginDescriptors, welcher der GUI Eigenschaften des Plugins
#übergibt (zB Wie lautet der Name? In welchem Menü soll es angezeigt
#werden? ...)
1
2
3
4
5
#Funktion welche noch bevor das Plugin gestartet, zur Ermittlung der
#Eigenschaften des Plug-Ins aufgerufen wird.
#Rückgabewert dieser Funktion ist entweder ein einzelner PluginDescriptor
#oder eine Liste von PluginDescriptoren
def Plugins(**kwargs):
#hier wird ein einzelner PluginDescriptor zurückgegeben, welcher unter
#Anderem angibt, dass das Plug-In im Plug-In-Menü der Dreambox
#erscheint
return PluginDescriptor(name="my_Plugin", description="Example
Plugin", where=PluginDescriptor.WHERE_PLUGINMENU, fnc=main)
6
7
8
9
10
11
12
13
14
15
#die zweite Option zur Rückgabe wird hier gezeigt, eine Liste
#von PluginDescriptoren, wobei das erste Plug-In im Plug-In-Menü, das
#zweite beim Autostart der Box aufgerufen wird
return [PluginDescriptor(name="my_Plugin", description="Example
Plugin", where=PluginDescriptor.WHERE_PLUGINMENU, fnc=main),
PluginDescriptor(where = PluginDescriptor.WHERE_AUTOSTART,
fnc = autostart) ]
16
17
18
19
Neben dem in Listing 5.16 gezeigten Code gibt es natürlich auch eine
main-Funktion, welche beim Start des Plug-Ins aufgerufen wird. Diese Funktion erhält einen Parameter session, welcher sich zB um den Aufruf eines Screens kümmert, wie in Listing 5.26 , wobei es sich hierbei um zwei
Varianten des Screen Aufrufs handelt. Im Gegensatz zu session.open verfügt session.openWithCallback über einen zweiten Parameter, welcher eine Funktion angibt, die beim Schließen des mit session.openWithCallback
geöffneten Screens aufgerufen wird.
Nun sollte ausgehend von der main-Methode die gesamte Programmlogik
aufgebaut werden.
Listing 5.2: Aufrufen eines Screens
#Variante 1
session.open(<screen>)
#Variante 2
session.openWithCallback(<boxClosed>, <screen>)
1
2
3
4
Der Platzhalter <boxClosed> steht für die Methode, welche beim Schließen des jeweiligen Screens aufgerufen wird. Der Ausdruck <screen> stellt ein
Objekt einer Klasse dar, welche von Screen abgeleitet ist und den Aufbau
sowie die Funktionalität des zu öffnenden Screens beschreibt. Ein einfacher
Aufbau einer solchen Klasse wird in Listing 5.36 gezeigt.
6
aus http://dream.reichholf.net/wiki
5. Technologien
61
Listing 5.3: MyPlugin Klasse
class MyPlugin(Screen):
#Diese Variable definieren Aussehen und Inhalt des Screens
#Diese Angaben können entweder direkt an dieser Stelle gemacht werden
#oder in eine XML-Datei ausgelagert werden
skin = """
<screen position ="20,20" size="300,200" title ="Anfangs−Screen" >
<widget name="button" position="10,0"
size ="190,250" scrollbarMode="showOnDemand" />
<widget name="label" position="200,0"
size ="190,250" alphatest="on" />
</screen>"""
1
2
3
4
5
6
7
8
9
10
11
12
#Konstruktor der Funktion
def __init__(self, session, args = None):
#die Screen-Klasse muss hier ebenfalls initialisiert werden um über
#alle Funktionen verfügen zu können
Screen.__init__(self, session)
13
14
15
16
17
18
#hier werden die Variablen des Screens initalisiert, welche im XML-Code
#definiert wurden
self["button"] = Button(_("ButtonName"))
self["label"] = Label(_("LabelName"))
19
20
21
22
23
#zusätzlich wird mittels einer ActionMap bestimmt, welche Tasten der
#Fernbedienung bedienbar sind und wofür diese zuständig sind
#pro verwendeter Taste wird eine Klassenfunktion angegeben, welche
#beim Drücken der Taste aufgerufen wird
self["actions"] = NumberActionMap(["WizardActions", "
InputActions"],
{
"ok": self.ok,
"back": self.close,
"left": self.keyLeft,
"right": self.keyRight,
"1": self.keyNumberGlobal,
"2": self.keyNumberGlobal,
"3": self.keyNumberGlobal,
"4": self.keyNumberGlobal,
"5": self.keyNumberGlobal,
"6": self.keyNumberGlobal,
"7": self.keyNumberGlobal,
"8": self.keyNumberGlobal,
"9": self.keyNumberGlobal,
"0": self.keyNumberGlobal
}, -1)
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Listing 5.37 zeigt die Möglichkeit des in die Python-Datei integrierten
7
aus http://dream.reichholf.net/wiki
5. Technologien
62
Screen-Aufbaus. Als zusätzliche Option existiert die Auslagerung dieser Angaben in eine seperate .xml-Datei. Dies ist vor allem üblich oder praktisch,
falls der grafische Aufbau etwas komplexer ist oder eine Reihe von Widgets
aufgelistet sind. Listing 5.48 zeigt den oben beschriebenen Screen, wie er in
einer xml.-Datei umgesetzt werden würde.
Listing 5.4: skin.xml
<skin>
<screen name="MyPlugin" position="20,20" size="300,200" title="
Anfangs-Screen" >
<widget name="button" position="10,0"
size="190,250" scrollbarMode="showOnDemand" />
<widget name="label" position="200,0"
size="190,250" alphatest="on" />
</screen>
</skin>
1
2
3
4
5
6
7
8
Der einzige Unterschied zur Implementierung in Listing 5.32 ist, dass
<skin> den restlichen Code als weiteres Element umschließt und dass <screen>
als zusätzliches Attribut name enthält. Beide Lösungen ergeben den exakt
gleichen Screen.
Die einzelnen <widget> Elemente werden nun einer passenden Klasse zugewiesen, wie Listing 5.38 zeigt. Hierbei gibt es vordefinierte Klassen, welche
im Ordner /usr/lib/enigma2/python/Plugins/Components zu finden sind.
Als Beispiel sind hier Label() und Button() angegeben, wobei Label() zB
die Kennzeichnung eines Elementes darstellt. Button() hingegen wird dazu
verwendet, ein Element als Schaltfläche auszuzeichnen, welche aktivier- bzw.
deaktivierbar ist.
Der Entwickler hat nun zusätzlich die Möglichkeit eine beliebige Anzahl
von Klassen, welche von Screen abgeleitet sind, zu kreieren und diese in
beliebiger Reihenfolge und willkürlich zu verwenden.
Um nun ein solches entwickeltes Plug-In auf der Dreambox abspeichern
zu können, gibt es verschiedene Arten des Zugriffs auf jene (wie schon in
Abschnitt 2.3.3 kurz erwähnt). Eine Verbindung zwischen Dreambox und einem Windows PC kann mittels Samba hergestellt werden. Die STB kann
dadurch simpel über die Netzwerkumgebung von Windows erreicht werden
(siehe Abbildung 5.2). Da Linux als Betriebssystem auf der Dreambox läuft,
gibt es eine Zugriffsoption, die es ermöglicht, direkt auf die Shell zugreifen zu
können. Dies ist via Telnet oder Secure Shell (SSH) 9 realisierbar (siehe Abbildung 5.3) und wird meist nur für administrative Zwecke verwendet8 . Für
die Realisierung eines solchen Zugriffs existieren verschiedenste Programme
wie zB das in Abbildung 5.4 gezeigte PuTTY10 .
8
aus http://dream.reichholf.net/wiki
http://cplus.about.com/od/glossar1/g/SSH.htm
10
http://www.chiark.greenend.org.uk/~sgtatham/putty/
9
5. Technologien
63
Abbildung 5.2: Zugriff auf die Dreambox mittels Netzwerkumgebung via
Samba.
Abbildung 5.3: Zugriff auf die Dreambox mittels PuTTY via Telnet bzw.
SSH.
5.3
Netzwerkprogrammierung
Dieser Abschnitt behandelt das Thema Netzwerkprogrammierung hinsichtlich der Verbindung der externen Läuferdatenbank mit dem Plug-In. Anfänglich wurden zwei Aufbauarten von Verbindungen in Betracht gezogen:
Socket API: Dies stellt eine Reihe von Funktionen für die Netzwerkprogrammierung zur Verfügung, welche es ermöglichen, Daten via zB TCP
zu übertragen [19]. Für Client und Server ergibt sich dadurch die Möglichkeit, verschiedene APIs sowie auch Betriebssysteme zu verwenden,
vorausgesetzt es wird das gleiche Netzwerkprotokoll zur Datenübertragung eingesetzt [19]. Somit können nun Daten vom Client zum Server
5. Technologien
64
Abbildung 5.4: PuTTY - ein Client-seitiges, freies Programm für MS Windows und Unix um auf einen SSH- bzw. Telnet-Server zugreifen zu können.
und vice versa übertragen werden. Listing 5.6 und 5.5 [16, S. 565]
veranschaulichen einen einfachen Aufbau eines solchen Netzwerkübertragungssystems in Python.
Remote Procedure Call (RPC): Bei dieser Lösung der Netzwerkübertragung werden Client-seitig Server-seitige Funktionen aufgerufen [19].
Für den Entwickler selbst hält sich der Netzwerkprogrammierungsteil in Grenzen bzw. wird gänzlich obsolet. Zur Durchführung von
RPC ist die Einbindung spezieller Programmbibliotheken nötig, wie
zB xmlrpclib11 im Falle von Python. Listing 5.8 und 5.7 [16, S. 803]
stellen eine einfache Anwendung von xmlrpclib dar.
11
http://docs.python.org/library/xmlrpclib.html
5. Technologien
65
Listing 5.5: Socket Server
1
import socket
2
3
4
5
6
#Symbolischer Name, bedeutet alle verfügbaren Schnittstellen
HOST = ''
#Zufälliger, nicht belegter Port
PORT = 50007
7
8
9
10
11
12
#Erstellung eines neuen Sockets
#AF_INET definiert IPv4 als Protokollfamilie
#SOCK_STREAM bestimmt die Kommunikation via TCP
#Bei SOCK_DGRAM würde via UDP kommuniziert werden
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
13
14
15
#Bindet den Socket an die Adresse (definiert durch HOST und PORT)
s.bind((HOST, PORT))
16
17
18
19
#Warten (Horchen) auf Verbindungen zum Socket
#Der Parameter gibt die maximale Anzahl an möglichen Verbindungen an
s.listen(1)
20
21
22
23
24
25
26
#Akzeptieren eine Verbindung
#Rückgabewert ist einerseits „conn“ welches zum Senden und Empfangen von
#Daten zuständig ist
#Andererseits „addr“ welches die an den Socket gebundene Adresse auf der
#anderen Seite (d. h. beim Client) darstellt
conn, addr = s.accept()
27
28
29
30
31
32
33
while 1:
#vom Client gesendete Daten werden empfangen
data = conn.recv(1024)
if not data: break
#die empfangenen Daten werden wieder an den Client zurückgeschickt
conn.send(data)
34
35
36
37
#Schließen des Sockets, vom Client gesendete Daten werden somit nicht
#mehr empfangen
conn.close()
Listing 5.6: Socket Client
1
import socket
2
3
4
5
6
#Server
HOST = 'daring.cwi.nl'
#gleicher Port wie beim Server
PORT = 50007
7
8
9
#Erstellung eines neuen Sockets
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
5. Technologien
66
10
11
12
#Verbinden zum Server
s.connect((HOST, PORT))
13
14
15
#Senden der gewünschten Daten
s.send('Hello, world')
16
17
18
#Empfangen der vom Server gesendeten Daten
data = s.recv(1024)
19
20
21
1
#Schließen der Verbindung
s.close()
Listing 5.7: RPC Server
import SimpleXMLRPCServer
2
3
4
5
#Erstellen des Servers, welcher auf einkommende Anfragen des „localhost“ auf
#Port 8000 wartet
server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost",
8000))
6
7
8
9
#Erstellen einer Funktion
def add(x,y):
return x + y
10
11
12
13
#Registrieren der definierten Funktion um jene für den Client zugängig
#machen zu können
server.register_function(add)
14
15
16
17
18
#Erstellen einer Klasse mit Funktion
class MyFuncs:
def div(self, x, y):
return x // y
19
20
21
22
#Registrieren der gesamten Klasse MyFuncs um diese für den Client zugängig
#zu machen
server.register_instance(MyFuncs())
Listing 5.8: RPC Client
1
import xmlrpclib
2
3
4
5
#Erstellen des XMLRPC Server Proxy Objekts, welches auf den passenden
#Server verweist
s = xmlrpclib.ServerProxy('http://localhost:8000')
6
7
8
9
#Aufrufen der registrierten Server-seitigen Funktionen
print s.add(2,3) #Gibt 5 zurück
print s.div(5,2) #Gibt 5//2 = 2
5. Technologien
67
10
11
12
#Gibt die Liste der verfügbaren Methoden aus
print s.system.listMethods()
XMLRPC in dieser Form verwendet xml zur Enkodierung und http zum
Transport der Daten. Da mittels http übertragen wird, wird TCP als grundlegendes Protkoll verwendet [20]. Obwohl in Kapitel 1 UDP als das vorteilhaftere Protokoll zur Übertragung bei IPTV erwähnt wird, ist die Verwendung von TCP bei dieser praktischen Arbeit problemlos zu vertreten, da
jene Daten, welche gesendet werden, nicht in dem Ausmaß zeitsensibel sind,
wie Audio- und Videoinhalte von Fernsehkanälen. Somit wird eine minimale Verzögerung bei der Übertragung der Daten vom Benutzer meist nicht
erkannt.
Wie schon in Listing 5.8 ersichtlich, wird Pythons xmlrpclib nur Clientseitig verwendet, um auf registrierte Funktionen des Servers zugreifen zu
können. Eines der wichtigsten Elemente hinsichtlich der möglichen Benutzung von XMLRPC beim Client, ist die Instanz des ServerProxy Objektes,
welche sich hauptsächlich um die Kommunikation mit dem XMLRPC Server
kümmert [16]. Server-seitig ist zur Verwendung von XMLRPC der Import
der SimpleXMLRPCServer Bibliothek obligat. Diese stellt ein einfaches Server
System für XMLRPC Server dar [16]. Die Bibliothek selbst verfügt über eine Klasse SimpleXMLRPCServer, welche – siehe Listing 5.7 – über Methoden
zur Registrierung von Funktionen oder Klassen verfügt, die vom XMLRPC
Protokoll aufgerufen werden können [16].
Die praktische Arbeit verwendet hinsichtlich der Netzwerkprogrammierung jene XMLRPC Funktionen für Python, da diese vor allem den Vorteil
der einfachen Umsetzung mit sich bringen, zumal die Netzwerkprogrammierung hauptsächlich von der Bibliothek selbst übernommen wird. Durch die
Verwendung von XMLRPC konzentriert sich die Entwicklung des Projektes
auf den Hauptteil – die Erstellung des Dreambox Plug-Ins.
Kapitel 6
Implementierung
Dieses Kapitel beschäftigt sich mit dem konkreten Projekt bzw. Plug-In,
dessen Entwurf und Technologien in den vorangegangenen Abschnitten besprochen wurden. Hier wird ein Einblick in die Implementierung hinsichtlich
Plug-In, Netzwerk und GUI gegeben.
6.1
Das Plug-In
Dieser Abschnitt gibt eine Übersicht über die aus Kapitel 4 tatsächlich realisierten Funktionen und den endgültigen Aufbau des Dreambox Plug-Ins.
Die Aufteilung der einzelnen Funktionalitäten in drei unterschiedliche
Screens, wie in Abschnitt 4.3.3 beschrieben, wurde beibehalten. Deshalb wird
nun zuerst auf die einzelnen Zuständigkeiten der verschiedenen Plug-In Module und danach auf deren Interaktion untereinander eingegangen.
6.1.1
Läuferinfo Modus
Dieser stellt das Standardfenster (siehe Abbildung 6.1) der Applikation dar,
welches nach dem Starten und Anmelden (mehr dazu später) sofort die Informationen des favorisierten Läufers angezeigt. Jene Informationen bestehen,
wie teilweise in Abschnitt 4.3.1 erwähnt, aus folgenden Inhalten:
Abbildung 6.1: Läuferinfo Modus.
68
6. Implementierung
69
• Name des Läufers
• Startnummer des Läufers
• Information ob jener Läufer der FL ist
• Gelaufene Kilometer
• Aktuelle Laufzeit
• Aktuelle Platzierung
• Startgruppe
• Gruppenplatzierung
• Durchschnittliche Laufgeschwindigkeit
Zusätzlich befinden sich rechts neben diesen Informationen drei Schaltflächen in blau, gelb und grün, welche für verschiedene Funktionen zuständig
sind.
Blaue Schaltfläche: Diese zeigt dem Benutzer an, falls er die blaue Taste
auf seiner Fernbedienung drückt, so wechselt er von diesem Modus in
den Standort Modus (siehe Abschnitt 6.1.3).
Gelbe Schaltfläche: Drückt der Benutzer nun die gelbe Taste auf seiner
Fernbedienung, so werden entweder die Daten des angezeigten favorisierten Läufers aktualisiert oder – falls der favorisierte Läufer zur Zeit
nicht angezeigt wird – die Informationen seines FL geladen.
Grüne Schaltfläche: Beim Drücken der grünen Taste wechselt die Anwendung vom Läuferinfo Modus in den Listen Modus (siehe Abschnitt
6.1.2).
Dieses Modul wurde – sowie auch die anderen zwei Module –, wie in
Abschnitt 5.2 beschrieben, als von Screen abgeleitete Klasse SNSInfobar1
umgesetzt. Neben Screen als Superklasse besitzt SNSInfobar eine zusätzliche Superklasse – InfoBarShowHide2 – welche es ermöglicht, den Screen
automatisch sowie auch manuell ein- und auszublenden. Listing 6.1 zeigt
den elementaren Aufbau der SNSInfobar-Klasse.
1
2
Sports Notification System (SNS) Infobar
Pfad /usr/lib/enigma2/python/Screens/InfoBarGenerics.py
6. Implementierung
1
2
3
70
Listing 6.1: SNSInfobar.py
class SNSInfobar(Screen, InfoBarShowHide):
#Aufbau des Screens im xml Format
raw_skin = """ ... """
4
5
6
7
8
9
10
def __init__(self, session, clientID, runID = None):
Screen.__init__(self, session) #Initialisierung der Superklasse
InfoBarShowHide.__init__(self) #Initialisierung der Superklasse
...
#Anwenden des definierten Screen Aufbau
self.skin = applySkinVars(SNSInfobar.raw_skin,skindict)
Die GUI dieses Moduls besteht hauptsächlich aus Label-, ePixmap- und
Button-Elementen, wobei die beiden Letzteren zur Darstellung der drei Schaltflächen auf der rechten Seite gebraucht werden. Listing 6.2 und 6.4 zeigen
Beispiele aus dem xml-Code der Elemente mit dazugehörigem Python-Code
zur Initialisierung.
1
2
3
4
5
6
7
8
9
10
11
Listing 6.2: Label
...
#xml-Code eines Informationselementes
<widget name="kmInfoLabel" position="25,30" size="180,15"
valign="center" font="Regular;20" transparent="1"
foregroundColor="blue" shadowColor="black"
shadowOffset="-1,-1" zPosition="3" halign="left" />
<widget name="kmInfo" position="205,30" size="400,15"
valign="center" font="Regular;20" transparent="1"
foregroundColor="white" shadowColor="black"
shadowOffset="-1,-1" zPosition="3" halign="left" />
...
12
13
14
15
16
17
18
#Funktion welche die Labels mit Inhalten füllt
def setLabels(self):
...
self["kmInfoLabel"] = Label(_("gelaufene km"))
self["kmInfo"] = Label(self.getKMInfo())
...
19
20
21
22
23
24
25
#Funktion welche die Inhalte aus einer erstellten Informationsliste
#filtert und zurückgibt
def getKMInfo(self):
km = self.runnerInfoList[2]
return "%skm/42.195km" % (km)
...
Pro Informationselement existieren zwei xml-Widgets, wobei das Erste
die dargestellte Information für den Benutzer betitelt und das zweite Element die aus der Datenbank ausgelesene Information visualisiert. Diese Information ist in der SNSInfobar-Klasse in Form einer Liste (runnerInfoList)
6. Implementierung
71
verfügbar, welche ständig neu, durch einen Aufruf der entsprechenden ServerFunktion (per RPC – siehe Abschnitt 6.2) aktualisiert wird. Zur adäquaten
GUI-Aktualisierung wird der Inhalt des passenden Label, wie Listing 6.3
zeigt, verändert.
Listing 6.3: Label Aktualisierung
...
def updateLabels(self):
...
self["kmInfo"].setText(self.getKMInfo())
...
1
2
3
4
5
Listing 6.4: Button
...
#xml-Code einer Schaltfläche
<widget name="yellowKey" position="450,40" size="140,40"
transparent="1"
zPosition="3" valign="center" halign="center"
foregroundColor="white" shadowColor="black" shadowOffset=
"-1,-1"
font="Regular;20" />
<ePixmap name="yellow" position="450,40" size="140,40"
transparent="1"
zPosition="2" pixmap="skin_default/buttons/yellow.png"
alphatest="on" />
...
def __init__(self, session, clientID, runID = None):
...
#Initialisieren der Schaltfläche
self["yellowKey"] = Button(_("My Runner"))
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Für jede Schaltfläche gibt es zwei verschiedene Arten von xml-Elementen,
einerseits ein widget, welches als Button initialisiert und mit einem Titel
versehen wird. Andererseits besteht die Schaltfläche aus einer ePixmap, welche den Hintergrund des Buttons definiert. In diesem Fall wird eine Portable
Networks Graphics (PNG) 3 -Datei angegeben, welche auf der Dreambox standardmäßig zur Verfügung steht.
Um nun die Funktionen der einzelnen Schaltflächen definieren zu können,
werden in einer speziellen xml-Datei die für jenen Modus aktiven Tasten der
Fernbedienung als ActionMap (siehe Abschnitt 5.2) definiert. Listing 6.5 zeigt
als Beispiel die Definition der ActionMap des Läuferinfo-Moduls.
3
http://www.libpng.org/pub/png/
6. Implementierung
72
Listing 6.5: Auszug aus keymap.xml
1
2
3
4
5
6
7
8
9
10
11
12
<keymap>
...
<map context = "SNSInfobarActions">
<key id="KEY_OK" mapto="ok" flags="m" />
<key id="KEY_BLUE" mapto="googleMaps" flags="m" />
<key id="KEY_EXIT" mapto="exit" flags="m" />
<key id="KEY_RED" mapto="updateInfo" flags="m" />
<key id="KEY_GREEN" mapto="searchRunner" flags="m" />
<key id="KEY_YELLOW" mapto="getFavRunner" flags="m" />
</map>
...
</keymap>
Innerhalb des <keymap>-Elements können mehrere ActionMaps mittels
<map> definiert werden. Das context Attribut bezeichnet jene ActionMap.
Durch das Hinzufügen von <key>-Elementen können einzelne Tasten der
Fernbedienung per passender id Angabe ausgewählt und speziell bezeichnet
werden (mapto Attribut). Listing 6.6 zeigt, wie die vordefinierten ActionMaps
in einer Screen-Klasse Verwendung finden.
1
2
3
4
5
6
7
8
9
10
11
12
Listing 6.6: Verwendung der ActionMap
def __init__(self, session, clientID, runID = None):
...
self["actions"] = ActionMap(["SNSInfobarActions"],
{
"ok": self.keyOK,
#ok key
"googleMaps": self.getMap,
#blue key
"updateInfo": self.updateLabels,
#red key
"searchRunner": self.getRunnerList, #green key
"getFavRunner": self.getFavRunner, #yellow key
"exit": self.exit
#exit key
}, -1)
...
Hier wird definiert, welche Funktion beim Drücken der vom Benutzer
gewählten Taste ausgeführt wird.
Neben dem Darstellen von Läufer-spezifischen Informationen, birgt dieses Modul auch eine Ein- und Ausblend-Funktion in sich. Wie schon zuvor
erwähnt, hat die Klasse SNSInfobar auch InfoBarShowHide als Superklasse,
welche diese Funktionalität zur Verfügung stellt. Die Eigenschaft des Ausblendens wird automatisch nach 5000 Millisekunden (ms) ausgeführt, falls
die Infobar eingeblendet war. Mit der Taste OK hat der Benutzer selbst die
Möglichkeit, das Ein- und Ausblenden manuell zu vollziehen. Zusätzlich zu
dieser Funktion wurde eine weitere implementiert, welche die GUI automatisch einblendet (falls diese ausgeblendet ist), wenn die Daten des Läufers
aktualisiert worden sind. Listing 6.7 zeigt die praktische Umsetzung dieser
6. Implementierung
73
Eigenschaft, welche alle 10000ms überprüft, ob neue Daten in der Datenbank
abgespeichert wurden.
Listing 6.7: Automatisches Einblenden bei aktuellen Daten
1
2
3
4
5
6
7
8
9
10
from enigma import eTimer
...
def __init__(self, session, clientID, runID = None):
...
#Timer zum Überprüfen der Aktualität der Datenbank
self.checkDataTimer = eTimer()
#Funktion welche beim Ablauf des Timers aufgerufen wird
self.checkDataTimer.callback.append(self.checkData)
#Funktion welche beim Beenden des Konstruktors aufgerufen wird
self.onLayoutFinish.append(self.onLayoutFinished)
11
12
13
14
def onLayoutFinished(self):
#Start des Timers
self.checkDataTimer.start(10000,True)
15
16
17
18
19
20
21
#Funktion zum Überprüfen der Aktualität der Datenbank
def checkData(self):
self.checkDataTimer.stop()
...
#Aufruf der Server-Funktion bezüglich Aktualität der Daten
update = self.proxy.isUpdateNew(self.runID, True)
22
#Neue Daten
if update:
#Aktualisieren der Daten
self.updateLabels()
#Infobar anzeigen
self.showScreen()
#Timer neu starten
self.checkDataTimer.start(10000,True)
#Keine neuen Daten
else:
#Timer neu starten
self.checkDataTimer = eTimer()
self.checkDataTimer.callback.append(self.checkData)
self.checkDataTimer.start(10000,True)
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
...
Über die beschriebenen Funktionalitäten hinaus, hat der Benutzer noch die
Möglichkeit, die Applikation per EXIT -Taste zu beenden. Abbildung 6.2
gibt eine Übersicht der Tasten der Fernbedienung, welche in diesem Modus
genutzt werden und welche Funktionen sie übernehmen.
6. Implementierung
74
Abbildung 6.2: Funktionstasten im Läuferinfo-Modus.
Abbildung 6.3: Listen Modus.
6. Implementierung
6.1.2
75
Listen Modus
Dieser Modus zeigt dem Benutzer eine Liste aller Teilnehmer (siehe Abbildung 6.3), aus denen er einen wählen und dessen Informationen im LäuferinfoModus betrachten kann. Die Liste der Läufer wird nach deren aktuellen Positionierungen sortiert. Die Startnummern der Läufer stehen nach dem Namen,
weiters wird der vom Benutzer favorisierte Läufer speziell (mit einem „F“)
gekennzeichnet.
Dieser Modus wurde wiederum als eine eigene Klasse – SNSRunnerList
–, welche wiederum von der Screen Klasse erbt, umgesetzt. Der xml-Aufbau
dieses Fensters ist sehr simpel, wie Listing 6.8 zeigt, besteht er lediglich aus
einem widget-Element, welches als MenuList() initialisiert wird.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Listing 6.8: XML Screen Aufbau Läuferliste
class SNSRunnerList(Screen):
raw_skin = """
<screen position ="{screen.pos}" size ="{screen. size }"
title ="Available List of Runners">
<widget name="runners"
position ="{runners.pos}"
size ="{runners.size}"
scrollbarMode ="showOnDemand" />
</screen>
"""
...
def __init__(self, session, favRunnerName):
...
self.skin = applySkinVars(SNSRunnerList.raw_skin,skindict)
...
self["runners"] = MenuList([])
...
Das MenuList Element ist, wie schon Label und Button in Abschnitt
6.1.1, unter /usr/lib/enigma2/python/Plugins/Components zu finden. Dieses Objekt ermöglicht es, eine Liste von Einträgen darzustellen und diese mit
den Navigationspfeilen auf der Fernbedienung durchsuchen zu können. Listing 6.9 zeigt, wie die Liste in diesem Fall mit Werten befüllt wird.
Listing 6.9: Befüllen der MenuList
1
2
3
4
5
6
7
8
9
...
def getRunnersList(self):
list = []
...
#Aufrufen der Server-Funktion welche eine Liste aller Teilnehmer
#mit deren Startnummer und Position zurückgibt
runners = self.proxy.getAllRunnerNames()
...
6. Implementierung
76
#Iterieren der empfangenen Liste
#Formatieren der Werte
#Speichern der Werte in eine neue Liste
for row in runners:
if row[0] == self.favRunnerName:
#spezielles Kennzeichnen des favorisierten Läufers
list.append("%s. (F) %s #%s" %(row[1],row[0],row[2]))
else:
list.append("%s. %s #%s" %(row[1],row[0],row[2]))
...
#MenuList mit Werten füllen
self["runners"].setList(list)
...
10
11
12
13
14
15
16
17
18
19
20
21
22
MenuList verfügt über einige Funktionen, welche es zB ermöglichen, den
aktuell ausgewählten Eintrag oder den Index des aktuellen Eintrages (siehe
Listing 6.10) zu erhalten.
Listing 6.10: MenuList Abfrage des ausgewählten Eintrages
#Abfrage des ausgewählten Elements
runner = self["runners"].getCurrent()
#Abfrage des Index des ausgewählten Elements
idx = self["runners"].getSelectedIndex()
1
2
3
4
Diese Funktionen finden Verwendung, falls der Benutzer per OK einen
Läufer auswählt und dessen Informationen sehen will.
Der Listen-Modus bietet dem Benutzer lediglich die Möglichkeit, durch
die Liste zu navigieren und einen Läufer per Druck auf die OK -Taste auszuwählen, um danach zum Läuferinfo-Modus zu wechseln, welcher die ausgewählten Informationen anzeigt. Zusätzlich gibt es die Option, diesen Modus ohne Auswahl eines Teilnehmers zu verlassen. Dies geschieht mit der
EXIT -Taste, bei deren Druck der Listen-Modus beendet wird, um in den
Läuferinfo-Modus zurückzukehren. Abbildung 6.4 illustriert die verwendbaren Tasten und deren Funktion.
6.1.3
Standort Modus
Der Standort-Modus ist (siehe Abbildung 6.5), im Gegensatz zum ListenModus etwas komplexer im Aufbau. Hier wird die Google Maps-API 4 verwendet, um den aktuellen Standort des Läufers anzuzeigen. Die Umsetzung
dieser Funktionaltiät wurde in Anlehnung an das bereits bestehende Dreambox Plug-In5 von Rico Schulte entwickelt. Die Umsetzung jenes Moduls
umfasst mehrere Klassen:
4
5
http://code.google.com/intl/de-DE/apis/maps/
http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=96626
6. Implementierung
77
Abbildung 6.4: Funktionstasten im Listen-Modus.
GlobalMercator
Berechnet aus den vorhandenen Koordinaten, bestehend aus Längengrad
(longitude - lon) und Breitengrad (latitude - lat), die passenden Werte für
ein GoogleMaps-Tile, welches am Bildschirm mittels Google Maps darstellbar
ist. Zur Berechnung wird eine Mercator-Projektion6 verwendet, welche die
von Google Maps verwendete Kartenprojektion ist. Im Zusammenhang mit
dem Projekt finden vor allem folgende Funktionen Verwendung:
LatLonToMeters(self, lat, lon ): Diese Funktion konvertiert WSG84 7 konforme Breiten- und Längengrade in XY Koordinaten mittels sphärischer Mercator-Projektion.
MetersToTile(self, mx, my, zoom): Konvertiert Mercator-Koordinaten
in Tile Map Service (TMS)-konforme Daten, welche einer Region eines
Tiles entsprechen. Der Parameter zoom bestimmt die Höhe (altitude
- alt) bzw. den Zoom-Faktor mit dem der Benutzer den Standort betrachtet.
6
7
http://mathworld.wolfram.com/MercatorProjection.html
http://geoportal.bafg.de/karte/help/de/WebHelp/whgdata/whlstg0.htm
6. Implementierung
78
Abbildung 6.5: Standort Modus.
GoogleTile(self, tx, ty, zoom): Hier werden TMS-Tiles in Google-Tiles
konvertiert, da sich die beiden durch einen differierenden Ursprung unterscheiden und TMS-Tiles von Google Maps falsch dargestellt werden
würden.
Diese Klasse ist Teil der globalmaptiles.py Datei, welche von Klokan
Petr Pridal entwickelt und zur Verfügung gestellt wurde.
WebPixmap
Diese Klasse kümmert sich um das Laden und Darstellen der passenden Bilder, welche den Daten der Google-Tiles entsprechen. Hier wird die Verbindung zum Google Maps Server hergestellt und die passenden Daten heruntergeladen. Diese Klasse wurde von Rico Schulte entwickelt und zur Verfügung
gestellt.
MapPlace
Hier werden die aus der GlobalMercator-Klasse beschriebenen Funktionen
auf die passenden Daten aus der Datenbank angewendet. Der Konstruktor
dieser Klasse nimmt WDG84 -konforme Werte (Längen- und Breitengrad)
entgegen. Weiters besitzt diese Klasse die Funktion getTile(self, alt),
welche die Konvertierung der Werte vornimmt und drei Werte – googleX
6. Implementierung
79
(entspricht dem Längengrad), googleY (entspricht dem Breitengrad) und
alt (entspricht der Höhe bzw. dem Zoom-Faktor) – retourniert.
Diese Klasse wurde in Anlehnung an die KmlPlace-Klasse von Rico Schule
entwickelt.
SNSGoogleMaps
Diese Klasse stellt die von Screen abgeleitete Klasse dar. Auch hier wird per
xml die GUI implementiert, welche aus neun WebPixmap Elementen besteht,
die die darstellbaren neun Google-Tiles repräsentieren. Listing 6.11 zeigt ein
Beispielelement des xml-Codes und dessen Initialisierung.
Listing 6.11: XML-Aufbau & Initialisierung
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
...
class SNSGoogleMaps(Screen,HelpableScreen):
raw_skin = """
<screen position ="{screen. position }" size ="{screen. size }" title ="
GoogleMaps">
#Eines von neun Widgets
#Die Variablen pixmap1.pos & pixmap.size werden in der __init__
definiert
#bevor der Screen initialisiert wird
<widget name="pic1" position="{pixmap1.pos}" size="{pixmap.size
}" zPosition="1" alphatest="blend"/>
...
</screen>"""
...
def __init__(self, session, position):
...
#Laden eines Default-Bildes bevor die Bilder aus
#Google Maps geladen werden
self["pic1"] = WebPixmap(default=plugin_path+not_found_pic)
...
#Laden der Bilder passend zu den definierten Koordinaten
self.setNewXYZ(self.x, self.y, self.z)
...
21
22
23
24
def setNewXYZ(self,x,y,z):
#Lädt das passende Google-Tile
self["pic1"].load(getURL(x-1,y-1,z))
Um nun die passende Position des Läufers anzeigen zu können, wird dem
Konstruktor die Variable position übergeben, welche Längen- und Breitengrad des Teilnehmers beinhaltet, der in der Datenbank aufgrund der GPRS Daten des Läufers abgespeichert wurde. Aufgrund dieser Variablen werden
mit Hilfe der Funktionen der Klasse MapPlace sowie GlobalMercator die
passenden Werte, welche ganzzahlig sind, zur Anzeige der Google-Tiles berechnet. Der dafür notwenige Zoom-Faktor wird beim erstmaligen Anzeigen
6. Implementierung
80
des Läuferstandortes mit 17 definiert. Anschließend hat der Benutzer die
Möglichkeit, diesen Wert zu verändern. Listing 6.12 zeigt den Aufruf der
Funktion von MapPlace.
1
2
3
4
5
6
Listing 6.12: Erhalt der Variablen x y z
#position[0][0] := Längengrad
#position[0][1] := Breitengrad
self.place = MapPlace(position[0][0], position[0][1])
#Berechnung der Google-Tiles-Werte
#x := longitude, y := latitude, z := altitude
self.x, self.y, self.z = self.place.getTile(17)
Nachdem die passenden Werte für Längen- und Breitengrad sowie der Höhe berechnet wurden, wird mittels der load-Funktion der WebPixmap Klasse,
sowie der getURL-Funktion das passende Google-Tile geladen. Listing 6.13
zeigt die getURL-Funktion, welche die berechneten Werte in den passenden
URL zum Erhalt des adäquaten Satellitenbildes einfügt.
Listing 6.13: getURL()
1
2
def getURL(x,y,z):
return "http://khm1.google.com/kh/v=43&hl=de&x=%i&y=%i&z=%i" %(
x,y,z)
Nachteilig an dieser Vorgehensweise zum Erhalt des Satellitenbildes ist
nur, dass Google diesen url von Zeit zu Zeit ändert und er somit aktualisiert
werden muss. Außer dem Satellitenbild ist es natürlich auch möglich, eine
Kartenansicht zu erhalten, welche mittels "http://mt1.google.com/mt?v=w
2.92&hl=en&x=%i&y=%i&z=%i&s=G" %(x,y,z) geladen werden kann.
Da sich die Standortanzeige aus neun Google-Tiles zusammensetzt, werden die Werte x, y und z dementsprechend angepasst. Jenes WebPixmap,
welches sich in der Mitte befindet, zeigt die genauen Werte. Alle anderen
werden, wie Abbildung 6.6 zeigt, angepasst.
Der Benutzer hat bei diesem Modul verschiedene Möglichkeiten der Interaktion hinsichtlich des betrachtbaren Bildausschnittes. Abbildung 6.7 zeigt
die in diesem Modus aktiven Tasten der Fernbedienung und deren Funktionen. Der Betrachter hat somit die Möglichkeit, sich mittels der Zifferntasten herumzubewegen bzw. den Bildausschnitt in eine Richtung zu bewegen.
Weiters zeigt die Abbildung, dass er mittels der Tasten 5 und 0 den Vergrößerungsfaktor – d. h. den Z -Wert – verändern kann. Je größer dieser Wert,
umso genauer ist der Bildausschnitt, d. h. ein Wert von 0 würde die gesamte
Karte der Erde zeigen. Hinsichtlich des Vergrößerungsfaktors kann es, abhängig vom Bild welches Google liefert, zu Darstellungsproblemen kommen.
Beispielsweise könnte ein zu kleiner Vergrößerungwert nicht darstellbar sein.
Der Benutzer kann, wie Abbildung 6.7 zeigt, in jegliche Himmelsrichtungen navigieren.
6. Implementierung
Abbildung 6.6: Anpassung der X, Y und Z Werte hinsichtlich der GoogleTiles Anordnung.
Abbildung 6.7: Funktionstasten im Standort-Modus.
81
6. Implementierung
82
• Nordwest (NW)
• Nord (N)
• Nordost (NO)
• West (W)
• Ost (O)
• Südwest (SW)
• Süd (S)
• Südost (SO)
Die Umsetzung des Navigierens im dargestellten Bild, erfolgt durch Anpassung des X - bzw. Y -Wertes (zB nach Südwest X -= 1 und Y += 1). Geschieht dies oder wird der Vergrößerungsfaktor Z vom Benutzer verändert, so
wird das gesamte Bild aktualisiert und die Funktion setNewXYZ(self,x,y,z)
(siehe Listing 6.11) wird mit den entsprechend veränderten Werten aufgerufen.
Auch in diesem Modus hat der Benutzer, wie Abbildung 6.7 illustriert,
die Möglichkeit per Klick auf den EXIT Knopf diesen Modus zu verlassen
und in den Läuferinfo-Modus zurückzukehren.
6.1.4
Interaktion zwischen den Modi
Dieser Abschnitt gibt einen Überblick über die Interaktion bzw. das Zusammenspiel der einzelnen Modi. Kapitel 4 stellte schon den Entwurf einer solchen Interaktion dar, die finale Implementierung weicht jedoch vom
Entwurfsmodell aus Abbildung 4.4 ab. Das endgültige Zusammenspiel der
einzelnen Screens wird in Abbildung 6.8 dargestellt.
Die Benutzersicht
Anfänglich war geplant, alle drei Module gleichwertig zu gestalten, im finalen und umgesetzten Modell ist dies nicht der Fall. Das Läuferinfo-Modul
spielt eine zentrale Rolle, da dieses die Hauptinformationsquelle des Benutzers darstellen soll. Das Plug-In soll vor allem dem Seher als Informationsplattform hinsichtlich der Läuferdaten des FL zur Verfügung stehen.
Standort- und Listen-Modul spielen eine nebensächliche Rolle und sollen die
Applikation hinsichtlich ihrer Funktionalitäten abrunden. Die zentrale Rolle des Läuferinfo-Modus hat zur Folge, dass nur aus diesem das Programm
verlassen werden kann, ausschließlich hier dient die EXIT -Taste dem Beenden der Applikation. Die beiden anderen Modi werden per Klick auf die
EXIT -Taste beendet, dennoch kehrt der Benutzer in den Läuferinfo-Modus
6. Implementierung
83
Abbildung 6.8: Zusammenspiel der einzelnen Programmmodi.
zurück. Startet der Benutzer das Programm, so befindet er sich, nachdem
er sich mit der ihm zugewiesenen ClientID angemeldet hat, zu Beginn im
Läuferinfo-Modus, welcher ihm die Daten seines favorisierten Läufers (FL)
anzeigt.
Die Anmeldung mittels ClientID ist ein zusätzliches kleines Modul, welches hinzugefügt wurde. Der Grund einer solchen Anmeldung liegt an der
Tatsache, dass der Benutzer einen Läufer favorisieren kann. Damit dies möglich wird, ist eine vorhergehende Registrierung des Benutzers nötig, bei der
er seinen FL angibt und im Gegenzug eine Identifikationsnummer erhält,
welche zum Start des Plug-Ins obligat ist. Ein Registrierungssystem wird
derzeit bei der Informationsüberlieferung per Handy eingesetzt und könnte
hinsichtlich dieses Systems adaptiert und verwendet werden. Zu Testzwecken
wurden jene ClientIDs manuell generiert und verwendet.
Befindet sich der Benutzer zu Beginn im Läuferinfo-Modus, so kann er
durch Druck auf die grüne oder blaue Taste (wie in Abschnitt 6.1.1 erläutert)
in den Listen- bzw. Standort-Modus wechseln.
Bei Wechsel in das Listen-Modul wird jenem der Name des FL übergeben, damit dieser in der Liste speziell gekennzeichnet werden kann. Im
Modul selbst existieren mehrere Möglichkeiten, um zum Läuferinfo-Modus
zurückzukehren. Einerseits durch die bereits erwähnte EXIT -Taste, welche
6. Implementierung
84
diesen Modus lediglich beendet, andererseits durch die Auswahl eines Läufers bei Bestätigung mit der OK -Taste. Zweiteres Szenario wählt den Läufer
aus und übergibt der Klasse SNSInfobar dessen runID.
Wird anstatt des Listen-Moduls das Standort-Modul gewählt, so wird
jenem die Position (Längen- und Breitengrad) des Läufers übergeben, dessen
Information aktuell angezeigt wird. Dieser Modus kann nur durch Druck auf
die EXIT -Taste beendet werden. Bei Rückkehr in den Läuferinfo-Modus
werden dem Benutzer wiederum die Information seines FL angezeigt.
Die Entwicklersicht
Um nun das oben erwähnte Zusammenspiel zwischen den Modi zu ermöglichen, wurde eine spezielle Klasse erstellt, welche sich um das Steuern und
Verwalten der Daten und Screens kümmert. Die Klasse SNSManager wurde
in der Datei plugin.py implementiert, ein Objekt wird in der main-Funktion
initialisiert. Listing 6.14 zeigt den Aufruf der „Startfunktion“ des SNSManager
Objektes in der main-Funktion.
1
2
3
4
5
6
7
8
9
10
Listing 6.14: Initialisierung und Aufruf des SNSManagers
def main(session, **kwargs):
try:
#Erstellung des SNSManager Objektes
#Übergabe des session Parameter
snsManager = SNSManager(session)
except Exception, e:
session.open(MessageBox, _("Error:\n%s" % e), MessageBox.
TYPE_ERROR, 5)
else:
#Aufruf der „Startfunktion“
snsManager.showNumberInputbox()
Primär wird die Klasse SNSManager gebraucht, um nach dem Schließen
eines Screens die übergebenen Variablen entgegen zu nehmen, den darauf
folgenden Screen aufzurufen und die entsprechenden Variablen an jenen weiterzuleiten. D. h. wird ein Modus beendet, so kehrt der Fokus der Applikation
zunächst zum SNSManager zurück, um von da ausgehend weiterzuhandeln.
Grundsätzlich ist der Aufbau eines Plug-Ins so, dass ein Screen geschlossen
werden muss, bevor ein anderer geöffnet werden kann. Der Entwickler hat
jedoch die Möglichkeit Variablen beim Schließen zu übergeben, damit danach der Grund des Schließens abgefragt werden kann. So gibt es zB im Fall
des Läuferinfo-Moduls mehrere Ursachen warum dieser Screen geschlossen
wurde.
• Beenden des Plug-ins
• Wechsel zu Standort-Modus
6. Implementierung
85
• Wechsel zu Listen-Modus
Listing 6.15 zeigt den Befehl, mit dem vom Läuferinfo-Modus in den
Listen-Modus gewechselt wird, wobei zusätzlich Variablen übergeben werden.
Listing 6.15: Schließen eines Screens
1
2
3
4
5
6
7
8
9
10
def getRunnerList(self):
list = []
#Information über den Grund des Schließens
list.append("RUNNERS")
#Anhängen weiterer Informationen welche beim
#Öffnen des Listen-Modus gebraucht werden
if self.isFavoriteRunner:
list.append(self.runnerInfoList[0])
else:
list.append("NOT_FAV")
11
12
13
#Schließen des Modus inklusive Übergabe der Variablen
Screen.close(self, list)
Die übergebene Liste wird in jener Funktion des SNSManagers entgegengenommen, welche als Callback -Funktion (siehe Listing 5.2) beim Öffnen
des Läuferinfo-Screens definiert wurde. Listing 6.16 zeigt die entsprechende
Funktion, welche beim Schließen des Läuferinfo-Modus aufgerufen werden
würde.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Listing 6.16: Callback-Funktion des Läuferinfo-Modus
def infoBarClosed(self, msg):
#Falls der Screen nicht aufgrund der EXIT-Taste geschlossen wurde
if msg is not None:
#Wechsel in den Listen-Modus
if msg[0] is "RUNNERS":
#Angezeigter Läufer war FL
if msg[1] is not "NOT_FAV":
self.favoriteRunnerName = msg[1];
#Öffenen des Listen-Modus & Übergabe der entsprechenden Variable
self.session.openWithCallback(self.runnerListClosed,
SNSRunnerList, self.favoriteRunnerName)
#Wechsel in den Standort-Modus
elif msg[0] == "GOOGLE":
#Öffnen des Standort-Modus & Übergabe der Position
self.session.openWithCallback(self.googleMapsClosed,
SNSGoogleMaps, msg[1])
#Schließen aufgrund eines Fehlers
elif msg[0] == "ERROR":
self.showMsgBox('Server is currently not available!')
6. Implementierung
86
Die unterschiedlichen Übergabeparameter beim Schließen eines Screens
ermöglichen es zwischen den verschiedenen Gründen zu unterscheiden und
dementsprechend zu handeln. Wird die gesamte Applikation beendet, so wird
kein Parameter übergeben und in Folge dessen kein anderer Modus aufgerufen.
Zusätzlich ist noch zu erwähnen, dass in der Klasse SNSManager Werte
wie clientID und favoriteRunnerName gespeichert werden, um bei Bedarf
darauf zugreifen zu können.
6.2
Server und Datenübertragung
Dieser Abschnitt gibt einen Einblick in die Umsetzung des Servers zur Datenübertragung. Wie in Kapitel 5 bereits erläutert, wurde die Netzwerkprogrammierung als Remote Procedure Call (RPC) umgesetzt. Genauer gesagt
handelt es sich dabei um Pythons xmlrpclib, welche in Abschnitt 5.3 detailierter beschrieben wurde.
Server-seitig existieren zwei Klassen, welche essentiell für die adäquate
Übertragung der nötigen Informationen sind.
Database: Diese Klasse kümmert sich um die Kommunikation zwischen
Datenbank und Server. Sie liest die nötigen Daten aus und bereitet sie
auf. Zusätzlich wird Database per RPC registriert, um ihre Funktionen
für den Client verfügbar zu machen. Abschnitt 6.2.1 geht näher auf die
Funktionen dieser Klasse und die Datenübertragung zwischen Client
und Server ein.
RPC_Server: Jene Klasse übernimmt die eigentliche RPC Server Funktion, welche aus dem Initialisieren des Servers, dem Ein- und Ausschalten
des Servers, sowie dem Registrieren der Klasse besteht. Abschnitt 6.2.2
gibt einen Einblick in die Umsetzung dieser Funktionen.
6.2.1
Klasse Database
Eine der Hauptfunktionen dieser Klasse besteht darin, die nötigen Informationen aus der Datenbank auszulesen und optimal für den Client aufzubereiten. Zu Beginn ist hier zu erwähnen, dass zur Zeit der Implementierung kein
Zugriff auf aktuelle Daten der Originaldatenbank möglich war. Zu Testzwecken wurde eine Testdatenbank erstellt, welche sich in einzelnen Punkten von
der Originaldatenbank unterscheidet, jedoch die Wesentlichsten Inhalte enthält. Aufgrund dieser Tatsache wurde die Klasse Database hinsichtlich der
Testdatenbank entwickelt und müsste für die Originaldatenbank adaptiert
und angepasst werden.
6. Implementierung
87
Zum Auslesen der Daten aus der MySQL Datenbank wurde die MySQLdb 8 Schnittstelle für Python verwendet. Listing 6.17 zeigt das Verbinden
zur Datenbank sowie das Auslesen von Daten aus der Datenbank.
Listing 6.17: Daten aus MySQL Datenbank auslesen
...
def __init__(self):
#Verbinden zur Datenbank
self.__conn = MySQLdb.connect(self.__host, self.__user, self.
__passwd, self.__db, self.__port)
...
#Erstellt einen „cursor“
def createCursor(self):
self.__cursor = self.__conn.cursor()
1
2
3
4
5
6
7
8
9
#Schließt „cursor“
def closeCursor(self):
self.__cursor.close()
...
#Gibt die runID des FL des Client zurück
def getFavRunnerID(self, clientID):
self.createCursor()
...
self.__conn.commit()
self.__cursor.execute('SELECT runID FROM clients WHERE
client_id = %s' % (clientID))
row = self.__cursor.fetchall()
10
11
12
13
14
15
16
17
18
19
20
21
for entry, in row:
runID = entry
22
23
24
self.closeCursor()
return runID
...
25
26
27
Das in Listing 6.17 erstellte cursor Objekt ist zum Ausführen von Abfragen obligat. Um sich zur Datenbank verbinden zu können, werden die
nötigen Parameter, welche Listing 6.17 bei MySQLdb.connect() ersichtlich
macht, mit den nötigen Informationen initialisiert.
Annähernd alle Funktionen dieser Klasse führen Datenbankabfragen aus
und bereiten die erhaltenen Informationen dementsprechend auf. Einige jener Funktionen werden mittels RPC vom Client aufgerufen. Um dies zu
ermöglichen, wird in den Klassen auf der Client Seite Pythons xmlrpclib
Bibliothek importiert und verwendet. Listing 6.18 zeigt die Schritte, welche
nötig sind um eine Server-seitige Funktion aufzurufen.
8
http://mysql-python.sourceforge.net/MySQLdb.html
6. Implementierung
1
2
3
4
5
6
7
8
9
10
11
12
88
Listing 6.18: RPC Client
class SNSInfobar(Screen, InfoBarShowHide):
...
def __init__(self, session, clientID, runID = None):
...
#Stellt das Verbindungsobjekt zum Server her
self.proxy = xmlrpclib.ServerProxy('http://10.0.0.1:3000')
...
def getRunnerInfoList(self):
...
#Ruft die Funktion getRunnerInfo() der Klasse Database auf
self.runnerInfoList = self.proxy.getRunnerInfo(self.runID)
...
Listing 6.18 ist ein Beispiel aus der SNSInfobar Klasse, bei der vom Server eine Liste, in der jegliche Information eines Läufers enthalten ist, zurückgibt. Neben dieser Funktion gibt es weitere, welche vom Client aufgerufen
werden. Abbildung 6.9 gibt einen Überblick über jene Funktionen.
Diese sechs Funktionen übertragen verschiedenste Daten:
isUpdateNew: Überprüft, ob die Information, welche dem Benutzer angezeigt werden, noch aktuell sind oder nicht. Sie gibt true oder false
zurück. So wurde die Funktionalität des automatischen Einblendens
realisiert. D. h. der Client ruft immer wieder diese Funktion auf und
reagiert bei der Rückgabe von true dementsprechend.
getFavRunnerID: Gibt die Identifikationsnummer des FL zurück. Diese
Funktion wird aufgerufen, wenn das Plug-In startet und der Benutzer
soeben seine ClientID eingegeben hat.
getRunnerInfo: Liest aus der Datenbank die entsprechenden Läuferinformationen aus und gibt diese als Liste dem Client zurück, damit sie
angezeigt werden können.
getRunnerIDbyName: Sucht die Nummer des Läufers zum angegebenen
Namen. Diese wird verwendet, wenn ein Läufer aus der Liste ausgewählt wurde und in den Läuferinfo-Modus zurückgekehrt wird.
getAllRunnerNames: Diese Funktion liest die Namen aller Teilnehmer
aus der Datenbank aus und übergibt sie dem Client, damit im ListenModus die Läuferliste aufgebaut und angezeigt werden kann.
checkClientID: Überprüft die vom Benutzer eingegebene ClientID auf ihre Gültigkeit und gibt entweder true oder false zurück.
Diese Auszüge aus Database sind die grundsätzlich wichtigsten und spielen bei der Kommunikation zwischen Server und Client, als auch zwischen
Applikation und Datenbank, eine essentielle Rolle.
6. Implementierung
89
Abbildung 6.9: Die von den Client Klassen aufgerufenen Server Funktionen.
6.2.2
Klasse RPC_Server
Die Klasse RPC_Server ist lediglich dazu da, den gesamten RPC ServerAufbau gesamtheitlich zu präsentieren und zu verwalten. Die Implementierung des RPC Servers wurde gänzlich wie in Abschnitt 5.3 umgesetzt. Das
Erstellen des SimpleXMLRPCServer Objekts wird in der __init__ Funktion
der Klasse vorgenommen. Zusätzlich gibt es zwei weitere Funktionen:
connect(): Diese Funktion kümmert sich mittels serve_forever() um Anfragen bis der Serverprozess beendet wird [16].
disconnect(): Bei Aufruf dieser Funktion beendet der Server mit Hilfe von
server_close() die Verbindung nach außen.
6. Implementierung
90
Abbildung 6.10: Anmeldefenster zur Eingabe der ClientID des Benutzers.
Zusätzlich ist noch zu erwähnen, dass zur Zeit der Entwicklung keine Marathonläufe stattfanden und somit die Serverfunktion in einer lokalen Netzwerkumgebung getestet wurde. Um die Applikation zum Einsatz zu bringen,
muss Client-seitig die Host-Adresse des Servers angepasst bzw. richtig gestellt werden.
6.3
Benutzeroberfläche
Dieser Abschnitt befasst sich mit dem finalen Aufbau der Benutzeroberfläche.
Die technische Umsetzung der GUI wurde in Abschnitt 6.1 sowie in Kapitel 5
bereits erläutert, darum setzt sich dieser Teil der Arbeit mit dem Endergebnis
und dessen Überlegungen hinsichtlich des Benutzers auseinander.
In Abschnitt 4.3.3 wurde das Konzept hinsichtlich Gestaltung und Positionierung der Benutzeroberfläche erläutert und illustriert. Der Aufbau, den
Abbildung 4.2 darstellt, wurde grundsätzlich übernommen und umgesetzt,
d. h. der Screen des Läuferinfo-Modus befindet sich am unteren Rand des
Bildschirms und lässt sich per Knopfdruck einfach ein- und ausblenden, bzw.
geschieht diese Funktion automatisch. Die Screens der anderen zwei Module
befinden sich zentriert in der Bildschirmmitte. Der Grund dafür liegt daran,
dass der Läuferinfo-Modus als Hauptmodus der Applikation fungiert. Die
zusätzlichen Modi dienen als Erweiterung bzw. zusätzliche Information für
jene Benutzer, welche sich im Besonderen für einen Läufer bzw. für die Applikation interessieren. Weiters wird beim Listen- sowie beim Standort-Modus
die aktive Interaktion und Konzentration des Benutzers verlangt, dies soll
für diesen durch die zentrale Positionierung einen erleichternden und unterstützenden Effekt zur Folge haben.
Neben den hier schon erwähnten Modulen wurde ein weiteres, simples
6. Implementierung
91
Zwischenmodul umgesetzt, welches lediglich zum Anmelden des Benutzers
dient. Auch dieses wurde am unteren Bildschirmrand positioniert, um das
Fernsehvergüngen des Benutzers so wenig wie möglich zu beeinflussen. Abbildung 6.10 zeigt den Aufbau und die Positionierung des neuen Moduls.
Neben dem Aufbau der Benutzeroberfläche wurde auch hinsichtlich der
Bedienung per Fernsteuerung auf eine einfache und intuitive Auswahl der
Tasten geachtet, zB das Bestätigen eines Eintrages per OK oder das Schließen eines Fensters bzw. der Applikation per EXIT. Der einzige negative
Punkt der Steuerung ist, dass der Benutzer nicht die Option hat, während des
Plug-In Betriebes den Fernsehkanal zu wechseln, d. h. die Applikation muss
bei einem Programmwechsel zuvor beendet und kann danach wieder gestartet werden. Abschließend gibt Abbildung 6.11 einen Überblick hinsichtlich
der finalen Positionierung und des Aufbaus der verschiedenen Module.
6. Implementierung
92
(a)
(b)
(c)
Abbildung 6.11: Die drei Module Läuferinfo (a), Liste (b) und Standort
(c) und ihr endgültiger Aufbau sowie die finale Positionierung.
Teil III
Zusammenfassung
93
Kapitel 7
Resümee und Ausblick
7.1
Resümee
Diese Arbeit versucht einen Einblick in die aktuelle Welt des IPTV zu geben.
Aufgrund des aktuellen Standes der Technik auf diesem Gebiet wurden Möglichkeiten gezeigt, wie die Vorteile von IPTV genutzt und in die derzeitige
Fernsehlandschaft eingebunden werden können. Zusätzlich werden Optionen
aufgezeigt, die dem Benutzer durch diese Technik geboten werden bzw. geboten werden könnten.
Durch die praktische Arbeit soll vor allem dargestellt werden, wie in
diesem Fall Echtzeitdaten, generell aber jegliche Fremdinhalte – ob aus dem
Web oder aus Datenbanken – sanft integriert werden können, damit sich
der Benutzer nicht gestört fühlt. Mithilfe der, in dieser Arbeit aufgezeigten
Möglichkeiten, kann die Fernsehlandschaft auf eine Weise verändert werden,
die von den Sehern auch angenommen und verwendet wird.
IPTV und vor allem die Verbindung von Internet- und Fernsehinhalten ist
zukunftsweisend und bietet eine für den Benutzer bequeme Errungenschaft,
welche es ihm erlaubt, zwei häufig genutzte Medienquellen zu verbinden und
gemeinsam zu verwenden. Durch eine solche Verschmelzung ist es möglich,
die Vorteile beider Medien zu vereinen, einerseits die Passivität des Fernsehens, welche für den Benutzer nicht verloren gehen darf und andererseits die
Aktivität, sowie auch Aktualität des Internets, welche dem Benutzer die von
ihm gewünschten Informationen auf „Knopfdruck“ liefert.
Das Sports Notification System stellt eine mögliche Art der Personalisierung eines IPTV Systems dar und soll zeigen, wie spezifisch der Seher sich
in Zukunft seine Inhalte auswählen und zusammenstellen kann. Durch die
Möglichkeit solcher Plug-Ins, oder auch Widgets (wie sie von Yahoo geboten werden), müssen Informationen nicht mehr auf eine größere Gruppe von
Sehern zugeschnitten werden. Der einzelne Benutzer kann somit selbst für
seine Inhalte verantwortlich sein, muss es aber nicht, d. h. er kann weiterhin
die Passivität des Fernsehens genießen. Dennoch ist es wichtig, diese Mög-
94
7. Resümee und Ausblick
95
lichkeit anzubieten, vor allem da die jetzige Technik eine solche Entwicklung
erlaubt und fördert.
Neben den derzeit möglichen technischen Entwicklungen zeigt die Arbeit
ebenso mögliche Zukunftsvisionen auf, welche vor allem auf die Verschmelzung von Internet und Fernsehen, sowie die hochgradige Personalisierung der
Inhalte abzielen. Derzeit ist die Grenze zwischen Fernsehen und anderen Inhalten noch definitiv spürbar, doch schon in Zukunft könnte der Benutzer die
Integration jener Inhalte für selbstverständlich ansehen und die Einbindung
nicht mehr bemerken. So wird der Seher, falls er Informationen über einen
soeben gesehenen Schauspieler erhalten möchte, in Zukunft nicht mehr via
Computer ins Internet einsteigen. Das Zukunftsfernsehen liefert ihm diese
Informationen automatisch. Zusätzlich wird es vielleicht auch möglich sein,
mit einem Freund über einen Film zu sprechen, ohne ihn anzurufen, sondern
die gewünschte Person kann kontaktiert werden.
Die Entwicklung auf diesem Sektor ist erst in der Anfangsphase, doch
durch die in dieser Arbeit aufgezeigten Möglichkeiten der Personalisierung,
der Datenintegration und der Verschmelzung der Medien, wird die Zukunft
bald zur Gegenwart werden.
7.2
Ausblick
Die praktische Arbeit kann hinsichtlich der Zukunftsvisionen aus Abschnitt
7.1 erweitert und verbessert werden. Falls der Benutzer auch die Übertragung
des Marathons im Fernsehen ansieht, besteht die Option einer Analyse bzw.
Verarbeitung des Fernsehbildes, um somit zB Informationen über den am
Bildschirm sichtbaren Läufer anzuzeigen. Zusätzlich ist die Standortanzeige
mittels Google Maps bei Weitem nicht perfekt. Hier gäbe es die Möglichkeit,
die exakte Position des Läufers mit einem Icon anzuzeigen. Weiters wäre es
interessant, zwischen den Stationen die Position zu interpolieren. Dies könnte
mittels der bereits vorhandenen Daten geschehen, d. h. wo wäre der Läufer,
würde er mit der berechnenten Durchschnittsgeschwindigkeit der Strecke folgen. Auch der Informationsumfang könnte um Prognosen über die mögliche
Ankunftszeit, eine mögliche Platzierung oder die Gesamtlaufzeit erweitert
werden.
Zusätzlich müsste der Quellcode der Applikation im Live-Betrieb angepasst werden, da die Programmtests nur auf einem Testserver und mit einer
Testdatenbank durchgeführt wurden.
Um nun einen Schritt weiter zu gehen, könnte dem Benutzer die Option gegeben werden, zB auf die persönliche Website des Läufers zu zugreifen
oder dessen bisherige Platzierungen bei Läufen anzuzeigen. Aufgrund der
Datenmenge, auf die mittels IP zugegriffen werden kann, sind der Fantasie
hier keine Grenzen gesetzt. Jedoch sollte der Benutzer, als auch die Sinnhaftigkeit der angezeigten Daten nie außer Acht gelassen werden. D. h. bei
7. Resümee und Ausblick
96
einer Weiterentwicklung der Applikation sollten umfangreiche Benutzertests
durchgeführt werden, welche einerseits Auskunft über die Nützlichkeit der
gegebenen Informationen, sowie über die Benutzerfreundlichkeit des Plug-Ins
geben. Vor allem auf die sanfte Einbindung in das Fernsehbild sollte bei einer
Weiterentwicklung geachtet und durch Benutzertests verbessert werden.
Anhang A
Inhalt der CD-ROM
File System: Joliet
Mode:
A.1
Single Session
Diplomarbeit
Pfad: /
dm07010_diplomarbeit.pdf Diplomarbeit
A.2
Zusätzliche Ressourcen
Pfad: /
Abbildungen/ . . .
LaTeX/ . . . . . .
Literatur/ . . . . .
Literatur/Online/ .
Projekt/ . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
In der Arbeit verwendete Abbildungen
TEX-Dateien
Online-Dokumente (PDF-Dateien)
Duplizierte Web-Seiten der Online-Quellen
Projekt-Dateien
97
Literaturverzeichnis
[1] Fehlstart, 2001.
http://www.test.de/themen/computer-telefon/test/Webboxen/19306/19306/.
[2] Al-Khatib, M. und M. S. Alam: IPTV Multimedia Networks: Concepts,
Developments, and Design.
International Engineering Consortium,
2007.
[3] Broszeit, J.: IPTV und Interaktives Fernsehen. VDM Verlag Dr. Müller,
2007.
[4] Chorianopoulos, K. und D. Spinellis: Coping with tivo: Opportunities of
the networked digital video recorder. ScienceDirect, S. 11, Dez. 2005.
[5] DREAMmultimedia: Dreambox DM 800 HD PVR Manual.
[6] Harte, L.: IPTV Basics. Althos, 2007.
[7] Held, G.: Understanding IPTV. Auerbach, 2007.
[8] Holtkamp, H.: Einführung in TCP/IP, Juni 1997. http://www.rvs.unibielefeld.de/~heiko/tcpip/tcpip.pdf.
[9] Klocker, K. H.: Telefongespräch bezüglich aonTV. Persönl. Telefon Kontakt, Sep. 2009.
[10] McLuhan, M.: Understanding Media: The Extensions of Man.
MIT Press, 1994.
The
[11] Mutavdzic, S.: E-Mail Verkehr bezüglich aonTV. Persönl. E-Mail Kontakt, Juli 2009. Kopie auf CD-ROM.
[12] Noam, E. M.: Cyber-TV: Thesen zur dritten Fernsehrevolution. Verlag
Bertelsmann Stiftung, 1996.
[13] Ocilion IPTV Technologies GmbH: Handbook Part 1 - Getting Started,
Jan. 2008.
[14] O’Driscoll, G.: Next Generation IPTV Services and Technologies. Wiley
& Sons, 2008.
98
Literaturverzeichnis
99
[15] Redl, B.: IPTV - neu gewonnene Möglichkeiten der Interaktivität und
Personalisierung des Fernsehens. Diplomarbeit, FH St. Pölten, 2007.
[16] Rossum, G. van: The Python Library Reference. Python Software Foundation, Aug. 2009.
[17] Schönbach, K.: Das hyperaktive Publikum - noch immer eine Illusion:
Ein Essay, "revisited. In: Salm, C. zu (Hrsg.): Zaubermaschine interaktives Fernsehen? TV-Zukunft zwischen Blütenträumen und Businessmodellen, S. 113 – 120. Gabler, Okt. 2004.
[18] Stanek, D.: Internet-Fernsehen boomt, Juni 2009. http://www.bitkom.
org/files/documents/BITKOM-Presseinfo_IPTV_17_06_2009.pdf.
[19] Stevens, W. R.: TCP/IP Illustrated, Bd. 1. Addison-Wesley, 1994.
[20] Stevens, W. R., B. Fenner und A. M. Rudoff: UNIX Network Programming – The Sockets Networking API, Bd. 1. Addison-Wesley, 3. Aufl.,
2004.
[21] Yahoo: Konfabulator 4.5 Reference Manual. Nov. 2007.
[22] Ziemer, A.: Digitales Fernsehen - Eine neue Dimension der Medienvielfalt. Hüthig GmbH, 2. Aufl., 1997.
[23] Zimmermann, H.: OSI Reference Model, Apr. 1980. http://www.comsoc.
org/livepubs/50_journals/pdf/RightsManagement_eid=136833.pdf.
Messbox zur Druckkontrolle
— Druckgröße kontrollieren! —
Breite = 100 mm
Höhe = 50 mm
— Diese Seite nach dem Druck entfernen! —
100

Documentos relacionados