2 Ziele dieser Arbeit

Transcription

2 Ziele dieser Arbeit
1
Eidesstattliche Erklärung
Eidesstattliche Erklärung
Ich erkläre hiermit an Eides statt, dass ich die vorliegende Diplomarbeit selbständig und
ohne unzulässige fremde Hilfe angefertigt habe. Alle verwendeten Quellen und Hilfsmittel sind angegeben.
Furtwangen, den ……………….
………………………………….
(Philipp Lamp)
Abstract
Abstract
Die vorliegende Diplomarbeit beschäftigt sich mit der Konzeption und der prototypischen Realisierung eines 24/7 Sendespeichers für das DVB-Fernsehsignal beim Zweiten
Deutschen Fernsehen.
Für das ZDF ist ein solches System, welches den DVB-Datenstrom des gesamten eigenen Programmbouquets aufzeichnen und zur Auswertung vorhalten kann, aus verschieden Gründen gewünscht. Für unterschiedliche Anwendungsbereiche bietet ein DVB
Rückempfangssystem die ideale Datenbasis zur Weiterverarbeitung.
Betrachtet man die Audio/Video Ebene des Sendesignals, also MPEG Daten, so stellen
diese ein digitales Format dar, welches für vielfache Zwecke in andere Digitalformate
transcodiert werden kann. Exemplarisch sei hier die nachträgliche Codierung von gesendetem Programm für das Internetstreaming in internetspezifische Formate genannt. Weiterhin ist eine Speicherung der Audio/Video Inhalte auf einem digitalen Medium, zum
Beispiel DVD, in nativer Qualität gewünscht, um eine spätere Revision des gesendeten
Materials zu vereinfachen.
Im Hinblick auf die Technischen Parameter des Sendesignals, bietet ein Sendespeicher
mit angegliedertem Analysesystem die Möglichkeit, eventuell aufgetretene technische
Sendestörungen oder Fehler zu rekapitulieren. Oftmals berichten Zuschauer von Störungen an ihren Empfangsgeräten, die mithilfe eines solchen Systems nachvollzogen werden
können.
Im Rahmen dieser Diplomarbeit wurde eine Plattform prototypisch implementiert, die
das DVB Angebot des ZDF rund um die Uhr nahtlos aufzeichnet und verschiedene
Schnittstellen für die jeweiligen Anforderungen bereitstellt.
Das System speichert den DVB Transportstrom in unveränderter Form ab, sodass sämtliche Parameter des DVB Sendesignals erhalten bleiben.
Es besteht die Möglichkeit, einen Ausschnitt des aufgezeichneten Transportstromes nativ
zu extrahieren, um ihn einem beliebigen externen messtechnischen System zuzuführen.
Weiterhin kann die Auswahl als DVD Material exportiert werden. Das am aufwändigsten
implementierte Feature ist ein Analysemodul für diverse DVB spezifische Parameter.
Diese werden in Tabellenform für den ausgewählten Zeitpunkt dargestellt.
Danksagung
Danksagung
Für die Betreuung der Diplomarbeit möchte ich zunächst Herrn Prof. Nikolaus Hottong
und Herrn Prof. Wilhelm Walter danken, die mir bei Fragen immer zur Verfügung standen.
Für die Betreuung vor Ort danke ich insbesondere Herrn Thorsten Weber, der mit stets
mit Rat und Tat zur Seite stand. Außerdem danke ich auch Herrn Dietmar Nothof, der es
mir ermöglichte, diese Arbeit im ZDF durchführen zu können.
Ein herzlicher Dank gilt außerdem den Herren Daniel Boldt, Daniel Klein und Robert
Neumann, die mir bei Fragen jeder Zeit geduldig zur Seite standen.
Zusätzlich danke ich allen Kollegen und Mitarbeitern der Abteilung „Sendeabwicklung
Informationsdienste“ für das unverwechselbare und angenehme Arbeitsklima.
Weiterhin danke ich meinen Eltern, meiner Familie sowie Freunden, die mich stets auf
meinem Weg hier her begleiteten.
1
Inhaltsverzeichnis
I
ABBILDUNGSVERZEICHNIS.......................................................................3
II
ABKÜRZUNGSVERZEICHNIS .....................................................................5
1
EINFÜHRUNG .....................................................................................................9
2
ZIELE DIESER ARBEIT .......................................................................................11
3
GRUNDLAGEN ZU DIGITALEM FERNSEHEN ...................................................... 13
3.1
DVB-S/C/T .............................................................................................................15
3.2
Der DVB-Transportstrom......................................................................................15
3.3
DVB-SI / PSI ...........................................................................................................19
3.3.1 Grundlagen......................................................................................................19
3.3.2 Übersicht SI / PSI .........................................................................................20
3.3.3 Aufbau von SI-/PSI Daten ............................................................................23
4
5
3.3.3.1
Tables...................................................................................................................24
3.3.3.2
Sections................................................................................................................24
3.3.3.3
Descriptors..........................................................................................................26
ANALYSE UND ERLÄUTERUNG DER RANDBEDINGUNGEN ............................... 29
4.1
Randbedingungen ....................................................................................................29
4.2
Vorhandene Systeme auf dem Markt....................................................................29
4.3
Hauptschwerpunkt...................................................................................................30
KONZEPT EINER ZIELLÖSUNG ......................................................................... 31
5.1
Diskussion und Evaluierung verschiedener Lösungsansätze ............................31
5.1.1 Open-Source ....................................................................................................31
5.1.2 Eigens programmierte Software.........................................................................33
5.2
Funktionen im gewählten System..........................................................................33
5.2.1 Aufnahme .......................................................................................................33
5.2.2 Ringpuffer........................................................................................................34
5.2.3 Extrahierung der SI-Daten .............................................................................35
5.2.4 Organisation der Daten ...................................................................................36
5.2.5 Präsentation.....................................................................................................38
5.2.6 Ausfallsicherheit ..............................................................................................39
5.3
6
Methoden zur Umsetzung ......................................................................................40
UMSETZUNG DES KONZEPTS ............................................................................ 43
6.1
TS-Buffer...................................................................................................................43
6.2
TS-Recorder..............................................................................................................48
2
Inhaltsverzeichnis
6.3
CTSPacket.................................................................................................................53
6.4
TSFilterBank.............................................................................................................53
6.5
TS2PS-Worker .........................................................................................................58
6.5.1 Re-Multiplexing ..............................................................................................60
6.5.2 Transcoding (Frameserver) ...............................................................................63
6.6
Tables-Socket-Service .............................................................................................66
6.7
TS-Analyzer-Applet.................................................................................................71
6.8
Webfrontend ............................................................................................................74
6.8.1 Extraktion von Video-Material ......................................................................76
6.8.2 Analyse der SI-/PSI-Daten............................................................................78
6.8.3 Extrahierung von Transportstromfragmenten ...................................................79
6.8.4 DVD-Generierung .........................................................................................81
7
INSTALLATION, KONFIGURATION UND BETRIEB .............................................83
8
ZUSAMMENFASSUNG .........................................................................................85
8.1
9
Kritische Würdigung ...............................................................................................85
FAZIT / AUSBLICK .............................................................................................87
III LITERATURVERZEICHNIS........................................................................89
A
Listings.............................................................................................................93
A.1
DTDs.........................................................................................................................93
A.1.1 Tables-Socket-Service .....................................................................................93
B
A.2
TS2PS Job-Files .......................................................................................................94
A.3
Beispiel Konfigurationsdatei ..................................................................................94
Pflichtenheft zum System ................................................................................96
I Abbildungsverzeichnis
I
3
Abbildungsverzeichnis
ABBILDUNG 1
VERTEILUNG VON DVB-SIGNALEN [LENZ] .....................................................15
ABBILDUNG 2
UMWANDLUNG VON ELEMENTARSTROM ZU TRANSPORT STROM ................16
ABBILDUNG 3
AUFBAU EINES PES PAKETS ..................................................................................17
ABBILDUNG 4
AUFBAU EINES TS PAKETS .....................................................................................18
ABBILDUNG 5
PAKETIERUNG DER DATENSTRÖME BEI DVB...................................................18
ABBILDUNG 6
ÜBERSICHT ALLER PSI / SI TABLES ......................................................................20
ABBILDUNG 7
ZUSAMMENSPIEL D. TABLES PAT UND PMT......................................................21
ABBILDUNG 8
AUFBAU EINER TABLE .............................................................................................24
ABBILDUNG 9
BEISPIEL EINER SECTION........................................................................................25
ABBILDUNG 10
BEISPIEL EINES DESCRIPTORS ...............................................................................27
ABBILDUNG 11
DVB-RÜCKEMPFANG ..............................................................................................29
ABBILDUNG 12
BEISPIEL-USECASE FÜR TS-BUFFER .....................................................................44
ABBILDUNG 13
INHALT DES RINGPUFFER-VERZEICHNISSES ......................................................44
ABBILDUNG 14
NAMENSGEBUNG VON RINGPUFFER-DATEIEN ................................................45
ABBILDUNG 15
AKTIVITÄTENDIAGRAMME LESEN/SCHREIBEN IN RINGPUFFER ..................46
ABBILDUNG 16
KLASSENDIAGRAMM TS-BUFFER ..........................................................................47
ABBILDUNG 17
BEISPIEL EPG-XML ................................................................................................49
ABBILDUNG 18
KLASSENDIAGRAMM TECHNOTREND SDK (AUSZUG).....................................51
ABBILDUNG 19
KLASSENDIAGRAMM TS-RECORDER ....................................................................52
ABBILDUNG 20
KLASSENDIAGRAMM TS-PACKET..........................................................................53
ABBILDUNG 21
KLASSENDIAGRAMM TS-FILTER ...........................................................................54
ABBILDUNG 22
EINBETTUNG VON SECTIONS IN TS-PAKETE.....................................................56
ABBILDUNG 23
AKTIVITÄTENDIAGRAMM SECTION-FILTER .......................................................57
ABBILDUNG 24
TS2PS-WORKER........................................................................................................58
ABBILDUNG 25
TS2PS-WORKER JOBFILES ......................................................................................59
ABBILDUNG 26
PVASTRUMENTO ......................................................................................................62
ABBILDUNG 27
PROJECT-X .................................................................................................................62
ABBILDUNG 28
FUNKTIONSWEISE EINES FRAMESERVERS ...........................................................64
ABBILDUNG 29
DGINDEX ..................................................................................................................65
ABBILDUNG 30
LOGISCHE STRUKTUR BEIM „FRAMESERVING“..................................................66
ABBILDUNG 31
NON-LINEARE TRANSPORTSTROMANALYSE ......................................................69
ABBILDUNG 32
BEISPIEL XML-ANTWORT TS-INTERPRETATION ..............................................70
ABBILDUNG 33
TS-ANALYZER-APPLET ...........................................................................................73
ABBILDUNG 34
TS-ANALYZER DETAILANSICHT............................................................................73
ABBILDUNG 35
WEBFRONTEND – VIDEO EXTRAHIERUNG 1 .....................................................76
4
I Abbildungsverzeichnis
ABBILDUNG 36
WEBFRONTEND – VIDEO EXTRAHIERUNG 2 .....................................................77
ABBILDUNG 37
WEBFRONTEND – TRANSPORTSTROMANALYSE .................................................78
ABBILDUNG 38
WEBFRONTEND – TRANSPORTSTROM-EXTRAHIERUNG ..................................79
ABBILDUNG 39
CODE-AUSSCHNITT TRANSPORTSTROM-EXTRAHIERUNG ...............................80
ABBILDUNG 40
WEBFRONTEND – DVD-EXPORT .........................................................................81
II Abkürzungsverzeichnis
II Abkürzungsverzeichnis
AMD
API
ARS
ASI
ATA
AV
AVI
BAT
BBC
BDA
CAT
CBR
CMS
DTD
DTS
DVB
DVB-C
DVB-S
DVB-T
DVD
EIT
EPG
ES
ETSI
GNU
GPL
GUI
HTML
ID
IDE
IP
ISO
JVM
KiKa
LAMP
LGPL
MPEG
Advanced Micro Devices
Application Programming Interface
Asi Record Server
Asynchronous Serial Interface
Advanced Technology Attachment
Audio / Video
Audio Video Interleaved
Bouquet Association Table
British Broadcasting Corporation
Broadcast Driver Architecture
Conditional Access Table
Constant Bit Rate
Content Management System
Document Type Definition
Decode Time Stamp
Digital Video Broadcasting
Digital Video Broadcasting per Kabel
Digital Video Broadcasting per Satellit
Digital Video Broadcasting terrestrisch
Digital Versatile Disc
Event Information Table
Electronic Program Guide
Elementarstrom
European Telecommunications Standards Institute
GNU’s Not Unix
General Public License
Graphical User Interface
Hypertext Markup Language
Identifikations-Nummer
Integrated Development Environment
Internet Protocol
International Organisation for Standardization
Java Virtual Machine
Kinderkanal
Linux Apache Mysql Php
Lesser General Public License
Moving Picture Experts Group
5
6
MS
Mux
MVCD
NIT
PAT
PC
PES
PID
PHP
PMT
PS
PSI
PTS
PVA
RAID
RST
SATA
SCSI
SDI
SDK
SDT
SI
ST
TB
TDT
TOT
TS
TSDT
TV
UK
UPnP
UTC
VBR
VCD
VDR
VHS
WAMP
XML
ZDF
II Abkürzungsverzeichnis
Microsoft
Multiplex(ing)
Mole VCD
Network Information Table
Program Association Table
Personal Computer
Packetized Elementary Stream
Packet ID
PHP Hypertext Preprocessor
Program Map Table
Program Stream
Program Specific Information
Presentation Time Stamp
Packet Video Audio
Redundant Array of Inexpensive Disks
Running Status Table
Serial ATA
Small Computer Systems Interface
Serial Digital Interface
Software Development Kit
Service Description Table
Service Information
Stuffing Table
Tera-Byte
Time and Date Table
Time Offset Table
Transportstrom
Transport Stream Description Table
Television
United Kingdom
Universal Plug and Play
Universal Time Coordinated
Variable Bit Rate
Video-CD
Video Disk Recorder
Video Home System
Windows Apache Mysql Php
Extensible Markup Language
Zweites Deutsches Fernsehen
7
8
1 Einführung
1
9
Einführung
Digitales Fernsehen und DVB1 sind Begriffe, die spätestens seit der Einführung des digitalen terrestrischen Fernsehens in Deutschland immer geläufiger werden. Digitale Fernsehempfänger, so genannte Set-Top-Boxen halten immer weiter Einzug in deutschen
Wohnzimmern.
Auch auf Senderseite gewinnt die Verbreitung der Fernsehsignale auf digitalen Verbreitungswegen wie Satellit, Kabel oder Terrestrisch immer mehr an Bedeutung. Die Vorteile
dieser Technik stellen sich sowohl auf Seite der Sender als auch auf Seite des Fernsehkonsumenten immer mehr in den Vordergrund. Innerhalb gleicher Frequenzbänder, die
das analoge Fernsehen nutzt, lassen sich dank digitaler Technik mehrere Programme
übertragen, wo beim analogen Fernsehen nur für ein Programm Platz ist. Zusätzlich lassen sich im digitalen Fernsehen Zusatzdaten, so genannte SI2- oder PSI3-Daten übertragen. Diese Daten dienen einem Empfänger dazu, sich beispielsweise selbsttätig auf alle
Programme einzustellen oder den „Electronic Program Guide“ (EPG) aufzubauen, mit
dem der Fernsehzuschauer eine „Fernsehzeitschrift“ direkt über den Fernseher abrufen
kann.
Die Tatsache, dass sich digitale Signale ohne Qualitätsverlust aufzeichnen lassen, öffnet
die Pforten für neue Anwendungen. Deshalb entstand im ZDF der Wunsch nach einem
zentralen Sendespeicher, welcher – durch die digitale Technik – multifunktional ist und
sowohl Sendemitschnitte ermöglicht, als auch die Kontrolle der Sendequalität bzw. zur
Lokalisierung eventueller Fehler dient. Nicht selten kommt es vor, dass von Zuschauern
der Hinweis gegeben wird, es seien bestimmte Merkmale wie beispielsweise der Surround4-Sound nicht gesendet worden bzw. ausgefallen. Vorwürfe dieser Art lassen sich
bis dato nicht weiter verfolgen, da in den meisten Fällen keine Mitschnitte existieren.
Deshalb muss ein zentrales System eingeführt werden, welches rund um die Uhr das
komplette Sendeangebot des ZDF mitschneidet und bei Bedarf in entsprechender Form
zur Verfügung stellt.
DVB – Digital Video Broadcasting
SI – Service Information
3 PSI – Program Specific Information
4 Surround – Mehrkanal-Tonsystem, um räumlichen Klang zu erzeugen
1
2
10
1 Einführung
Diese Arbeit besteht aus 9 Kapiteln.
Kapitel 1 stellt eine Einführung dar, welche einen kurzen Überblick über das in dieser
Diplomarbeit behandelte Thema gibt.
Kapitel 2 legt die Ziele dar, welche durch Bearbeitung dieser Arbeit erreicht werden sollen.
In Kapitel 3 werden die benötigten Grundlagen zum Themengebiet digitales Fernsehen
vermittelt. Hierzu gehören die Verbreitung von Signalen, der Aufbau des Datenstromes
sowie die Struktur dessen Inhalts.
Kapitel 4 erläutert die infrastrukturellen und organisatorischen Randbedingungen, welche
sich auf die Planung und Realisierung des Systems auswirken.
Ein Konzept zur Erreichung der Ziele dieser Arbeit wird in Kapitel 5 erstellt, wodurch
die nötigen Grundlagen für die darauf folgende Umsetzung erarbeitet werden.
In Kapitel 6 wird dann auf die Umsetzung des zuvor erstellten Konzepts eingegangen.
Hierzu gehören sowohl die Methoden und Werkzeuge der Umsetzung als auch die resultierenden Softwaremodule.
Kapitel 7 erklärt kurz das Vorgehen zur Installation und zum Betrieb des entstandenen
Systems.
Kapitel 8 bietet eine kurze Zusammenfassung der Ergebnisse.
Kapitel 9 gibt schließlich einen Ausblick auf die zukünftige Verwendung und denkbare
weitere Verwendungsmöglichkeiten.
2 Ziele dieser Arbeit
2
11
Ziele dieser Arbeit
Das ZDF plant, eine zentrale Stelle zum Mitschneiden des eigenen Programms zu schaffen. Diese Forderung hat ihren Ursprung an verschiedenen Stellen im Haus.
Ein solches System wird unter anderem benötigt, um Zuschaueranfragen, welche sich um
das Nicht-Vorhandensein von Diensten/Angeboten oder Sendefehler drehen, besser
bearbeiten zu können. Des Weiteren ist die aktuelle Situation so, dass beispielsweise Redaktionen ihre eigenen Sendungen aufnehmen. Hierfür kommen die verschiedensten
Techniken von VHS-Rekordern über DVD-Rekorder bis hin zu anderen Aufzeichnungstechniken zum Einsatz. Solche „Privatmitschnitte“ sollen durch das geplante System
unnötig werden, da dadurch eine zentrale Stelle entsteht, an der ein Interessierter
Sendeinhalte in vielen verschiedenen Formaten abrufen kann.
Weiterhin ist geplant, das On-Demand-Streaming5 Angebot des ZDF zu erweitern und
dieses System als Quell-Plattform für Sendeinhalte zu verwenden. Da sämtliche Sendeinhalte bereits vorgehalten werden, bietet sich dies an.
Hierbei ist es nötig, das komplette Bouquet6 des ZDF, zurzeit bestehend aus ZDF,
ZDFinfokanal, ZDFdokukanal, ZDFtheaterkanal, 3sat und KiKa in unveränderter Qualität aufzuzeichnen.
Um die Fehlerfreiheit der Signale kontrollieren zu können, ist es erforderlich, die Sendedaten nicht an einer verfügbaren Stelle im Haus, das heißt vor dem Senden zu analysieren, sondern das bereits gesendete und über DVB-S rückempfangene Satellitensignal zu
verwenden. Oft liegen auftretende Fehler nämlich nicht im Hause des Senders selbst,
sondern irgendwo in der Sendekette zwischen ZDF und den verschiedenen Empfängern.
Hierfür soll ein System geschaffen werden, das 24 Stunden am Tag alle Inhalte des ZDFBouquets mitschneidet und entsprechende Möglichkeiten anbietet, sowohl AudioVideodaten zu extrahieren, als auch den DVB Datenstrom auf Fehler zu analysieren.
5
6
On-Demand-Streaming – Fernsehinhalte auf Abruf, die übers Internet betrachtet werden können
Bouquet – Logische Gruppierung verschiedener Sender. Alle Spartensender des ZDF bilden z.B. ein
Bouquet
12
2 Ziele dieser Arbeit
3 Grundlagen zu digitalem Fernsehen
3
13
Grundlagen zu digitalem Fernsehen
Die Digitaltechnik hat in den letzten Jahren in sehr vielen Bereichen große Fortschritte
gemacht. Besonders ausgeprägt ist diese Entwicklung im Elektronik-Sektor. Nahezu kein
heutiges elektronisches Gerät kommt ohne Digitaltechnik aus.
Signale, die früher analog verarbeitet wurden, werden heute vollkommen digital übertragen. Der Vorteil einer digitalen Übertragung liegt darin, dass sichergestellt ist, dass ein
Signal beim Empfänger in derselben Qualität ankommt wie es vom Sender gesendet
wurde.
Ein einfaches Beispiel ist das Telefon. Wo früher noch analoge Signale übertragen wurden, ist heutzutage das komplette Telefonnetz digital. Selbst sehr lange Entfernungen
werden dank Digitaltechnik heute mit dem Telefon in unverminderter Tonqualität überbrückt.
In der heutigen Fernsehproduktion hat die Digitaltechnik bereits vor Jahren ihren Siegeszug begonnen. Geräte wie Kameras, Schnittcomputer oder Bildmischer besitzen heutzutage alle Schnittstellen, um ihre Daten in digitaler Form auszutauschen. Im Bereich der
professionellen Videotechnik hat sich SDI7 etabliert, das je nach Quellenformat Daten in
unkomprimierter Form mit Datenraten von 143 Mbit/s bis 540 Mbit/s überträgt.
Mit der Übertragung digitaler Fernsehsignale beschäftigt sich das im Jahre 1993 gegründete DVB-Project. Zur Datenreduktion kommt hier der MPEG-2 Standard zum Einsatz,
wodurch es ermöglicht wird, Videodaten über die schmalbandigen Fernsehkanäle zu
übertragen.
So wurde dann Ende 1993 DVB-S vom europäischen Normungsinstitut ETSI als Standard für die digitale Satellitenübertragung verabschiedet. In den darauf folgenden zwei
Jahren erschienen auch Entwürfe für die terrestrische (DVB-T) und kabelgebundene
(DVB-C) Übertragung. [DVBORG]
Bis heute hat sich DVB in vielen Teilen der Welt als Übertragungsstandard für digitale
Fernsehsignale etabliert.
Dank der geringen Datenraten der MPEG-2 Videosignale ist es bei DVB nicht nur möglich, mehrere Programme innerhalb der Frequenz eines herkömmlichen analogen
7
SDI – Serial Digital Interface – Übertragung von digitalen Videosignalen via Koaxialkabel
14
3 Grundlagen zu digitalem Fernsehen
Kanals unterzubringen, sondern es erlaubt darüber hinaus auch die Übertragung von
Zusatzinformationen.
Die Übertragung dieser verschiedenartigen Daten wird möglich, indem ein so genannter
Multiplex gebildet wird, in dem die unterschiedlichen Daten zu einem einzigen Datenstrom – dem Transportstrom – zusammengesetzt werden.
Die logische Zusammensetzung mehrerer Programme wird Bouquet genannt. Ein Bouquet ist immer logisch zu sehen, nicht physikalisch. So kann ein Transportstrom durchaus
mehrere Bouquets enthalten oder es kann sich ein Bouquet über mehrere Transportströme verteilen.
3.1 DVB-S/C/T
3.1
15
DVB-S/C/T
Abbildung 1 beschreibt mögliche Verbreitungswege der digitalen Fernsehsignale. Dies
kann über verschiedene Ausstrahlungswege geschehen. Als Haupt-Signal werden immer
Signale des DVB-S Systems verwendet, die für DVB-C und DVB-T an Kopfstationen
der Netzbetreiber empfangen werden. Dort werden sie entsprechend bearbeitet8 und
über das eigene Netz gesendet.
Die verschiedenen Ausbreitungswege unterscheiden sich nur in der physikalischen Übertragung. Die Form der empfangenen Daten ist immer gleich.
Abbildung 1: Verteilung von DVB-Signalen [LENZ]
3.2
Der DVB-Transportstrom
Um Fernsehprogramme über DVB zu übertragen, werden zunächst alle Audio- und Videosignale getrennt in MPEG-2 kodiert. Es entsteht also für jede Komponente ein sepa-
8
Anpassung von Datenraten, neues Multiplexing, etc.
16
3 Grundlagen zu digitalem Fernsehen
rater Elementarstrom9 (ES). Diese Ströme werden wiederum von einem Packetizer in
kleinere Elemente variabler Länge zerlegt.
Neben diesen Audio- und Videoströmen werden auch Zusatzdaten auf die gleiche Art
und Weise paketiert. Eine vorherige Digitalisierung entfällt dabei, da diese Daten ohnehin
bereits in digitaler Form vorliegen.
Die so gebildeten PES-Pakete formen nach dem Passieren des Packetizers wiederum
jeweils einen Packetized Elementary Stream (PES). Dieser Vorgang wird in Abbildung 2
verdeutlicht.
Abbildung 2: Umwandlung von Elementrastrom zu Transport Strom
Ein solches PES-Paket besteht immer aus einem charakteristischen, festgelegten Header10
und den Nutzdaten, dem Payload.
Elementarstrom (Elementary Stream) – Datenstrom, der nur ein einziges Element (Audio, Video, Daten)
transportiert
10 Header – Metadaten am Anfang einer Datei / eines Datenblocks, um z.B. den Ursprung der Daten zu
kennzeichnen
9
3.2 Der DVB-Transportstrom
17
Abbildung 3: Aufbau eines PES Pakets
Der Header bezeichnet, um welche Art von Daten (Audio, Video, Zusatzdaten) es sich
handelt und gibt die Länge des gesamten Pakets an. Außerdem enthält er – vorausgesetzt
es handelt sich um Audio- oder Videodaten – die PTS11- bzw. DTS12- Zeitstempel, die für
die Synchronisation der Datenströme verwendet werden.
Die Länge eines PES-Pakets ist variabel, wobei die maximale Gesamtlänge auf
65541 Bytes [KLEIN] begrenzt ist.
Nach der Paketierung in PES-Pakete werden diese wiederum vom Multiplexer in kleinere, gleich große Pakete von 188 Bytes zerlegt, welche den Transportstrom (TS) bilden.
Hier wäre es grundsätzlich auch möglich, einen „Program Stream“ (PS) zu generieren,
wie er beispielsweise auf einer DVD zu finden ist. Der Program Stream besteht im Gegensatz zu einem Transport Stream aus Paketen variabler Länge. Ein Program Stream
eignet sich allerdings nicht für fehlerbehaftete Transportwege wie die Satellitenübertragung. Deshalb wurde für DVB festgelegt, ausschließlich einen Transport Stream zu verwenden. Darüber hinaus ist es nur mit einem Transport Stream möglich, Programme mit
unterschiedlichen Zeitbasen innerhalb eines Kanals zu übertragen. [REIMERS]
Die Pakete des Transport Streams bestehen ebenfalls aus einem Header und Nutzdaten.
Um die nachfolgenden Daten richtig interpretieren zu können, muss ein Empfänger des
Transport Streams den Beginn eines solchen TS-Pakets suchen. Hierfür besteht das erste
Byte des Headers eines TS-Pakets aus einer charakteristischen Bitfolge, dem Sync-Byte.
Dies identifiziert den Beginn eines TS-Pakets eindeutig. Das Sync-Byte besitzt immer die
Bitfolge 0100 0111 = 0x47 (Dezimal: 71).
11
12
PTS – Presentation Timestamp
DTS – Decode Timestamp
18
3 Grundlagen zu digitalem Fernsehen
Abbildung 4: Aufbau eines TS Pakets
Neben dem Sync-Byte ist ein weiteres wichtiges Feld im Header eines TS Pakets die Packet-ID (PID). Dieser Wert repräsentiert die Zugehörigkeit eines TS-Pakets. Pakete mit
identischer PID gehören auch zum selben Elementarstrom. Das heißt jede Komponente,
also jeder Elementarstrom, des Transport Streams besitzt eine eigene eindeutige PID.
Aus den vorangehend erläuterten Eigenschaften wird die Struktur des DVB-Signals in
Abbildung 5 dargestellt.
Abbildung 5: Paketierung der Datenströme bei DVB
Die Pakete des PES werden samt Header in den Payload der TS-Pakete gemapped13. Da
PES-Pakete im Allgemeinen größer sind als TS-Pakete, wird im jeweils folgenden TS-
13
Mapping – hier: Aufteilen
3.3 DVB-SI / PSI
19
Paket an der entsprechenden Stelle des PES-Pakets angesetzt, wo das Schreiben des letzten Pakets beendet wurde. Ist ein PES-Paket fertig und es besteht noch Raum im TSPaket, so werden so genannte Stuffing-Bytes eingefügt, um den Rest des TS-Pakets mit
Null-Werten zu füllen und somit die vorgeschriebene Länge des Pakets zu gewährleisten.
[ISO 13818-1]
3.3
DVB-SI / PSI
3.3.1 Grundlagen
Beim digitalen Fernsehen besteht neben der Möglichkeit, mehrere Audio- und VideoProgramme zu übertragen die Möglichkeit, Zusatzinformationen mitzusenden. Diese
Zusatzinformationen werden als PSI (Program Specific Information) und SI (Service
Information) Daten bezeichnet.
PSI Daten werden durch MPEG-2 [ISO 13818-1] definiert und dienen dem Decoder
dazu, sich im Datenstrom zu orientieren. Eine Funktion ist beispielsweise, die verschiedenen PES14 ihren entsprechenden Programmen zuzuordnen.
SI Daten sind eine Erweiterung, welche durch den DVB-Standard [ETSI 300468] definiert werden. Hierzu gehören beispielsweise Sender- und Bouquetnamen oder die elektronische Programmzeitschrift (EPG), welche Sendezeiten und Beschreibungen zu den
Sendungen enthält.
Diese Zusatzdaten werden in Form von „Tabellen“ (Tables) übertragen. Es gibt verschiedene Arten von Tables, die sich untereinander in ihrem Inhalt unterscheiden, von
der Struktur her jedoch alle einen ähnlichen Aufbau besitzen. Jede Table besitzt eine
charakteristische Table-ID, durch die der Inhalt der Table festgelegt wird.
Bei der Übertragung werden die Tables innerhalb des Transportstroms zyklisch ausgespielt. Dafür legt der Standard bestimmte Minimal- und Maximalintervalle für die einzelnen Tabellenarten fest. Es ergeben sich also unterschiedliche Häufigkeiten der Tables im
Transportstrom. Wichtige werden häufiger gesendet als weniger wichtige.
14
PES – Packetized Elementary Stream
20
3 Grundlagen zu digitalem Fernsehen
3.3.2 Übersicht SI / PSI
Abbildung 6 liefert einen Überblick über alle PSI / SI Tabellen sowie deren zugehörige
Ausspiel-Intervalle [ETSI 300468].
Abbildung 6: Übersicht aller PSI / SI Tables
Im Folgenden werden die Bedeutungen einiger dieser Tables erläutert.
3.3 DVB-SI / PSI
21
PAT (Program Association Table)
Die PAT enthält Informationen über die verschiedenen Services15 eines Transportstroms.
Der Empfänger kann anhand der PAT interpretieren, wie viele Services im Transportstrom existieren und die entsprechenden PIDs zu deren PMT zuordnen, welche weitere
Informationen enthält. Die PAT besitzt immer die PID 0x00 und die Table-ID 0x00.
PMT (Program Map Table)
Für jeden Service im Datenstrom existiert je eine PMT. Diese beinhaltet Informationen
darüber, welche PES-Datenströme (Audio, Video, Zusatzdaten) – welche jeweils wiederum eine eigene PID besitzen – zu welchem Service gehören.
Die PAT in Verbindung mit der PMT ist ein essentieller Bestandteil der PSI-Daten. Anhand dieser Daten kann sich ein Empfänger im Datenstrom orientieren und die verschiedenen Elementarströme untereinander in Verbindung bringen.
Abbildung 7: Zusammenspiel d. Tables PAT und PMT
15
Service – bezeichnet ein Programm welches durch den Transportstrom übertragen wird
22
3 Grundlagen zu digitalem Fernsehen
NIT (Network Information Table)
Die NIT enthält Informationen über das physikalische Netzwerk. Sie transportiert Informationen über das aktuelle Netzwerk, sowie über die Transportströme, die über dieses
Netzwerk übertragen werden.
Ein Netzwerk bezeichnet nach [ETSI 300468] alle Transportstrom-Multiplexe eines bestimmten Übertragungssystems. Beispielsweise bilden die Transportströme, welche über
das Astra16 Satellitennetzwerk gesendet werden, ein Netzwerk.
Durch den Empfang dieser Table bekommt ein Empfänger Informationen über alle ihm
zur Verfügung stehenden Transportströme und kann sich so selbständig für diese weiteren Ströme konfigurieren.
BAT (Bouquet Association Table)
Ein Bouquet ist die Zusammenfassung mehrerer Programme zu einer logischen Einheit.
Die Sender beispielsweise, die logisch – aber nicht zwingend physikalisch – zum ZDF
gehören, bilden ein Bouquet.
Diese zusammengehörenden Programme müssen nicht zwangsweise auf dem gleichen
Transportstrom ausgestrahlt werden, sondern es ist möglich, die Programme eines Bouquets über mehrere Transportströme zu verteilen, diese aber als eine logische Einheit
anzeigen zu lassen.
SDT (Service Description Table)
Die SDT enthält Beschreibungen der in einem Transportstrom vorhandenen Services17.
Hierzu gehören beispielsweise der Name und die Sprache des Services.
Ein Empfänger kann diese Table dazu benutzen, die Namen der empfangenen Programme anzuzeigen.
EIT (Event Information Table)
Die EIT enthält Daten zu den Events18, welche auf den verschiedenen Services ausgestrahlt werden.
Astra – Name einer Flotte von 13 geostationären Kommunikationssatelliten im Eigentum der Firma SES
Global [ASTRA]
17 Service – Ein „Programm“. Z.B. ZDF oder 3sat
18 Event – Ein Event ist bei DVB eine Sendung, die eine festgelegte Startzeit und Dauer besitzt
16
3.3 DVB-SI / PSI
23
Anhand dieser Tabelle ist es einem Empfänger möglich, den „EPG“19 (Elektronische
Programmzeitschrift) zu generieren.
Die EIT enthält u. a. Namen und Inhalt von Sendungen, deren Startzeit und Dauer. Außerdem liefert sie Informationen über die Altersfreigabe sowie das Programmgenre
(Nachrichten, Spielfilm, Sport, usw.)
Um möglichst umfassende Programminformationen aufbauen zu können, ist in [ETSI
300468] vorgesehen, sowohl Event-Informationen für den eigenen Transportstrom zu
senden („actual TS“), als auch für andere Transportströme („other TS“).
Außerdem wird bei der EIT unterschieden zwischen „EIT present/following“ und „EIT
schedule“. Syntaktisch20 sind diese beiden Varianten identisch. Die EIT present/following allerdings beschreibt lediglich zwei Events, nämlich den aktuell gesendeten und den unmittelbar darauf folgenden. Durch dieses System kann ein Empfänger –
wenn nun die EIT present/following sich ändert – den genauen Zeitpunkt feststellen, zu
dem eine neue Sendung beginnt. Das Vorhandensein der EIT present/following ist im
Standard zwingend festgelegt, wobei die EIT schedule als optional definiert ist.
Die EIT schedule beschreibt Events, die nach diesen zwei unmittelbar folgenden auftreten und stellt somit eine Gesamtübersicht über das Programm dar.
TDT (Time and Date Table)
In dieser Tabelle wird die aktuelle UTC-Zeit21 übertragen. Damit ist es einem Empfänger
möglich, seine interne Uhr zu synchronisieren.
3.3.3 Aufbau von SI-/PSI Daten
DVB SI-/PSI-Daten bestehen aus verschiedenen Elementen. Die Hauptstruktur hierbei
repräsentieren Tables, welche eine oder mehrere Sections beinhalten. Sections wiederum
besitzen Descriptoren. Das Wort „Table“ in diesem Sinne ist anfangs leicht verwirrend,
da sich die Bezeichnung nicht wirklich auf die Form der Datenstruktur zurückführen
lässt. Ein Table ist vielmehr ein logischer Verbund mehrerer Sections.
EPG – Electronic Program Guide
Syntax – Festgelegte formale Grammatik
21 UTC – Universal Time Coordinated – Referenzzeit, von der alle Zeitzonen abgeleitet werden (Nachfolger der GMT – Greenwich Middle Time)
19
20
24
3.3.3.1
3 Grundlagen zu digitalem Fernsehen
Tables
Abbildung 8: Aufbau einer Table
Eine Table kann aus einer oder einem Satz von bis zu 256 Sections bestehen. Eine Section ist eine Untereinheit einer Table. Aufgrund ihres Aufbaus kann eine Section auch
einzeln Informationen liefern, jedoch steht eine Table immer für einen kompletten Satz
an Informationen.
3.3.3.2
Sections
Eine Section hat eine variable Größe von bis zu 1024 Byte. Sections der EIT stellen hier
eine Ausnahme dar, da diese bis zu 4096 Bytes lang sein dürfen [ETSI 300468]. Im Gegensatz zur DVB-Table, welche aus mehreren Sections bestehen kann, ist eine Section an
sich in ihrer Form schon eher als Tabelle anzusehen.
Abbildung 9 zeigt ein Beispiel einer Event Information Section der EIT:
3.3 DVB-SI / PSI
25
Abbildung 9: Beispiel einer Section
Für jede Art von Table (PAT, NIT, EIT, usw.) ist der Aufbau deren Sections unterschiedlich.
Es gibt jedoch einige Felder, die den Sections zu allen Tables gleich sind. Dies sind die
ersten 8 Byte von table_id bis last_section_number.
table_id
Die table_id ist für jeden Typ von Section eindeutig definiert ([ISO 13818-1], [ETSI
300468]) und ordnet so einer Section ihren Typ zu. Auf den ersten Blick lässt sich aus
Abbildung 6 ableiten, die PID würde bereits die Aufgabe übernehmen, eine Table eindeutig einzuordnen. Es ist allerdings auch möglich, dass mehrere Tables über eine PID
gesendet werden (siehe TDT, TOT in Abbildung 6), was diese zusätzliche Unterscheidung notwendig macht.
26
3 Grundlagen zu digitalem Fernsehen
section_syntax_indicator
Section_syntax_indicator ist ein 1-bit Feld, welches meistens einen festgelegten Wert besitzt
oder – je nach Art der Table – einen bestimmten Zustand beschreibt.
section_length
Beschreibt die Länge der Section in Bytes. Gezählt wird ab dem diesem Wert direkt folgenden Byte. Das heißt, da section_length genau bei der Position 3 Bytes endet, besitzt eine
Section immer eine tatsächliche Länge von section_length + 3 Bytes.
table_id_extension
Dieser Wert wird genutzt, um so genannte Subtables zu identifizieren. Der Name des
Feldes ist für jede Table anders, hier in der EIT lautet die Bezeichnung „service_id“.
version_number
Dieses Feld wird verwendet, um Änderungen an einer Table zu identifizieren. Bei jeder
Änderung der Daten einer Table wird diese Nummer um 1 erhöht und bei Erreichen des
Werts 31 wieder bei 0 angefangen. Innerhalb einer Table existiert immer dieselbe version_number.
section_number
Da eine Table aus mehreren Sections bestehen kann, wird dieses Feld dazu genutzt, die
einzelnen Sections eindeutig zu identifizieren und untereinander zu ordnen.
last_section_number
Gibt die section_number der letzten genutzten Section für diese Table an.
Wie aus Abbildung 8 erkennbar, kann eine Section neben diesen Feldern zusätzlich noch
so genannte Loops und Descriptoren enthalten.
Ein Loop besteht aus einer bestimmten Anzahl sich wiederholender Felder. Im obigen
Beispiel der EIT repräsentiert der dort vorhandene Loop jeweils einen Event.
3.3.3.3
Descriptors
Descriptoren beinhalten die eigentlichen Nutzdaten einer Table. Das Format von Descriptoren ist ähnlicher Natur wie das von Sections. Es können also sowohl Felder als auch
3.3 DVB-SI / PSI
27
Loops vorhanden sein. Lediglich ein weiterer Descriptor kann sich nicht innerhalb eines
Descriptors befinden.
Es existiert eine sehr große Auswahl an Descriptoren. Jeder Descriptor beschreibt einen
anderen Inhalt und wird in den Standards [ETSI 300468] und [ISO 13818-1] definiert.
Als Beispiel in Abbildung 10 die Struktur des „Service Descriptor“:
Abbildung 10: Beispiel eines Descriptors
Descriptoren wiederum besitzen einen eigenen Header, welcher aus descriptor_tag und
descriptor_length besteht. Wie Tables auch besitzt jeder Descriptor eine eindeutige Identifizierung, das descriptor_tag. Dieses beschreibt, um welche Art von Descriptor es sich handelt.
Abbildung 10 ist weiterhin zu entnehmen, dass beispielsweise Textdaten wie service_name
in Form von Loops aus einzelnen Zeichen (char) übertragen werden.
28
3 Grundlagen zu digitalem Fernsehen
29
4.1 Randbedingungen
4
4.1
Analyse und Erläuterung der Randbedingungen
Randbedingungen
Als Host-System sollte ein handelsüblicher Server-PC
mit Intel oder AMD-Prozessoren dienen.
Das Signal darf nicht – wie auf den ersten Blick plausibel – an einer beliebigen verfügbaren Stelle im Hause des ZDF, also vor dem Senden abgegriffen werden. Um ein möglichst genaues Abbild der gesendeten Signale zu erhalten, müssen diejenigen Signale
Abbildung 11: DVB-Rückempfang
empfangen werden, welche bereits vom Satellit
stammen und in jedem Haushalt Deutschlands ebenso zu empfangen sind. Dies wird
„Rückempfang“ genannt.
Das DVB-Signal des ZDF besteht momentan aus einem Transportstrom, welcher auf
einem Transponder gesendet wird. Ein DVB-Transportstrom besitzt eine NettoDatenrate von 38 Mbit/s. Dies entspricht einer benötigten Speicherkapazität von ca. 401
GByte pro Tag.
4.2
Vorhandene Systeme auf dem Markt
Zu Beginn dieser Arbeit waren keine Systeme auf dem freien Markt vorhanden, die das
gewünschte Funktionsspektrum abdecken.
Während der Bearbeitung dieser Diplomarbeit wurde von der Firma Dimetis22 der ARS –
ASI Record Server fertig gestellt. Dieser Server ähnelt in seiner Funktionalität sehr dem
in dieser Arbeit entwickelten System.
Die größten Unterschiede zu dem geplanten System dieser Arbeit sind unter anderem,
dass der ARS-Server von Dimetis zum Daten-Empfang statt DVB-Karten teure ASI23Karten verwendet. Dies bringt einerseits etwas mehr Flexibilität, benötigt allerdings zusätzlich einen Demultiplexer, um die empfangenen DVB-Daten in einen ASI-Strom umzuwandeln. Weiterhin wurde die Funktion „Video extrahieren“ in diesem Produkt gänzlich nicht verfolgt. Zur Analyse des Transportstroms wird die externe Software StreamX-
22
23
Dimetis - http://www.dimetis.de/
ASI – Asynchronous Serial Interface
4 Analyse und Erläuterung der
30
Randbedingungen
pert der Firma DekTec verwendet, welche zwar umfangreiche Funktionen bietet, allerdings in der Verwendung stark eingeschränkt ist. Die Software ist ausschließlich lauffähig,
wenn eine ASI-Karte derselben Firma im Rechner eingebaut ist, was sich sehr nachteilig
auf eine Client-Server Architektur auswirkt.
Neben dem ARS von Dimetis wird derzeit ein System von der Firma Promise.tv im Auftrag der BBC entwickelt. Es besitzt 3,2 TB Festplattenkapazität und ist damit in der Lage,
alle sechs terrestrischen DVB-T Multiplexe im UK eine Woche lang zu speichern.
Bei diesem „Pandora Box“ genannten Prototyp geht es BBC darum zu erforschen, wie
sich Fernsehzuschauer verhalten, wenn sie eine solch enorme Programmauswahl zur
Verfügung haben.
Leider ist dieses Projekt noch ein Prototyp und es scheint, als würde nicht weiter daran
entwickelt. [INFORMITV]
4.3
Hauptschwerpunkt
Der Hauptschwerpunkt dieser Arbeit liegt auf der Aufnahme und effizienten Weiterverarbeitung von DVB-Daten. Hierfür müssen für die gesamte Kette, das heißt Aufnahme,
Speicherung und Organisation, Verarbeitung (Daten, Video) und Ausgabe Konzepte
erstellt werden.
Da allerdings auch der leistungsfähigste Einzelserver nicht als vollwertiger EncoderRechner zu sehen ist, wird auf die eigentliche Ausgabe weniger tief eingegangen, da ohnehin eine Anbindung an das Streaming-System des ZDF vorgesehen ist.
5.1 Diskussion und Evaluierung verschiedener Lösungsansätze
5
31
Konzept einer Ziellösung
5.1
Diskussion und Evaluierung verschiedener Lösungsansätze
Zur Realisierung des Vorhabens sind verschiedene grundsätzliche Herangehensweisen
denkbar. Da im Bereich DVB bereits mehrere Projekte – vor allem im Open-Source Sektor – existieren, ist eine sich bietende Möglichkeit, existierende Software zu verwenden
und entsprechend den eigenen Bedürfnissen anzupassen bzw. zu erweitern.
Die andere Möglichkeit besteht darin, Software von Grund auf in Eigenregie zu entwickeln, was dem Programmierer mehr Freiheiten lässt und vor allem mehr Einblicke in das
zu Grunde liegende System bietet.
5.1.1 Open-Source
Der Ausdruck Open-Source steht für „Quellen-Offenheit“. Er bedeutet im Sinne der
„Open Source Definition“, dass jeder die Möglichkeit hat, Einblick in den Quellcode zu
haben sowie die Erlaubnis, diesen Quellcode zu verändern und/oder weiterzugeben.
Die zwei am weitesten verbreiteten Open-Source Lizenzen sind die GNU General Public
License (GPL) und GNU Lesser General Public License (LGPL). Open-Source Lizenzen
werden von der Free Software Foundation [FSF] herausgegeben.
Folgende sind die grundsätzlichen Inhalte der GPL Lizenz:
-
Jeder darf unter GPL Lizenzierte Software uneingeschränkt und zu jedem Zweck
nutzen.
-
Jeder darf Kopien des Programms verteilen. Der Source-Code muss allerdings
mitverteilt werden bzw. die Möglichkeit geschaffen werden, den Source-Code
einzusehen.
-
Die Software darf nach Belieben verändert werden.
-
Veränderte Software darf unter Berücksichtigung der vorhergehenden Regeln ebenfalls vertrieben werden. Diese muss ebenfalls unter GPL lizenziert sein.
Die LGPL-Lizenz enthält dieselben Grundzüge. LGPL-Software und veränderte LGPLSoftware darf ebenfalls nur unter LGPL oder GPL vertrieben werden. Der größte Unterschied zu GPL liegt darin, dass es erlaubt ist, gegen LGPL-Lizenzierte Software dynamisch zu linken, ohne dass das entsprechende Programm auch unter GPL oder LGPL
32
5 Konzept einer Ziellösung
lizenziert ist. So eignet sich LGPL für Bibliotheken, die auch in kommerziellen Produkten verwendet werden.
Da die Open-Source-Gemeinde im Internet ständig wächst, liegt es nahe, in diesem Bereich nach geeigneten Tools zu suchen und diese zu nutzen.
Hier gibt es so genannte Media-Center-Software, die in erster Linie dafür ausgelegt ist,
einen PC zur Fernseh-Zentrale zu machen. Diese Programme bieten auch die Möglichkeit, Fernsehprogramme aufzunehmen. Dank digitaler Übertragungstechnik gibt es mehrere Produkte, die bei Bedarf alle Programme eines Transponders aufnehmen können.
Auf diese wird hier nun näher eingegangen.
VDR
VDR ist eines der bekanntesten und beliebtesten Open-Source Mediacenter Projekte.
Der Name VDR steht für „Video Disk Recorder“ und wurde ursprünglich von Klaus
Schmidinger entwickelt. VDR besitzt seinen Schwerpunkt in der Aufnahme und Wiedergabe von Fernsehprogrammen.
Dank der Open-Source-Architektur ist es möglich, eigene Plugins24 zu programmieren,
von denen auch eine große Anzahl existiert. So lässt sich VDR Stück für Stück an eigene
Bedürfnisse anpassen.
VDR besitzt von Haus aus die Möglichkeit, mit einer DVB-Karte mehrere Programme
(vorausgesetzt, sie liegen auf dem gleichen Transponder) gleichzeitig in unveränderter
Qualität aufzunehmen.
Für VDR existiert eine sehr große Community, welche sich bei einer Eigenentwicklung
von Plugins unterstützend auswirkt.
MythTV
MythTV sieht, ganz ähnlich wie VDR seine Hauptaufgabe in der Aufnahme von Fernsehprogrammen und deren Wiedergabe. MythTV kommt in der Grundkonfiguration
bereits mit mehr Features zum Anwender, als VDR. Da diese Plugins alle darauf ausgerichtet sind, eine „Multimedia-Zentrale“ aufzubauen, sind diese für die vorliegende Arbeit
nicht nutzbar. Außerdem sind keinerlei Informationen über die Entwicklung zusätzlicher
Plugins für diese Software zu finden.
24
Plugin – Softwaremodul, welches in eine andere Software „eingeklinkt“ wird
5.2 Funktionen im gewählten System
33
Ein allgemeines Problem dieser so genannten Media-Center-Softwares stellt die Tatsache
dar, dass diese Programme auf möglichst komfortable Verwendung im Wohnzimmer
ausgelegt sind. Sie setzen zur Aufnahme alle so genannte Premium DVB-Karten ein.
Eine Premium DVB-Karte hat im Gegensatz zu den so genannten Budget DVB-Karten
einen eigenen MPEG-2-Prozessor bereits in der Hardware integriert. Durch diesen ist es
möglich, die Programme eines Transportstroms einzeln zu interpretieren und auf Festplatte zu schreiben. Unmöglich ist es dagegen, diesen Decoder zu umgehen und die
Transportstromdaten unverändert an den Datenspeicher weiterzugeben.
Da es für diese Arbeit essentiell ist, alle Daten eines Transportstroms in unveränderter
Qualität zu erhalten, eignen sich diese Premium DVB-Karten und somit die darauf aufsetzenden Media-Center Programme wie VDR oder MythTV nicht.
5.1.2 Eigens programmierte Software
Nach einer eingehenden Analyse der vorhergehenden Alternativen wird ersichtlich, dass
es wirtschaftlich am sinnvollsten ist, statt einem Top-Down Vorgehen (Grundsoftware
vorhanden, Zusatzfunktionen selbst programmieren) ein Bottom-Up Vorgehen zu wählen. Hierbei werden die zentralen Elemente eigenständig entwickelt und für kleinere Aufgaben Fragmente anderer Software hinzugefügt.
5.2
Funktionen im gewählten System
Das Resultierende System lässt sich in 3 groben Funktionsfeldern beschreiben. Diese sind
erstens die Aufnahme, bei der es um die Frage geht, auf welchem Weg und in welcher
Form die Daten ins System gelangen. Das zweite Feld besteht aus der Organisation der
Daten, wobei beschrieben wird, wie die empfangenen Daten im System abzulegen sind.
Das dritte große Feld ist die Präsentation. Hier geht es um die Ausgabe sämtlicher Daten.
Damit ist sowohl die Extrahierung von Video-Daten, als auch die Analyse des Transportstroms gemeint.
5.2.1 Aufnahme
Um ein genaues Abbild der gesendeten DVB-Signale zu bekommen, wird der gesamte
Transportstrom in roher Form auf die Festplatten geschrieben. Dies geschieht in einer
Form, die es ermöglicht, bei Erreichen der Maximalkapazität des Datenspeichers alte
34
5 Konzept einer Ziellösung
Daten zu entfernen um Platz für neue zu schaffen. Für diesen Zweck muss ein Ringpuffer-Mechanismus entworfen werden, durch den diese Aufgabe bearbeitet wird.
Die Aufnahme der Signale wird durch eine DVB-Empfangskarte realisiert. Die richtige
Auswahl dieser Karte ist ein wichtiges Element, da Karten verschiedener Hersteller verschiedene Software-Schnittstellen besitzen, welche wiederum unterschiedliche Funktionen und Möglichkeiten bieten.
Für diese Arbeit wurden mehrere Modelle evaluiert. Zum einen Karten der Firma Technotrend, Technotrend Budget und Technotrend Premium Line, zum anderen auch Karten von Hauppauge und Technisat.
Gleich zu Anfang fielen Karten der Technotrend Premium Line aus dem Rennen. Solche
Karten besitzen wie bereits beschrieben einen Decoder-Chip auf der Platine, welcher das
Verarbeiten des DVB-Transportstroms bereits übernimmt und somit keine Rohdaten an
die Software weitergeben kann.
Von der Firma Technisat wurde die Karte SkyStar 2 ausgetestet. Diese Karte bietet eine
sehr übersichtliche und gut dokumentierte Software-Schnittstelle. Trotz aller Übersichtlichkeit bietet diese allerdings recht wenige Funktionen. Unter anderem wird die direkte
Speicherung des DVB-Transportstroms nicht unterstützt und es können lediglich bis
maximal 39 PIDs gleichzeitig empfangen werden. Eine Kopie des Technisat-SDK sowie
dessen Dokumentation befindet sich auf der CD im Anhang zu dieser Diplomarbeit.
Während die Lieferung der Budget-Karte von Technotrend noch ausstand, wurde ein
angeblich zu dieser baugleiches Modell mit dem Namen Nova-SE2 der Firma Hauppauge
getestet. Dieser Test schlug direkt fehl, da die Karte sich nicht durch das SoftwareDevelopment-Kit von Technotrend ansprechen ließ.
Die endgültige Auswahl wurde mit dem Eintreffen der Technotrend-Karte Budget S1400 getroffen. Diese Karte verfügt über alle Funktionen, die benötigt werden. Ein kleiner Nachteil bleibt. Das Software-Development-Kit25 ist zwar sehr mächtig, leider existiert aber keinerlei Dokumentation hierfür, was die spätere Software-Entwicklung manchmal erschwerte.
5.2.2 Ringpuffer
Der Ringpuffer besteht aus einer Software-Schnittstelle und einem festgelegten Verzeichnis auf der Festplatte. Darin gespeicherte Daten werden in passende Dateigrößen von bis
25
Software-Development-Kit (SDK) – Kollektion von Funktionen, Klassen, etc., welche es einem Entwickler erlauben, Anwendungen zu erstellen, die darauf basieren
5.2 Funktionen im gewählten System
35
zu 2 Giga-Byte aufgeteilt. Diese Grenze wurde eingeführt, da Datei-Operationen der
Programmiersprache C++ Dateien nur bis zu einer Obergrenze von exakt 2 GB adressieren können. Betriebssystem-Interne Funktionen wären zwar in der Lage, größere Dateien
zu verarbeiten, was allerdings mit enorm erhöhtem Aufwand einhergehen würde. Aus
diesem Grund wurde entschieden, diese Grenze von 2 GB festzulegen.
Der Ringpuffer muss sich darum kümmern, alte Elemente bei Erreichen der maximalen
Größe zu entfernen, um neue Elemente hinzufügen zu können.
Außerdem wird die Aufgabe des Schreibens und automatischen Teilens, sowie des dateiübergreifenden und nahtlosen Lesens aus dem Ringpuffer übernommen.
5.2.3 Extrahierung der SI-Daten
Um später komfortabel im Strom navigieren zu können, ist es nötig, einige Daten aus
dem Transportstrom zu extrahieren, die als Navigationshilfe dienen können.
Zur Navigation innerhalb des Datenstroms benötigt man Informationen über die Sender
und deren zugehörigen MPEG-Ströme, sowie die Programm-Informationen, die die Sendezeiten von Sendungen angeben.
Um dies zu bewerkstelligen müssen folgende Tabellen ausgelesen werden:
-
PAT (Program Association Table)
Um auszulesen, welche Services (Programme) im Strom vorhanden sind und die
PIDs der zugehörigen PMTs zu erhalten.
-
PMT (Program Map Table)
Für jeden Service existiert eine PMT, auf die von der PAT aus verwiesen wird.
Die PMT enthält die PIDs zu den verschiedenen Elementardatenströmen der jeweiligen Services.
-
EIT actual transport stream p/f
Die EIT enthält Titel, Beschreibung, Sendezeit etc. zu den Sendungen, die über
die verschiedenen Services ausgestrahlt werden.
Da hier keine „Fernsehzeitschrift“ aufgebaut werden muss, sondern lediglich die
Sendungen katalogisiert werden müssen, die auch tatsächlich aufgenommen werden, reicht es hier, nur die EIT actual transport stream, present/following auszulesen. Die EIT p/f enthält ausschließlich Informationen über aktuelle und direkt
darauf folgende Sendungen.
-
SDT actual transport stream
Die SDT actual TS enthält verschiedene Informationen über die Services des
36
5 Konzept einer Ziellösung
Transportstroms. Die hier relevante Information ist der Name des Services, welcher zur Navigation ausgewertet wird.
Diese Daten werden in einer bzw. mehreren XML26-Dateien gespeichert, die bei Bedarf
ausgelesen werden können.
5.2.4 Organisation der Daten
Dieser Abschnitt beschreibt einige Lösungsansätze zur Organisation der ausgelesenen
Daten.
Speicherung der Daten
Zu Anfang waren zwei grundsätzliche Wege zu evaluieren, die empfangenen Daten zu
speichern.
Das ist erstens die Speicherung der Ströme separat, das heißt Speicherung jedes Audio- u.
Video-Stroms einzeln, zusätzlich zu den SI-/PSI-Daten. Der Vorteil dieser Lösung liegt
klar auf der Hand. Da bereits fertige Audio- und Videoströme gespeichert werden, ist es
ein Leichtes, diese später zur weiteren Verwendung zu verarbeiten. Allerdings entstehen
bei dieser Methode auch Probleme. Die Organisation des Ringpuffers wird erschwert, da
nicht ein einziger Strom, sondern mehrere Ströme mit unterschiedlichen Datenraten gespeichert werden müssen. Zusätzlich existiert bei dieser Methode das Problem der Filterung. Um die Zusatzdaten zu erhalten, muss alles gespeichert werden, was kein Videooder Audio-Strom (die ja separat gespeichert werden) ist. Diese Funktionalität zu implementieren, würde einen sehr komplizierten Code und vor allem zur Laufzeit sehr viel
Rechenleistung benötigen, da jedes einzelne Datenpaket von 188 Bytes analysiert werden
müsste. Außerdem wäre es unmöglich, bei Bedarf das ursprüngliche Originalsignal wieder
herzustellen.
Die zweite Möglichkeit mit den empfangenen Daten zu verfahren ist, den Transportstrom in unveränderter Form auf die Festplatten zu schreiben. Bei dieser Methode gehen
keinerlei Daten verloren, da hiermit das ursprüngliche Signal erhalten bleibt. Da nur ein
einziger Datenstrom gespeichert werden muss, ist die Verwaltung des Ringpuffers weniger aufwändig, ebenso wie der Aufwand beim Empfangen der Daten. Bei diesem Vorgehen können größere Pakete als 188 Bytes verwendet werden. Da diese nicht analysiert
werden müssen, können sie direkt und ohne weitere Verarbeitung in den Ringpuffer geschrieben werden. Neben diesen gravierenden Vorteilen ist allerdings das Extrahieren der
26
XML – Extensible Markup Language
37
5.2 Funktionen im gewählten System
Daten – vor allem der Audio-/Videodaten – zu einem späteren Zeitpunkt aufwändiger,
da hier keine vorherige Trennung vorgenommen wurde und die gewünschten Ströme
umständlich aus dem Gesamtdatenstrom herausgelöst und neu gemultiplext werden müssen.
Insgesamt bietet die zweite Methode mehr Vorteile. Da die Daten unverändert gespeichert werden, bietet dieses Verfahren mehr Flexibilität auch für zukünftige Formen der
Weiterverarbeitung.
Extrahierung von EPG-Daten
Die Extrahierung der SI-Daten, um den EPG für das Frontend aufzubauen, muss kontinuierlich geschehen. Um unnötige Systembelastung zu vermeiden, ist hierfür eine sinnvolle Lösung nötig.
Zu diesem Thema gehören zwei Fragen:
1. Wie werden die Daten gespeichert? (Datenbank, XML)
2. Wie werden sie extrahiert? (Während der Aufnahme oder im Nachhinein)
Zur ersten Frage existiert nach der Untersuchung beider Möglichkeiten kein „besser“
oder „schlechter“. Beide Speichermöglichkeiten haben ihre Vor- und Nachteile.
Datenbank
XML
Vorteile:
Vorteile:
-
hohe Geschwindigkeit
-
Überprüfung auf doppelte Einträge -
Universelle Schnittstellen in alle gängi-
kann bereits von DB-System gesche-
gen Programmiersprachen
hen
Nachteile:
-
Flexibel
-
Wenig Infrastrukturabhängig
-
Keine zusätzliche Infrastruktur nötig
Nachteile:
-
DBMS27 muss installiert sein
-
Schnittstellen nicht für alle Program- -
Sehr viele unterschiedliche Parser28
miersprachen verfügbar
verfügbar, viele davon sind schlecht
Zu viele Freiheiten in der Gestaltung
implementiert
-
-
Langsamer als Datenbank
der Datenbankstruktur
27
28
DBMS – Database Management System
Parser – (XML-Parser) Softwareschnittstelle, welche Dateien im XML-Format interpretiert und in eine
Datenstruktur überführt
38
5 Konzept einer Ziellösung
Die Entscheidung fiel vor allem wegen der höheren Flexibilität auf die Speicherung im
XML-Format. Um den signifikanten Geschwindigkeitsunterschied von XML zu einem
DBMS zu verringern, wird pro Tag eine separate XML-Datei geschrieben, welche dann
separat ausgelesen werden kann.
Die zweite Frage ist, wann die Daten extrahiert werden sollen. Von der Programmstruktur her wäre es grundsätzlich logisch, die EPG-Daten im Nachhinein, das heißt aus den
bereits gespeicherten Datendateien im Ringpuffer auszulesen. Bei Versuchen zeigte sich
allerdings, dass hier die Festplatten eine extreme Engstelle darstellen und der Vorgang
des Auslesens von EPG-Daten auf dem Entwicklungsrechner (ohne Raid) ca. 10 Minuten
pro 2GB Ringpuffer-Datei benötigt. Da EPG-Daten kontinuierlich ausgelesen werden
müssen, wäre dies erstens ein Prozess, der die Rechnerleistung des Servers dauerhaft
belegt und zweitens aufgrund der hohen Festplattenaktivität untragbar für die Hardware
wäre.
Deshalb wird eine andere Möglichkeit gewählt. Die DVB-Karten der Firma Technotrend
erlauben es, neben der Speicherung des eigentlichen Transportstroms so genannte „Section-Filter“ zu definieren. Diese analysieren die ankommenden Datenpakete aus dem
Transportstrom direkt auf der DVB-Karte, also völlig ohne weitere Festplattenaktivität
oder ähnlichem. Eine Section besitzt wie in Teilabschnitt 3.3.3.2 erläutert, eine PID und
zusätzlich eine table_id. Der „Section-Filter“, welcher vom SDK zur Technotrend DVBKarte zur Verfügung gestellt wird, setzt selbsttätig die gewünschten Sections entsprechend zusammen und gibt diese, sobald sie komplett sind, in binärer Form an den Benutzer weiter. Diese müssen dann noch entsprechend interpretiert und in die XML-Datei für
den EPG geschrieben werden.
5.2.5 Präsentation
Die Präsentations-Schicht ist das Element, mit dem ein Benutzer des Systems in Kontakt
kommt. Für die Realisierung dieser Schicht sind unterschiedliche Wege denkbar.
Da – vor allem bei der Analyse des Transportstroms – relativ viele Anzeigemöglichkeiten
nötig sind, würde sich eine GUI29-Applikation anbieten. Eine eigenständige Applikation
29
GUI – Graphical User Interface
5.2 Funktionen im gewählten System
39
allerdings wäre wiederum nicht von jedem Rechner aus zu erreichen, da diese zuerst auf
einer Maschine installiert werden müsste.
Aus diesem Grund ist ein Wunsch des ZDF, dieses System über ein Webfrontend im
Intranet bedienen zu können. Zur Analyse des Transportstromes wird dennoch ein JavaApplet in das Webfrontend eingebettet, um wenigstens hier die Vorzüge einer grafischen
Benutzeroberfläche nutzen zu können.
5.2.6 Ausfallsicherheit
Bei Systemen, die rund um die Uhr verfügbar sein sollen, hat die Ausfallsicherheit stets
hohe Priorität. Um Daten- und Ausfallsicherheit zu gewährleisten, muss Hardware doppelt vorhanden sein und Daten mit entsprechender Sicherung gespeichert werden.
Raid 5
RAID steht für „Redundant Array of Inexpensive Disks“ und vereint zwei oder mehr
Festplatten zu einer logischen Einheit. Die Gründe, ein RAID-System einzuführen sind
vielfältig. Neben der Datensicherheit (Redundanz) und Steigerung der Leistung dient
RAID auch anderen sekundären Faktoren wie zum Beispiel dem Austausch/Hinzufügen
von Festplatten im laufenden System oder der Kostenreduktion durch preiswerte Festplatten.
Es gibt verschiedene Arten von RAID, welche durch ihre „Levels“ unterschieden werden. Jeder Level dient einem anderen Ziel. Die drei am Häufigsten verwendeten RAIDLevel sind RAID-0, RAID-1 und RAID-5.
RAID-0 (Striping) beschleunigt Lese- und Schreibzugriffe, indem Daten auf zwei oder
mehr Festplatten im Verbund verteilt werden und so ein „quasi-paralleles“ Schreiben auf
mehrere Datenträger möglich ist. So werden zwar die Zugriffe beschleunigt, die Sicherheit der Daten aber verringert, da beim Ausfall einer Festplatte sämtliche Daten verloren
gehen.
RAID-1 (Mirroring) bietet eine zuverlässige Datensicherung, da Daten „gespiegelt“ werden. Ankommende Daten werden auf alle im Verbund befindlichen Festplatten geschrieben. Wenn eine dieser Festplatten ausfällt, existieren sämtliche Daten noch auf einer anderen. Eine Geschwindigkeitssteigerung resultiert aus RAID-1 nicht. RAID-1 ist kostenintensiv, da nur die Hälfte der Gesamtkapazität zur Verfügung steht.
RAID-5 ist eine Kompromisslösung aus verschiedenen Levels. Es bietet hohe Leistung
beim Lesen und Redundanz bei geringen Kosten, da nur ein kleiner Teil der zur Verfügung stehenden Speicherkapazität für Redundanz-Daten verwendet wird. Hier werden
40
5 Konzept einer Ziellösung
die Nutzdaten wie bei RAID-0 auf alle Festplatten verteilt. Gleichzeitig werden – ebenfalls auf alle Festplatten verteilt – Redudanzinformationen mitgeschrieben, welche es
erlauben, beim Ausfall einer Platte alle ursprünglichen Daten wiederherzustellen. Nachdem eine Festplatte ausgefallen ist und diese ausgetauscht wurde, werden die Daten anhand der zuvor verteilt gespeicherten Paritydaten wiederhergestellt. Während dieses Vorgangs nimmt die Performance des Gesamtverbunds abermals deutlich ab. [PATTERSON]
Zum Einsatz kommt hier ein RAID-5, welches relativ gute Leistung mit hoher Datensicherheit vereint und zudem günstig in der Anschaffung ist. Der finanzielle Aspekt ist bei
Speicherkapazitäten im Terabyte-Bereich nicht zu vernachlässigen.
Redundanz
Redundanz bedeutet, dass wichtige Teile eines Systems doppelt vorhanden sind. So kann
beim Ausfall eines dieser Teile das andere die Arbeit übernehmen. Dies schützt vor Systemausfällen. Der Server, auf dem das System läuft, wird überwiegend mit redundanten
Bauteilen ausgestattet sein. Im Detail sind das unter anderem doppelt vorhandene Netzteile, Lüfter etc.
Des Weiteren sollte darauf geachtet werden, ein Rechnersystem zu verwenden, welches
bei Einsatz mehrerer Prozessoren einen evt. ausgefallenen Prozessor durch Redundanz
ersetzen kann.
5.3
Methoden zur Umsetzung
Um einen Überblick über das komplette zu entwickelnde System zu erhalten, wurde zu
Anfang in Zusammenarbeit mit einigen Mitarbeitern der Abteilung Sendeabwicklung des
ZDF ein kurzes Pflichten-/Lastenheft erstellt, anhand dessen die einzelnen Elemente
gestaltet und entwickelt wurden. Eine Kopie dieses Pflichtenhefts befindet sich in Anhang IIIB zu dieser Arbeit.
Zur Entwicklung der Software kamen unterschiedliche Werkzeuge zum Einsatz. Die
Entwicklung der C++ Software wurde in Microsoft Visual Studio .NET 2003 vorgenommen. Die Festlegung auf diese Entwicklungsumgebung war nicht zu letzt vorgeschrieben durch die Auswahl der DVB-Karte der Firma Technotrend, da das hierfür
5.3 Methoden zur Umsetzung
41
verfügbare Software-Development-Kit auf MS Visual C++ basiert. Unabhängig davon
hat sich diese Entwicklungsumgebung als außerordentlich angenehm und fähig herausgestellt.
Die Entwicklung des Web-Frontends geschah in PHP bzw. Java für das Applet zur
Transportstrom-Analyse. Für beide Sprachen wird die frei verfügbare Entwicklungsumgebung Eclipse30 verwendet. Eclipse wurde ursprünglich entwickelt zur komfortablen
Erstellung von Java-Software. Durch ein gutes Plugin-System existieren mittlerweile allerdings für viele Programmiersprachen entsprechende Erweiterungen. Für die Sprache
PHP existiert das Plugin PHPEclipse31, welches in seinem Funktionsumfang auch kommerzielle PHP-IDEs32 aus dem Rennen wirft.
Eclipse – http://www.eclipse.org
PHPEclipse – http://www.phpeclipse.org
32 IDE – Integrated Development Environment
30
31
42
5 Konzept einer Ziellösung
6.1 TS-Buffer
6
43
Umsetzung des Konzepts
Zur Umsetzung des zuvor erstellten Konzepts erfolgte die Realisierung jedes SoftwareModuls Stück für Stück. Da einige dieser Module aufeinander aufbauen, wurde die zeitliche Reihenfolge bereits durch deren Architektur festgelegt.
Zur Konfiguration wird eine zentrale Konfigurationsdatei verwendet, auf die sämtliche
Softwaremodule Zugriff haben und ihre benötigten Einstellungen entsprechend auslesen.
Externe Elemente
Sämtliche Aktionen, welche die DVB-Karte betreffen, werden über das Software Development Kit der Firma Technotrend erledigt. Dies betrifft das Modul TS-Recorder, welches anhand dieser Software-Schnittstelle das Initialisieren, Tunen, Auslesen von TSDaten u. Auslesen von SI-/PSI-Daten in binärer Form realisiert.
Zur Arbeit mit SI-/PSI-Daten wurde eine Klasse benutzt, die bereits von früheren Diplomanden des ZDF [BOLDT] entwickelt worden ist. Da nach den Standards [ETSI
300468] und [ISO 13818-1] sehr viele verschiedenartige Sections und noch mehr unterschiedliche Arten von Descriptoren existieren, wurde entschieden, diese bereits existierende Software zu verwenden. In ihrer Ursprünglichen Form deckte diese Klasse die
meisten in [ETSI 300468] definierten Arten von Tables, Sections und Descriptoren ab.
Die restlichen in diesem Standard befindlichen, sowie alle Tables, Sections und Descriptoren, welche zusätzlich in [ISO 13818-1] definiert sind, wurden im Rahmen dieser Diplomarbeit hinzuprogrammiert.
Zusätzlich wird zur Extraktion von Video-Material externe Software eingesetzt. Zum
einen für das so genannte „Frameserving“, zum anderen wird zum Umwandeln von Video-Signalen in unterschiedliche Formate beliebige Encoder-Software sowie Codecs verwendet.
6.1
TS-Buffer
TS-Buffer repräsentiert die Verwaltungsklasse des Ringpuffers. Sie muss die Speicherung
und das Auslesen der Daten aus dem Ringpuffer übernehmen. Hierbei soll sie für den
Benutzer transparent arbeiten, das heißt der Benutzer soll sich weder darum kümmern
44
6 Umsetzung des Konzepts
müssen, bei erreichen der Speichergrenze alte Elemente zu entfernen noch darum, die
Dateien des Puffers in Segmente aufzuteilen.
Abbildung 13 zeigt einige Grundfunktionen des Ringpuffers als Usecase Diagramm.
Abbildung 13: Beispiel-Usecase für TS-Buffer
Die Namensgebung der Dateien des Ringpuffers folgt immer demselben Schema. Sie
besitzen einen festlegbaren Präfix, gefolgt
von
der
Start-Zeit
im
Format
YYYYMMDDHHMMSS gefolgt von der
Endzeit im selben Format. Schematisch
Abbildung 12: Inhalt des Ringpuffer-Verzeichnisses
lässt sich ein Dateiname des Ringpuffers
6.1 TS-Buffer
45
wie in Abbildung 14 darstellen. Anhand der Zeitangaben in den Dateinamen wird auch
die grobe Schnell-Navigation innerhalb des Puffers bewerkstelligt.
Abbildung 14: Namensgebung von Ringpuffer-Dateien
Um den Ringpuffer verwalten zu können, müssen zuerst einige Einstellungen vorgenommen werden. Hierzu dient die Struktur sTSBufferSettings. Sie enthält Angaben
zu den Elementen der Dateinamen und dem Verzeichnis, in dem die Ringpuffer-Dateien
gespeichert werden sollen, sowie Informationen über die Gesamtgröße des Ringpuffers
und die Größe einer Datei.
Abbildung 16 zeigt das Klassendiagramm des Ringpuffers. Bei Instantiierung eines Objekts dieser Klasse können mit der Funktion StartIndexingProcess() und
StartCleanUpProcess() zwei Threads33 gestartet werden, die sich um die „Pflege“
des Ringpuffers kümmern.
IndexBufferDirectory() übernimmt die Aktualisierung der im Puffer befindlichen
Daten. Dafür wird in einem einstellbaren Zeitintervall eine Liste aller Dateien, die sich im
Puffer-Verzeichnis befinden erstellt und im Objekt abgelegt. Anhand dieser Liste wird
die Navigation innerhalb des Puffers realisiert.
StartCleanUpProcess() räumt – wie der Name der Methode bereits verrät – den
Ringpuffer auf. In einem einstellbaren Zeitintervall wird die Gesamtgröße der im Puffer
befindlichen Dateien summiert. Wenn dieser Wert über die anhand von sTSBuffer-
33
Gleichzeitige, unabhängige Ausführung zweier “Handlungsstränge” innerhalb eines Programms [KRUEGER]
46
6 Umsetzung des Konzepts
Settings eingestellte Gesamtgröße hinausgeht, wird sukzessive die älteste Datei des
Puffers gelöscht, bis die Gesamtgröße wieder unterhalb der Maximalgröße liegt.
Abbildung 15: Aktivitätendagramme Lesen/Schreiben in Ringpuffer
Die Methode zum Schreiben wurde aus zwei Gründen bewusst schlank gehalten. Zum
einen sollten Transportstromdaten, die aus 188 Byte langen Paketen bestehen, auch nur
an den Paketgrenzen auseinander geschnitten werden. Deshalb werden Schreibvorgänge
immer komplett in die jeweilige Datei vorgenommen. Ein Dateiwechsel wird immer vor
dem gesamten Block vorgenommen. Dadurch bekommen die geschriebenen Dateien
zwar nicht exakt die festgelegte Größe, diese ist jedoch unwichtig, da alle Operationen
6.1 TS-Buffer
47
des Puffers auf den tatsächlichen Dateigrößen basieren und nicht auf den fest eingestellten.
Der zweite Grund für den einfachen Aufbau der Schreibroutine ist Performance. Da die
DVB-Daten in einem Strom ankommen, muss jedes Paket exakt zur Ankunftszeit geschrieben werden können. Ist dies nicht der Fall, wird es verworfen und es kommt zu
Datenverlust.
Abbildung 16: Klassendiagramm TS-Buffer
48
6.2
6 Umsetzung des Konzepts
TS-Recorder
Der Transportstrom-Recorder nimmt rund um die Uhr den DVB-Transportstrom auf.
Seine Aufgabe ist das Lesen der Daten von der DVB-Karte und das Schreiben in den
Ringpuffer.
Außerdem ist der TS-Recorder dafür zuständig, gleichzeitig die wichtigen SI-Daten für
den Aufbau eines EPG auszulesen (vgl. Abschnitt 5.2.3).
Dafür hat das Modul zwei nebenläufige Threads. Jeweils einer davon ist für das Aufnehmen des Transportstroms zuständig, der andere extrahiert die benötigten EPG-Daten.
Beim Auslesen der EPG-Daten werden, wie in Abschnitt 5.2.3 beschrieben Sections der
Tabellen PAT, PMT, EIT und SDT ausgelesen, entsprechend miteinander in Verbindung
gebracht und für die spätere Verwendung gespeichert.
Die Speicherung erfolgt im XML-Format. Um den Aufwand, diese Daten zu interpretieren, möglichst gering zu halten, wird pro Tag ein XML-Dokument verwendet, was es
ermöglicht, die Daten für jeden Tag separat zu parsen34, um den Electronic Program
Guide aufzubauen.
Für jeden Tag werden die empfangenen Ströme, Programme und die dazugehörigen Sendungen im XML-Dokument gespeichert. Bei einer Änderung der Belegung des
Transponders – wie es vor kurzem durch den Wegfall von Eurosport und Euronews
beim ZDF der Fall war – werden die richtigen Daten dann spätestens zum darauf folgenden Tageswechsel wieder korrekt angezeigt.
Abbildung 17 zeigt hierfür eine Beispieldatei im XML-Format.
34
Parsen – Analysieren und Überführen von Daten einer Festgelegten Struktur (meistens Textformat) in
eine andere, meistens native Datenstruktur
6.2 TS-Recorder
Abbildung 17: Beispiel EPG-XML
49
50
6 Umsetzung des Konzepts
Technotrend SDK35
Um auf die DVB-Karte zugreifen zu können, ist es nötig, eine Software-Schnittstelle
zwischen Programmiersprache und Treiber der DVB-Karte zu besitzen.
Microsoft verabschiedete mit BDA36 eine Standardisierte Schnittstelle für digitale TVKarten. Die BDA-Schnittstelle ist eine Treiberarchitektur für die Verwendung von TVund Radiokarten unter Windows [MSBDA]. Software, welche die Microsoft BDASchnittstelle benutzt, bietet hohe Kompatibilität, da dadurch alle Empfangskarten, für die
Treiber in BDA-Architektur verfügbar sind, unterstützt werden. Die Firma Technotrend
bietet BDA-Treiber für ihre Produkte zwar ebenfalls an, allerdings beschränkt sich die
Palette der Möglichkeiten aufgrund der BDA-Architektur nur auf Grundfunktionen. Da
für diese Arbeit auch speziellere Funktionen von Nöten sind, wurde entschieden, auf
Kosten der Kompatibilität die proprietären Treiber und Software Development Kits des
Herstellers zu verwenden. Dieses so genannte SDK ist nicht im Lieferumfang einer solchen DVB-Karte enthalten, Technotrend stellt es allerdings auf persönliche Anfrage und
Unterzeichnung einer Nutzungsvereinbarung kostenlos jedem Interessierten zur Verfügung.
Um über die DVB-Karte auf die Daten des DVB-Signals zugreifen zu können, müssen
zuvor einige Einstellungen vorgenommen werden. Als Grundlage hierfür dienen die
Klassen CDVBBoardControl und CDVBFrontend, welche mit dem SoftwareDevelopment-Kit von Technotrend ausgeliefert werden.
Aufnehmen des Transportstroms
Um die Aufnahme der DVB-Signale zu starten, muss zuerst die Schnittstelle des SDK
sowie die DVB-Karte initialisiert werden. Dies geschieht durch Methoden der Klassen
CDVBCommon, CDVBBoardControl und CDVBFrontend.
35
36
SDK – Software Development Kit
BDA – Broadcast Driver Architecture
6.2 TS-Recorder
51
Abbildung 18: Klassendiagramm Technotrend SDK (Auszug)
Um einen Sender zu empfangen, stellt die Klasse CDVBFrontend die Methode SetChannel() zur Verfügung. Dieser wird eine Struktur übergeben, welche alle erforderli-
chen Eckdaten enthält, um den Tuner auf den entsprechenden Transponder einzustellen.
Um den Transponder des ZDF zu empfangen, müssen beispielsweise folgende Daten
angegeben werden (Stand 02.02.2006):
Frequenz:
11,95350 GHz
Symbolrate:
27500
Polarisation:
Horizontal
Der eigentliche Aufnahme-Vorgang ist nicht aufwändig. Da sich die Ringpuffer-Klasse
bereits eigenständig um die Organisation innerhalb des Ringpuffers kümmert, müssen
ankommende Pakete nur noch an die Ringpuffer-Klasse weitergereicht werden. Hierbei
ist eine geeignete Blockgröße zu wählen. Ein Transportstrom-Paket besitzt eine Länge
von 188 Bytes. Da das Schreiben von 188 Byte großen Blöcken auf die Festplatten unnö-
52
6 Umsetzung des Konzepts
tige Geschwindigkeitseinbußen hervorrufen würde, muss eine geeignete Blockgröße gewählt werden.
Damit die Transportstrom-Pakete an den Übergängen der einzelnen Dateien im Ringpuffer nicht in der Mitte geteilt werden, bietet sich die Wahl eines Vielfachen von 188 an.
Hier wurde eine Blockgröße von 1880000 ≈ 1,8MB gewählt.
Abbildung 19: Klassendiagramm TS-Recorder
53
6.3 CTSPacket
6.3
CTSPacket
Die Klasse CTSPacket ist eine
Datenstruktur, welche ein Paket des
DVB-Transportstroms repräsentiert.
Solche Pakete sind stets 188 Bytes
lang
und
besitzen
bestimmte
Elemente, auf die durch diese Klasse
komfortabel
zugegriffen
werden
kann. Unter anderem lässt sich durch
die
Funktion
GetPayloadUnitStartIndicat
or() erkennen, ob eine SI-/PSI-
Table in diesem Paket beginnt oder
Abbildung 20: Klassendiagramm TS-Packet
nicht. Da die Performance wie bereits bemerkt, bei Datenmengen im Giga- und TeraByte Bereich sehr wichtig ist, werden unnötige Kopiervorgänge im Speicher vermieden.
Deshalb existiert beispielsweise eine Funktion SetDataCpy() und SetDataPtr().
Diese Methoden weisen beide dem Objekt den Bitstrom eines Transportstrom-Paketes
zu. Die eine Methode kopiert die übergebenen Daten zuerst im Speicher wobei die
andere lediglich einen Pointer37 anlegt. Die Methode, die die Daten zuerst kopiert und
dann im Objekt speichert ist für einen Programmierer sicherer. In diesem Fall kümmert
sich dann nämlich die Klasse selbst darum, nicht mehr benötigten Speicher freizugeben.
Die Methode, die einen Pointer als Argument annimmt, verlangt eine größere Sorgfalt
des Programmierers. Dabei ist er zum Einen selbst für das Freigeben von Speicher
verantwortlich, zum Anderen darf der Speicher noch nicht freigegeben werden, solange
das entsprechende Objekt von CTSPacket noch existiert und arbeitet. Es ist dem
Programmierer bzw. dessen Sorgfalt und dem Anwendungsfall überlassen, welche dieser
beiden Methoden benutzt werden soll.
6.4
TSFilterBank
Die Klasse TSFilterBank und deren zugehörigen Klassen sind für die Weiterverarbeitung der DVB-Daten ein zentrales Element.
37
Pointer – Programmiertechnik: Ein Zeiger ist eine Variable, in der sich die Adresse eines Datenobjekts
bzw. einer Funktion befindet. [LOUIS]
54
6 Umsetzung des Konzepts
Sie dienen dazu, Elemente aus dem Datenstrom herauszulösen.
Abbildung 21: Klassendiagramm TS-Filter
Der Filtermechanismus ist aufgeteilt in die FilterBank-Klasse CTSFilterBank und die
Filter-Klassen.
6.4 TSFilterBank
55
CTSFilterBank dient als Zentrale, über die sämtliche Funktionen gesteuert und an die
Filter weitergegeben werden.
Die Filter-Klassen sind als ein Designpattern des Typs „Chain of Responsibility“ organisiert. Ein Designpattern (deutsch „Entwurfsmuster“) beschreibt eine generische Lösung
für ein in der Praxis immer wieder auftretendes Problem. Somit ist ein Design-Pattern
eine Vorlage zur Lösung bestimmter Probleme. Unterschieden wird zwischen drei Anwendungsgebieten:
-
Creational Patterns (Erzeugungsmuster)
-
Structural Patterns (Strukturmuster)
-
Behavioural Patterns (Verhaltensmuster)
Das hier zum Einsatz kommende Muster „Chain of Responsibility“ gehört zur Gruppe
der Behavioural Patterns. Eine Chain of Responsibility vermeidet die Kopplung zwischen
Sender und Empfänger bzw. dem Bearbeiter. Diese Empfänger bilden eine Kette, in der
eine Anfrage so lange an den jeweiligen Nachfolger durchgereicht wird, bis eines der
Kettenobjekte die Anfrage bearbeiten kann oder die Kette zu Ende ist. [GAMMA]
Eine Besonderheit ist hier die Klasse CTSSectionFilter, die eine zusätzliche abstrakte Klasse in der Vererbungshierarchie darstellt. Sie wurde eingeführt, da das Extrahieren
von Sections direkt aus dem Transportstrom eine aufwändige Prozedur ist. Da dies jedoch eine ebenso häufige Aufgabe wie die Extrahierung von einzelnen PIDs darstellt,
wurde hierfür bereits eine Abstrakte Klasse gebildet, die für diese Aufgabe verwendet
werden kann.
Die Extraktion von Sections aus dem Transportstrom ist deshalb so aufwändig, weil innerhalb einer PID mehrere verschiedenartige Sections mit ihren unterschiedlichen
table_ids auftreten können.
Ein gutes Beispiel hierfür ist die SDT (Service Description Table) und BAT (Bouquet
Association Table). Sie werden beide in Transportstrompaketen mit der PID 0x11 transportiert, besitzen aber unterschiedliche table_ids (Siehe [ETSI 300468]). Der DVBStandard beschreibt auch das „Mapping“ von Sections in Transportstrompakete.
Interpretiert wird immer Paket für Paket. Ein Paket hat eine Länge von 188 Bytes, was es
nötig macht, Sections, die bis zu 4096 Bytes groß sein können, auf mehrere Transportstrompakete aufzuteilen. Da Sections bereits in binärer Form vorliegen, werden diese
direkt in die Transportstrom-Pakete „gemapped“. Das heißt sie werden vorher nicht, wie
bei A/V-Daten der Fall, in PES-Pakete aufgeteilt.
56
6 Umsetzung des Konzepts
Abbildung 22: Einbettung von Sections in TS-Pakete
Abbildung 22 veranschaulicht das Mapping von Section-Daten in Transportstrompakete.
Laut [ISO 13818-1] kann eine Section sowohl zu Anfang eines TS-Pakets beginnen als
auch irgendwo in der Mitte. Um diesen Beginn zu kennzeichnen, wird der pointer_fieldMechanismus verwendet. Um die Existenz eines Section Beginns innerhalb des TSPakets zu signalisieren, bekommt das Feld payload_unit_start_indicator des TS-PaketHeaders den Wert 1 zugewiesen. Wenn innerhalb eines Paketes kein Section-Beginn vorliegt, dann besitzt payload_unit_start_indicator den Wert 0.
Durch den Wert 1 wird signalisiert, dass die ersten 8 Bits des Payloads aus dem so genannten pointer_field bestehen. Dieses Feld gibt den Abstand zwischen sich selbst und
dem Beginn der ersten Section in diesem Paket an, weist also exakt auf die table_id. Ist der
Wert von pointer_field also 0, so beginnt die erste Section direkt im auf pointer_field folgenden Byte.
Darauf folgende Sections innerhalb desselben Transportstrom-Pakets beginnen exakt
hinter dem letzten Byte der vorhergehenden Section. Das Ende einer Vorhergehenden
Section wird durch den Wert section_length im Section-Header festgelegt.
Nachdem das pointer_field und damit der Beginn der ersten Section identifiziert ist, wird
die Länge der Section ausgelesen, welche in den bits 12 bis 24 nach dem Startpunkt der
Section gespeichert ist.
6.4 TSFilterBank
57
Abbildung 23: Aktivitätendiagramm Section-Filter
Nachdem das pointer_field identifiziert ist (1), wird die Länge der Section ausgelesen, welche in den Feldern 12-24 bit nach dem Start der Section steht. Da Sections aufgrund ihrer
Größe meistens auf mehrere Transportstrom-Pakete aufgeteilt werden, wird nun der
Payload jedes Transportstrom-Paketes angehängt, bis eine Länge von section_length erreicht ist (2).
Tritt dieser Fall ein, so ist die Section komplett ausgelesen und kann weiterverarbeitet
werden (3).
Verbleiben jetzt keine restlichen Bytes mehr im aktuellen Transportstrom-Paket, ist die
Aktion für dieses Paket somit beendet.
Sind allerdings doch noch Daten übrig (4), existieren zwei Möglichkeiten. Die erste Möglichkeit ist das Vorhandensein so genannter „Stuffing-Bytes“. Diese werden verwendet,
58
6 Umsetzung des Konzepts
um den Rest des Paketes mit Null-Daten38 aufzufüllen. Stuffing-Bytes werden identifiziert
durch den Wert 0xFF. Tritt also direkt nach dem Ende einer Section ein Wert von 0xFF
auf, so bestehen die restlichen Daten des Transportstrom-Pakets ebenso aus StuffingBytes, welche verworfen werden können.
Sind die verbleibenden Bytes keine Stuffing-Bytes (also ungleich 0xFF), so fängt hier
nahtlos die nächste Section mit ihrer table_id an. Hierfür wird erneut ein leerer Speicherbereich geöffnet und die Daten ab dieser Stelle wieder so lange gesammelt (2), bis die
Section ebenfalls komplett ist.
Wurde eine Section komplett eingelesen, wird die Methode OnSectionComplete()
der abgeleiteten Klasse aufgerufen, in der der Programmierer festlegen muss, wie mit den
Daten verfahren wird.
6.5
TS2PS-Worker
TS2PS-Worker dient der Extrahierung von anschaubarem A/V-Material aus dem Transportstrom. Da Sichergestellt
werden muss, dass nicht
mehrere solcher Extrahierungsvorgänge parallel ablaufen, musste hierfür ein
Warteschlangensystem entworfen werden. Dieses sieht
so aus, dass wenn ein Encode-Job vom Frontend aus Abbildung 24: TS2PS-Worker
abgesetzt wird, eine Job-Datei im XML-Format in einem festgelegten Verzeichnis abgelegt wird. TS2PS-Worker läuft ununterbrochen im Hintergrund. Dabei wird im Abstand
von 10 Sekunden kontinuierlich dieses Verzeichnis ausgelesen. Eine solche Job-Datei
wird erkannt anhand einer bestimmten Struktur des Dateinamens.
38
Null-Daten – Daten, welche keine Bedeutung besitzen und zur zum Füllen leerer Räume gedacht sind
6.5 TS2PS-Worker
59
Abbildung 25: TS2PS-Worker Jobfiles
Eine solche Job-Datei enthält wie in Abbildung 25 erkennbar unter anderem die Startund Endzeiten sowie die PIDs, welche es zu extrahieren gilt. Außerdem wird durch das
Jobfile die Email-Adresse des Auftraggebers gespeichert, um nach erfolgreicher Bearbeitung des Auftrags eine automatisierte Email zu versenden, welche einen Link zum extrahierten Videomaterial enthält.
Das Tag <format> gibt das Ausgabeformat an. Dieses muss sowohl auf Senderseite
(Web-Frontend) des Auftrags als auch auf Empfängerseite (TS2PS-Worker) bekannt sein.
Da die Abwicklung verschiedener Methoden bzw. die Ansteuerung unterschiedlicher
Encoder stark voneinander abweichen kann, wurde von der Möglichkeit, dynamisch verschiedene Ausgabeformate zu definieren (z.B. durch eine Konfigurationsdatei) abgesehen. Zum jetzigen Stand der Software muss – sollte ein neues Format benötigt werden –
die Ansteuerung des Encoders im Programmcode hinzuprogrammiert werden.
Grundsätzlich muss bei der Extrahierung zwischen zwei Möglichkeiten unterschieden
werden. Dem Re-Multiplexing und dem Transcoding. Zur reinen Sendekontrolle ist das
Re-Multiplexing essentiell wichtig, da die AV-Signale unverändert zur Übertragung wiedergegeben werden können. Bei diesem Vorgang entstehen enorm große Dateien. Für die
reine Video-Extraktion ohne Kontrolle des Materials bietet sich diese Möglichkeit also
nicht an.
Für diese Aufgabe existiert die Möglichkeit des Transcodings. Transcoding bedeutet,
Quell-Material durch eine festzulegende Encoder-Software erneut zu komprimieren und
somit z. B. in das speichersparende MPEG-4 Format zu überführen
60
6 Umsetzung des Konzepts
6.5.1 Re-Multiplexing
Durch Re-Multiplexing wird sichergestellt, dass Video-Ströme unverändert zum OriginalMaterial extrahiert werden.
Dies ist wichtig, um z.B. bei Verwendung variabler Bitrate (VBR39) Bitratenschwankungen etc. analysieren zu können. Bei diesem Vorgang werden die nötigen Transportstrompakete (Audio und Video) (vgl. Unterkapitel 3.2) aus dem Transportstrom gelöst und
danach zu einem MPEG-2 Program Stream zusammengesetzt. Da an den Nutzdaten
selbst keine Veränderung vorgenommen wird, resultiert hieraus auch keine Veränderung
zum Originalmaterial.
Für die softwaretechnische Realisierung werden hierfür die zuvor erläuterten SoftwareElemente TS-Buffer und TS-FilterBank verwendet.
Um durch die Hinzunahme des Standards für MPEG-2 Video den Rahmen dieser Diplomarbeit nicht zu sprengen, wurde zusätzlich eine eigenständige Freeware-Software
Namens PVAStrumento40, verwendet, um MPEG-2 konforme Audio-/Videoströme zu
remultiplexen. PVAStrumento wird weiter unten in diesem Abschnitt erläutert.
Im Folgenden ein exemplarischer Auszug aus dem Quellcode zu TS2PS-Worker zur Verdeutlichung der Verwendung der Module TS-Buffer und TSFilterbank:
//Instantiieren der TS-Buffer Verwaltung
CTSBuffer ts_buffer;
ts_buffer.Init(s);
ts_buffer.IndexBufferDirectory(); //Puffer-Verzeichnis einmal in das
Objekt einlesen
ts_buffer.InitInputStream()); //Inputstream des Buffers initialisieren
//Zur Start-Zeit der Extrahierung spulen
ts_buffer.IFGotoTime(&ltime_CutStart);
//Outputstream initialisieren
std::ofstream out;
out.open(outputFile, ios_base::out | ios_base::trunc | ios_base::binary);
if (!out.is_open()) { //Fehlerbehandlung
//Fehler. Also beenden
39
40
VBR – Variable Bit Rate
PVAStrumento – http://www.offeryn.com/
6.5 TS2PS-Worker
61
}
//Filterbank instantiieren
CTSFilterBank TSfilterbank;
/* PacketBuffer: Kleine Klasse, die die 188-Byte-Pakete bis zu einer
festgelegten Größe speichert und dann erst in den Outputstream
schreibt, um Festplattenaktivität zu vermindern. */
CMyTSPacketBuffer write_buffer
write_buffer.SetOFStream(&out);
//Jetzt für jede PID einen Filter setzen
CMyTSPacketFilter *filters = new CMyTSPacketFilter[pids.size()];
for (unsigned int i=0; i<pids.size(); i++) {
filters[i].SetPID(pids[i]);
filters[i].SetPacketBuffer(&write_buffer);
//Filter in die Chain-of-Responsibility einfügen
TSfilterbank.AddFilter(&filters[i]);
}
size_t length = 188;
char *buf = new char[length];
unsigned __int64 geschrieben = 0;
unsigned __int64 gelesen = 0;
while (ts_buffer.readIs(buf)) {
//Daten in die Filter-Kette reichen
if (TSfilterbank.PushData((unsigned char*)buf)) {
geschrieben += length;
}
//Bei Bedarf am Ende schneiden
if (bCutEnd) {
if (ts_buffer.GetAktIFTime() >= ltime_CutEnd) {
//Wenn die End-Zeit erreicht ist, die Schleife verlassen,
um die Datei zu schließen
break;
}
}
}
//Den Schreib-Puffer flushen, um alles in die Datei zu schreiben
write_buffer.flush_buffer();
out.close(); //Erst jetzt den Output-Stream schließen
Durch diesen Programmcode werden alle im Transportstrom vorkommenden Pakete,
welche die relevanten PIDs besitzen, aus dem Strom gelöst und in einer temporären Datei aneinandergefügt. Die resultierende Datei besteht nun nur noch aus Transportstrompaketen mit zwei unterschiedlichen PIDs, nämlich Paketen mit der PID des gewählten
Video-Stromes und der PID des gewählten Audio-Stromes. Die Daten, die nun vorliegen, folgen in dieser Form keinem gängigen Standard, da hier lediglich Transportstrom-
62
6 Umsetzung des Konzepts
pakete aneinandergereiht wurden, ohne entsprechende PMT oder PAT-Tables mit in den
Strom zu integrieren. Für normale Decoder beziehungsweise Player-Software wären diese
Daten nicht zu lesen.
Nun werden diese Daten der Software PVAStrumento übergeben.
PVAStrumento wurde ursprünglich
entwickelt, um von einer DVB-Karte
im
PVA-Format41
Videoprogramme
aufgenommene
in
von
einem
MPEG-2 Player lesbare MPEG-2
Program
Streams
umzuwandeln. Abbildung 26: PVAStrumento
Hierfür besitzt PVAStrumento zusätzlich einige Funktionalitäten, um Fehler im Strom zu
korrigieren und kümmert sich außerdem gleichzeitig darum, Audio und Video lippensynchron zu multiplexen.
Nach der Ausführung von PVAStrumento wird die entstandene Datei in einem Auslieferungsverzeichnis abgelegt, wo sie dann weiterverarbeitet bzw. per Netzwerkfreigabe oder
Webserver abgeholt werden kann.
Leider konnte keine Software gefunden werden, welche die beiden zuvor beschriebenen
Arbeitsschritte (1. PIDs extrahieren,
2. PVAStrumento) zuverlässig in
einem Schritt erledigt. Es existiert
zwar eine Software Namens ProjectX, welche ebenfalls unter Open
Source Lizenz vertrieben wird. Diese
wird normalerweise für solche Aufgaben verwendet, sie scheint jedoch
mit den geteilten TransportstromdaAbbildung 27: Project-X
teien aus dem Ringpuffer nicht zu-
recht zu kommen. In Versuchen mit Project-X waren die Audio- und Videospur stets
unsynchron42.
PVA – Packet Video Audio – Proprietär entwickeltes Format von Technotrend, optimiert für die Aufnahme von AV-Material über DVB-Empfänger
42 Synchron – Abgespielter Ton passt zeitlich genau zum gezeigten Video
41
6.5 TS2PS-Worker
63
6.5.2 Transcoding (Frameserver)
Transcoding ist die Methode der Wahl zur Extraktion von Video-Programmen, welche
nicht auf Sendefehler analysiert werden sollen, sondern nur des Videos wegen extrahiert
werden. Beim Transcoding werden die Pakete nicht wie beim Re-Multiplexing entsprechend neu angeordnet, sondern es findet ein komplett neuer Komprimierungsprozess
statt. Dadurch können die von TS-Recorder aufgenommenen Inhalte in praktisch jedes
beliebige Video-Format konvertiert werden. Dazu gehören unter anderem die aktuell
populären MPEG-4 Codecs43 wie DivX oder XVid, oder auch Formate für das InternetStreaming wie Windows Media (WMV).
Da keine der bekannten Encoder-Software die Möglichkeit besitzt, einen Transportstrom
als Quelle anzugeben und nur die Ströme mit den gewünschten PID zu encoden, muss
hier eine Brücke geschaffen werden. Theoretisch wäre es natürlich möglich, zuerst die
gewünschten PIDs wie in Abschnitt 6.5.1 erläutert zu demultiplexen und danach die dadurch entstandenen Ströme durch eine Encoder-Software zu transcodieren. Da diese
Daten allerdings auf die Festplatten zwischengespeichert werden müssten, würde dies
wiederum zu einem Zeitverlust führen.
Zur Zeitsparenden Realisierung dieser Brücke kommen deshalb so genannte Frameserver
zum Einsatz. Ein Frameserver ist eine Software, die Videodaten in Echtzeit aus einer
Quelle auslesen, bei Bedarf bearbeiten und direkt an ein empfangendes Programm weiterleiten kann. Dadurch entsteht kein Overhead44 durch das Zwischenspeichern von Daten.
Codec – Akronym: Coder Decoder – Verfahren / Programm zur Codierung und Decodierung von
Daten oder Signalen
44 Overhead – Zusätzliche, nicht zu verarbeitende Daten, welche nur zur Verwaltung benötigt werden
43
64
6 Umsetzung des Konzepts
Abbildung 28: Funktionsweise eines Frameservers
Die Software des Frameservers verhält sich dabei transparent45 und arbeitet im Hintergrund. Grundlage hierfür ist die Frameserverdatei, welche Anweisungen zum Importieren
von Quell-Material und dessen Bearbeitung enthält (Siehe Abbildung 28).
Wird diese Datei von einem Programm geöffnet, welches Videodaten erwartet, verhält sie
sich für das öffnende Programm wie eine unkomprimierte AVI Videodatei. Dieses Format ist für alle bekannten Video-Programme lesbar.
Beim Öffnen der Frameserverdatei beginnt im Hintergrund die Software zu arbeiten, lädt
die benötigten Daten aus der Quelldatei bzw. den Quelldateien, bearbeitet diese entsprechend den Anweisungen aus der Frameserverdatei und gibt die resultierenden Videodaten dann direkt an das öffnende Programm weiter.
Ein sehr populärer und mächtiger Frameserver ist AVISynth46. Diese Software besitzt
zahlreiche Funktionen, mit denen ein non-lineares Schneiden von Videomaterial kom-
Transparente Software – Software, deren Existenz für den Benutzer weder direkt erkennbar noch relevant ist
46 AVISynth – http://www.avisynth.org/
45
65
6.5 TS2PS-Worker
plett ohne grafische Oberfläche, sondern durch reine Script-Programmierung ermöglicht
wird.
AVISynth ist vollständig in Open-Source veröffentlicht, was es ermöglicht, eigene Plugins zu entwickeln, wenn diese benötigt werden.
Leider existiert derzeit kein Plugin, welches Transportströme direkt öffnen kann, um die
Video-/Audiospuren mit bestimmten PIDs als Video- bzw. Audioquelle zu verwenden.
Um, wie bereits in Abschnitt 6.5.1 bemerkt, den Rahmen der Diplomarbeit nicht zu
sprengen, wird hierfür eine zweite Frameserver-Software hinzugezogen.
Diese Software nennt sich DGIndex47 und ist ebenfalls als Open-Source erhältlich. Ihre
Hauptaufgabe besitzt sie im Demultiplexen
von
MPEG-
Strömen. Leider ist es unumgänglich, dass DGIndex den
Audio-Strom extrahieren und auf
Platte schreibt, bevor die Daten
weiterverarbeitet werden können.
Lediglich den Videostrom kann
Abbildung 29: DGIndex
sie in Form eines Frameservers
bereitstellen. Da das Speichern eines Audiostroms allerdings dennoch weniger Zeit benötigt als das komplette Remultiplexen des Datenstromes, wird diese Lösung vorerst so
angewandt.
Für den späteren Produktionsbetrieb ist deshalb die Entwicklung eines entsprechenden
Plugins für die AVISynth Software zu empfehlen, womit der Schritt über DGIndex
komplett entfällt.
Abbildung 30 veranschaulicht noch einmal die Zusammenarbeit von DGIndex und AVISynth.
47
DGIndex – http://neuron2.net/dgmpgdec/dgmpgdec.html
66
6 Umsetzung des Konzepts
Abbildung 30: Logische Struktur beim "Frameserving"
6.6
Tables-Socket-Service
Tables-Socket-Service ist das zentrale Element zur Transportstromanalyse. Da die Bedienung der Software durch eine Client-Applikation erfolgen muss, ist es notwendig, ein
Softwaremodul zu entwickeln, welches den Transportstrom lokal auf dem Server analysiert und die Ergebnisse an den Client weitergibt.
6.6 Tables-Socket-Service
67
Aufgrund der Datenmengen des Transportstroms wäre eine Analyse am Client, das heißt
mit vorheriger Übertragung bzw. IP-Streaming48 eines Teils der gespeicherten Transportstromdaten, nicht empfehlenswert. Bei einer Datenrate von 38 Mbit pro Sekunde besitzt
eine Minute Transportstrommaterial bereits 285 MB an Daten. Bei einem heutigen
Netzwerk, welches rechnerisch 100 Mbit pro Sekunde übertragen kann, würde die Übertragung von nur einer Minute Transportstromdaten im Idealfall ca. 23 Sekunden dauern.
In der Praxis hat sich gezeigt, dass ein solches 100 Mbit Netzwerk einen durchschnittlichen Datendurchsatz von ca. 7-10 MB pro Sekunde erreicht, was einer tatsächlichen Datenrate von 56-80 Mbit pro Sekunde entspricht. Rechnet man diese Datenrate wiederum
mit den 285 MB für eine Minute Transportstromdaten zusammen, erhält man für die
reine Datenübertragung eine Dauer von ca. 29 bis 41 Sekunden.
Abgesehen von den Zeiten für die Datenübertragung existiert natürlich parallel dazu auch
anderer Netzwerkverkehr, der nicht zu dieser Software gehört und dessen Aktivitäten die
Übertragung nochmals ausbremsen würden. Gleichzeitig würde die Übertragung solcher
Datenmengen eine sehr hohe Belastung für das gesamte Netzwerk darstellen, da diese
Daten – je nach Position des Clients – unter Umständen durch das komplette Netzwerk
des ZDF-Komplexes geroutet49 werden müsste.
Aus diesem Grund wird festgelegt, die Analyse des Transportstroms auf dem Server stattfinden zu lassen, da dieser sowohl über die nötige Prozessorleistung als auch über ein
schnelles Festplattensystem durch RAID verfügt.
Um diese Funktionalität zur Verfügung zu stellen, wurde eine Serversoftware entwickelt,
welche mit dem Interpretations-Client per Socket50 kommuniziert.
Hierfür wurde ein Protokoll51 auf XML Basis entwickelt, welches die Datenübertragung
zum und vom Server ermöglicht. Ein Beispiel für eine Anfrage des Clients an den SocketServer findet sich in Abbildung 31.
Nachdem eine solche Anfrage durch das XML Protokoll empfangen wurde, beginnt die
Software, die gewünschten Informationen aus dem Transportstrom auszulesen.
Streaming – Technik zur Datenübertragung, bei der empfangene Daten direkt weiterverarbeitet werden
können
49 Routing – Durch-/Weiterleiten von Datenpaketen über eine geeignete Leitung
50 Socket – Bidirektionale Software-Schnittstelle zur Inter-Process- / Netzwerk-Kommunikation
51 Protokoll – Vereinbarung einer Datenstruktur, woran sich Sender und Empfänger halten, um eine gemeinsame „Sprache“ zu unterstützen
48
68
6 Umsetzung des Konzepts
Um ein wahrheitsgetreues Bild des Transportstroms zu einem bestimmten Zeitpunkt zu
erhalten, ist es notwendig, die Transportstrom-Analyse Non-Linear zu gestalten. NonLinear bedeutet in diesem Zusammenhang, dass der Benutzer beliebig im Datenstrom
navigieren kann und somit jeden beliebigen Zeitpunkt erreichen kann.
Da DVB-Sections zyklisch ausgespielt werden, ist hierfür ein geeigneter Mechanismus
nötig, um den Zustand zu einem bestimmten Zeitpunkt abzubilden.
Dies wird erreicht durch die Speicherung der Section seit ihrem letzten Auftreten. Der
maximale Abstand zwischen der Ausstrahlung von Sections ist laut Standard 30000ms (=
30 Sekunden). Deshalb wird auf Anfrage für eine Bestimmte Uhrzeit im TransportstromPuffer zu einer Position, die 30 Sekunden vor dem gewünschten Zeitpunkt liegt, navigiert. Daraufhin wird der Datenstrom mit Hilfe der zuvor besprochenen Softwaremodule
TS-Buffer und TSFilterBank ausgelesen und jeweils die neuste Version der gewünschten
Section(s) zwischengespeichert.
Am Ende der 30 Sekunden angekommen, befindet sich der Zeiger exakt am gewünschten
Zeitpunkt und besitzt die Daten, die zu diesem Zeitpunkt aktuell waren (Siehe Abbildung
31).
6.6 Tables-Socket-Service
69
Abbildung 31: Non-lineare Transportstromanalyse
Die jeweils letzte im Stapelspeicher befindliche Section ist die aktuelle. Nachdem der
Endzeit-Punkt erreicht worden ist, beginnt die Rückgabe der Daten über dasselbe Socket,
worüber die Anfrage empfangen worden ist.
Hierfür werden die binären Daten, aus der die Section besteht, wiederum in lesbaren
XML Code überführt. Dieser XML Code entspricht einer DTD, die es der empfangenden Software ermöglicht, die Daten zu interpretieren und daraufhin anzuzeigen.
70
Abbildung 32: Beispiel XML-Antwort TS-Interpretation
6 Umsetzung des Konzepts
6.7 TS-Analyzer-Applet
71
Im Antwort XML existiert für jedes <get>-Element aus der Anfrage (siehe Abbildung
31) je ein korrespondierendes <response>-Element. Über das Attribut id bekommen die
beiden Tags ihren Zusammenhang.
Innerhalb der Antwort ist das Tag <rows> von großer Bedeutung. Dieses beschreibt die
Inhalte einer Section. Zusätzlich existieren Tags mit dem Namen <descriptor>, welche
eine textuelle Beschreibung der in der Section vorhandenen Descriptoren enthalten.
Loops werden durch ein gleichnamiges Tag <loop> repräsentiert, worin wiederum
<rows> und <descriptor> enthalten sein können.
Eine DTD52 für diese XML Nachrichten befindet sich im Anhang zu dieser Arbeit.
6.7
TS-Analyzer-Applet
Das TS-Analyzer-Applet stellt die Benutzeroberfläche bzw. die Client-Applikation zu
Tables-Socket-Service dar.
Um die Analyse des Transportstroms einigermaßen komfortabel gestalten zu können, ist
es nötig, eine flexible Oberfläche zu generieren. Da die Möglichkeiten bei der für Webseiten verwendeten Auszeichnungssprache HTML53 sehr begrenzt sind, musste eine geeignete andere Lösung gefunden werden.
Hierfür standen zwei Möglichkeiten zur Auswahl. Die erste Möglichkeit war, eine FlashAnwendung zu entwerfen und die zweite Möglichkeit bestand in der Entwicklung eines
Java-Applets54.
Grundsätzlich wäre Flash angenehm gewesen, da in Flash erstellte Dateien im swfFormat im Gegensatz zu Java-Applets um einiges schlanker sind. Über programmiertechnische Möglichkeiten würde Flash ebenfalls verfügen dank der mittlerweile sehr
mächtigen Script-Sprache Actionscript, welche in Flash integriert ist. Leider fehlen Flash
entsprechende GUI55-Elemente, welche für eine Anwendung wie diese benötigt werden.
Zwar stellt Flash von Haus aus einige wenige GUI-Elemente zur Verfügung, die allerdings weniger für die Programmierung von Grafischen Oberflächen vorgesehen sind,
sondern mehr für die Ersetzung der Formular-Elemente von HTML. So sind lediglich
DTD – Document Type Definition – Inhaltsmodell für ein XML-Dokument. Definiert die erlaubten
und nicht erlaubten Elemente u. Attribute für ein Dokument / eine Klasse von Dokumenten bzw. deren
Reihenfolge [VONHOEGEN]
53 HTML – Hypertext Markup Language
54 Applet – Java-Applikation, welche im Kontext eines Internetbrowsers ausgeführt wird
55 GUI – Graphical User Interface
52
72
6 Umsetzung des Konzepts
Buttons, Checkboxen, Textfelder etc. bereits in Flash vorimplementiert. Sämtliche anderen benötigten Elemente müssten selbst entwickelt werden.
Ein Applet ist eine Java-Anwendung, welche im Kontext eines Webbrowsers ausgeführt
wird. Hierzu wird vom Webbrowser eine entsprechende Laufzeitumgebung – die JVM
(Java Virtual Machine) – für Applets gestartet und das Applet innerhalb dieser Laufzeitumgebung ausgeführt. Dank dieser Laufzeitumgebung bestehen einige Sicherheitsrichtlinien für Applets, welche die Verwendung von Applets im Internet sicher machen und
beispielsweise Verhindern, dass ein vertrauensunwürdiger Betreiber einer Webseite
Zugriff auf lokale Dateien des Rechners eines Internetsurfers bekommt.
Die Programmierung eines Applets unterscheidet sich von einer normalen JavaAnwendung – abgesehen von den verschiedenen Restriktionen, welche durch die JVM
vorgegeben werden – lediglich im Startverhalten. Normale Java-Anwendungen besitzen
eine Methode mit der Signatur public static void main(String[] args).
Ein Applet besitzt eine solche Methode nicht, vielmehr werden hier verschiedene Methoden bereitgestellt, welche den Zustand des Applets kontrollieren. Diese Methoden
sind init(), start(), stop() und destroy(). Sie werden beim Eintritt in
den jeweiligen Zustand automatisch von der JVM aufgerufen. Aus diesen Methoden heraus werden sämtliche Vorgänge in einem Applet begonnen.
Um überhaupt in der JVM des Browsers gestartet werden zu können muss die Hauptklasse eines Applets zusätzlich von der Klasse java.Applet
vax.swing.JApplet abgeleitet sein.
oder ja-
73
6.7 TS-Analyzer-Applet
Abbildung 33: TS-Analyzer-Applet
Im Gegensatz zu anderen auf dem Markt erhältlichen Softwareprodukten zur Transportstromanalyse, welche es nicht erlauben, innerhalb von gespeicherten Transportstromdaten zu navigieren, soll wie in Kapitel 6.6 bereits beschrieben bei diesem Ansatz das NonLineare Analysieren ermöglicht werden.
Abbildung 33 zeigt die Analyse-Oberfläche. Sie
besteht aus drei Bereichen. Im linken Teil stehen
die unterstützten Tabellen zur Auswahl, wo der
Benutzer die Möglichkeit bekommt, die für ihn
relevanten Tabellen zur Analyse auszuwählen. Im
Hauptteil rechts werden die ausgewählten Tabellen dann in einer Schnellübersicht, das heißt ohne
Loops und ohne Descriptoren angezeigt. Im unteren Teil der Oberfläche hat der Benutzer die Möglichkeit, anhand des Zeitschiebers jede Position
Abbildung 34: TS-Analyzer Detailansicht
innerhalb des Stroms zu erreichen.
Ist die gewünschte Stelle im Strom gefunden, lässt sich im Hauptteil der Oberfläche
durch einen Klick auf die Gewünschte Tabelle die Detailansicht, wie in Abbildung 34
dargestellt, öffnen.
Hierfür wird ein zusätzliches Fenster geöffnet, in dem nur diese Tabelle alleine und komplett mit allen Loops und Descriptoren abgebildet ist.
74
6 Umsetzung des Konzepts
6.8
Webfrontend
Das Webfrontend bildet die Bedienoberfläche für den Anwender. Als Grundlage einer
jeden HTML-Seite dient immer ein so genannter „Web-Server“, welcher Anfragen eines
Web-Browsers56 entgegennimmt und die gewünschten Webseiten ausliefert. Für die
Funktionalität, das heißt für nicht-statische Abläufe wird zusätzlich eine entsprechende
Programmiersprache benötigt, welche dynamische Abläufe in dieser Webseite realisiert.
Zusätzlich wird, um Daten zu speichern optimaler Weise eine Datenbank verwendet,
welche Datenzugriffe kapselt und eine einheitliche Schnittstelle für die Speicherung und
den Abruf von Daten bereitstellt.
Für diese Arbeit wird die zu diesem Zeitpunkt aktuelle und bewährte Kombination aus
der Webserversoftware „Apache“, dem Scriptinterpreter „PHP“ und der Datenbank
„MySql“ für diese Aufgabe verwendet. Aus dieser Kombination ergeben sich die weitläufigen Abkürzungen WAMP (Windows – Apache – MySql – PHP) bzw. LAMP (Linux –
Apache – Mysql – PHP). Diese Softwarekomponenten entwickeln sich enorm rasant,
weshalb regelmäßig und in sehr kurzen Abständen neue Versionen der herausgegeben
werden. Grundsätzlich sollten diese neueren Versionen abwärtskompatibel sein, im Zweifel sollten jedoch die hier beschriebenen Versionen für das System benutzt werden:
-
Apache 2.0.55
-
PHP 5.0.5
-
MySql 5.0.15
Da die Installation dieser Programme und die Herstellung einer Verbindung untereinander relativ aufwändig ist und auch für den Profi einen nicht unerheblichen Zeitaufwand
darstellt, existieren im Internet bereits vorkonfigurierte Fertigpakete, welche alle dieser
Komponenten (und mehr) bereits in fertig eingerichtetem Zustand enthalten und sich
automatisch auf einem Rechner installieren. Ein solches WAMP Paket wurde auch bei
der Entwicklung dieses Systems verwendet. Dieses Paket trägt den Namen XAMPP57 und
enthält neben den erwähnten Versionen von Apache, PHP und MySql mehrere zusätzliche Programme und Erweiterungen, welche für diese Arbeit allerdings uninteressant sind
und außer Acht gelassen werden können. Um XAMPP Distributionen eindeutig zu unterscheiden, besitzt das XAMPP Projekt eine eigene Versionierung. In dieser Arbeit
kommt die Version 1.4.17 zum Einsatz.
56
57
Web-Browser – Programm zum Betrachten von Webseiten im Internet
XAMPP – http://www.apachefriends.org/de/xampp.html
6.8 Webfrontend
75
Als Softwareplattform kommt ein bereits früher entwickeltes Web-Content-ManagementSystem (CMS) zum Einsatz. Dieses bringt bereits wichtige Funktionen wie Benutzerverwaltung und Navigationsverwaltung mit, wodurch die aufwändige Entwicklung solcher
nicht trivialen und nicht zum Thema gehörenden Dinge unnötig werden.
Ein Content-Management-System dient der Trennung von Programmierung, Administration und Redaktion. Bei der klassischen Erstellung von Webseiten muss sich der Entwickler gleichzeitig mit der Gestaltung, der logischen Programmierung sowie mit der
Verwaltung (wie Navigationsstruktur oder Zugriffskontrolle) auseinandersetzen. Ein
Content-Management-System trennt diese Bereiche, indem es separate Eingabemöglichkeiten hierfür bietet. Die Navigationsstruktur beispielsweise wird an einer komplett anderen Stelle festgelegt, als die Inhalte der Webseiten dieser Navigationsstruktur. [DASAT]
Hier wurde das eingesetzte CMS weniger als Redaktionssystem für Inhalte verwendet,
sondern mehr als Rahmen für die eigentliche Anwendung, welcher im Grunde lediglich
die Verwaltung der Navigationsstruktur und die Benutzerverwaltung übernimmt.
Innerhalb des Web-Frontends hat der Benutzer die Möglichkeit, verschiedene Aktionen
durchzuführen. Diese sind:
-
Extraktion von Video-Material
-
Analyse von SI-Daten
-
Extrahierung von Fragmenten des Transportstroms
-
Automatische DVD Generierung (z.B. für Beweissicherung)
-
Anpassung des „Benutzerprofils“
76
6 Umsetzung des Konzepts
6.8.1 Extraktion von Video-Material
Abbildung 35: Webfrontend - Video Extrahierung 1
Zur Extrahierung von Video-Material bekommt der Benutzer eine Art „Fernsehzeitschrift“ (EPG) angeboten. Zu Anfang wird ein Kalender sowie die Programmauswahl
präsentiert. Wählt der Benutzer nun einen Tag aus, werden alle Sendungen dieses Tages
in der Spalte neben dem Kalender angezeigt.
Um direkt zu erkennen, ob die jeweilige Sendung im Ringpuffer vorhanden ist, werden
vorhandene Sendungen weiß angezeigt, während nicht im Ringpuffer befindliche Sendungen in schwarzer Farbe gehalten werden. Um die Suche zu verfeinern hat der Benutzer außerdem die Möglichkeit, seine Auswahl auf einzelne Sender einzuschränken.
Die Daten dieses EPGs werden ausgelesen aus den XML Dateien, welche während der
Aufnahme des Transportstroms von TS-Recorder geschrieben werden (vergleiche Unterkapitel 6.2). Aus diesen Daten werden sämtliche Informationen für den EPG gewonnen.
Das heißt sowohl die Sendungen selbst als auch die verfügbaren Programme / Sender
werden automatisch ausgelesen, wodurch sich das Programm im Falle einer Änderung
des Bouquets selbstständig daran anpasst, ohne speziell konfiguriert werden zu müssen.
Außerdem ermöglicht dies eine direkte Umschaltung auf andere Transponder.
6.8 Webfrontend
77
Abbildung 36: Webfrontend - Video Extrahierung 2
Nach der Auswahl der gewünschten Sendung erscheint eine weitere Maske.
Da die Möglichkeit besteht, dass für ein Programm mehrere Audio-Ströme vorhanden
sind, bekommt der Benutzer die Möglichkeit, die PID eines der zum gewählten Programm gehörenden Audio-Ströme auszuwählen. Um Sendefehler während dem Übergang verschiedener Sendungen erkennen zu können, existiert außerdem die Möglichkeit,
die Zeitspanne zur Extraktion nach vorne bzw. nach hinten auszudehnen.
Zuletzt gibt es in dieser Ebene die Möglichkeit, das Format des extrahierten Videomaterials auszuwählen und so den persönlichen Wünschen zu entsprechen.
Durch Klick auf den Button „Job erstellen“ wird eine Job-Datei für TS2PS-Worker (siehe Unterkapitel 6.5) erstellt und in einem hierfür vorgesehenen Verzeichnis abgelegt.
Beim nächsten Durchlauf von TS2PS-Worker wird diese Job-Datei interpretiert und entsprechend abgearbeitet.
78
6 Umsetzung des Konzepts
6.8.2 Analyse der SI-/PSI-Daten
Abbildung 37: Webfrontend – Transportstromanalyse
Zur Analyse der SI-/PSI-Daten wird das in Unterkapitel 6.7 beschriebene Java-Applet in
das Webfrontend eingebettet. Da dieses bereits dort ausführlich beschrieben wurde, wird
hier nicht näher darauf eingegangen. In Abbildung 37 ist außerdem ein Detail-Fenster,
welches sich bei einem Klick auf eine der im Hauptfenster angezeigten Tabellen öffnet.
6.8 Webfrontend
79
6.8.3 Extrahierung von Transportstromfragmenten
Abbildung 38: Webfrontend - Transportstrom-Extrahierung
Hier kann der Benutzer unveränderte Teile des gesamten Transportstroms extrahieren.
Dies ist nötig, wenn Daten auf andere Art als die in diesem System angebotene analysiert
werden sollen, zum Beispiel durch externe Software.
Der Benutzer wählt den gewünschten Start- und Endzeitpunkt, aus denen der Transportstrom extrahiert werden soll.
Da die Extrahierung des rohen Transportstroms wenige Berechnungen benötigt, sondern
zum größten Teil aus dem Kopieren von Daten besteht, wird für diese Aufgabe kein
Programm im Hintergrund beauftragt. Die Daten werden auf Ebene des Web-Servers,
das heißt per PHP in einem Schritt aus dem Ringpuffer extrahiert und an den Benutzer
weitergegeben. Abgesehen von der Datenübertragung der unter Umständen sehr großen
Datenmenge entstehen so keine Wartezeiten für den Benutzer.
80
Abbildung 39: Code-Ausschnitt Transportstrom-Extrahierung
6 Umsetzung des Konzepts
6.8 Webfrontend
81
6.8.4 DVD-Generierung
Weiterhin existiert die Möglichkeit, bestimmte Zeitspannen oder ganze Tage auf externe
Datenträger wie z.B. DVD zu exportieren.
Zur Beweissicherung ist es nötig für längere Zeit ein Abbild von gesendeten Inhalten zu
besitzen. Hierfür gibt es die Funktion „DVD-Export“, welche es einem Benutzer ermöglicht, die Videodaten in sehr platzsparenden Komprimierungsweisen zu speichern. Bei
diesen Platzsparenden Methoden ist der Aspekt der Qualität egal. Wie in Abbildung 40
zu sehen, wird hier unter anderem das Format „MVCD“ angeboten, welches eine Auflösung von 352 auf 288 Pixeln besitzt.
Abbildung 40: Webfrontend - DVD-Export
Das Format „MVCD“ ist ein nicht standardkonformes MPEG-1 Format, welches bis zu
200 Minuten [MVCD] auf eine CD brennen kann. Bei Hochrechnung auf die Größe
einer DVD unter Verwendung von 4300MB sind das ca. 20 Stunden, welche auf eine
DVD geschrieben werden. In der Praxis allerdings weniger, weshalb bis zu 16h im
Webfrontend angegeben wird.
82
6 Umsetzung des Konzepts
Das markante am MVCD Format ist, dass im Gegensatz zu standardisiertem MPEG-1
mit variabler Bitrate (VBR58) gearbeitet wird. Außerdem wird die Bitrate des Tons von
standardisiert 224 kbit/s auf 128 bis 192 kbit/s gesenkt, sowie die Codierungstechnik
„Joint-Stereo59“ angewandt.
Der Vorgang der Extraktion erfolgt analog zum Verfahren der Transcodierung (vergleiche Abschnitt 6.5.2). Nach der Transcodierung wird je nach gewähltem Format ein entsprechendes Dateisystem generiert.
Damit die entstandenen Datenträger problemlos gebrannt werden können, wird ein so
genanntes Image60 erstellt. Dies wird durch die Software Magic Iso Maker61 realisiert.
Nach der Erstellung dieser Image-Datei wird dem Benutzer ebenfalls eine Email zugesandt mit einem Link zu den generierten Dateien.
Variable Bitrate – Hohe Bitrate für Szenen mit viel Inhalten (=schnelle Szenen), niedrige Bitrate für
Szenen mit wenig Inhalten (=ruhige Szenen)
59 Joint-Stereo – Ansatz: Speicherung nur eines Kanals + Unterschied zum zweiten Kanal
60 Image – Abbild eines Datenträgers verpackt in einer einzigen Datei
61 Magic Iso Maker - http://www.magiciso.com/
58
7 Installation, Konfiguration und Betrieb
7
83
Installation, Konfiguration und Betrieb
Um das Software-Paket auf einem Computer zu installieren und einzurichten sind verschiedene Arbeitsschritte nötig. Zum einen muss die benötigte Infrastruktur geschaffen
werden, welche es der Software und Hardware ermöglicht, ihren Dienst zu verrichten,
zum Anderen muss die Software entsprechend den aktuellen Gegebenheiten bzw. Erfordernissen angepasst werden. Dieser Abschnitt gibt einen kurzen Überblick über die nötigen Schritte.
Nötig ist ein aktuell ausgestatter Server-Computer mit einer Budget DVB-Karte der Firma Technotrend. Der Computer sollte über ausreichend Rechenleistung verfügen. Zum
Stabilen Betrieb ist mindestens ein Doppelprozessor-System mit mindestens 2,5 GHz
Taktfrequenz pro Prozessor nötig. Bei dieser Anwendung ist der Arbeitsspeicher nicht
entscheidend, um allerdings einen stabilen und unterbrechungsfreien Serverbetrieb sicherzustellen, sollte der Rechner über mindestens 1024 MB Arbeitsspeicher verfügen.
Zur Datenspeicherung muss ein RAID-System (siehe auch Absatz 5.2.6) zum Einsatz
kommen. Hierbei ist eine sinnvolle Verteilung zwischen Kapazität der einzelnen Festplatten und deren Anzahl wichtig. Für optimale Performance wird ein Verbund mit mindestens 5 Festplatten mit Umdrehungszahlen von 7200 Umdrehungen pro Minute empfohlen. Aufgrund der enormen Datenmengen wird diese Menge allerdings in der Praxis ohnehin überschritten, da die Maximalkapazität handelsüblicher SATA62-Festplatten momentan im besten Fall 500MB beträgt. Aufgrund der Leistung des relativ jungen SATA
(Serial ATA) Standards ist es nicht mehr nötig, Geld in ein teures SCSI-Raid-System zu
investieren.
Als Betriebssystem ist ein Windows XP kompatibles System zu wählen, also zum Beispiel
Microsoft Windows Server 2003.
Um die Software nun zu installieren müssen zuerst einige Vorarbeiten erledigt werden.
Hierzu gehört die Installation eines WAMP Servers (siehe Unterkapitel 6.8) sowie die
Vorbereitung mit der Installation der Treiber für die DVB-Karte. Der in Unterkapitel 6.8
besprochene WAMP Server XAMPP befindet sich als Installationspaket auf der im Anhang befindlichen CD. Die Konfiguration dieses Servers wird hauptsächlich innerhalb
der Dateien httpd.conf und php.ini vorgenommen, welche von der XAMPP Installationsroutine auf der Festplatte erstellt werden.
62
SATA – Serial ATA – Serielle Schnittstelle für Festplatten
84
7 Installation, Konfiguration und Betrieb
Neben dieser Software-Installation müssen einige Verzeichnisse erstellt werden. Diese
sind:
-
Verzeichnis für Job-Files von TS2PS-Worker (6.5)
-
Verzeichnis für extrahiertes Video-Material von TS2PS-Worker
-
Verzeichnis für EPG-Daten im XML-Format
-
Verzeichnis, in das die Dateien des Ringpuffers geschrieben werden (5.2.2)
Entsprechend diesen Verzeichnissen und den individuellen Anforderungen ist später die
Konfigurationsdatei TS_Recorder.ini anzupassen, welche sich im Rootverzeichnis des
Software-Pakets befindet.
Dafür wird das Verzeichnis „running_system“ von der im Anhang befindlichen CD in
ein beliebiges Verzeichnis auf der Festplatte kopiert. Die Verzeichnisstruktur muss eingehalten werden, damit die einzelnen Software-Module die Möglichkeit besitzen, sich
gegenseitig zu finden.
Damit das Web-Frontend funktioniert und erreichbar ist, muss zuerst die Struktur hierfür
anhand der beigefügten sql-Datei in die Datenbank importiert werden. Danach muss der
so genannte Web-Root63 in der Konfigurationsdatei httpd.conf des Apache Webservers
entsprechend gesetzt werden. Das entsprechende Verzeichnis befindet sich auf der Installations- CD im Verzeichnis „running_system\htdocs“.
Nachdem dies erledigt ist, müssen die Programme TS-Recorder, TS2PS-Worker und
Tables-Socket-Service beim Start des Rechners automatisch ausgeführt werden. Dies
kann zum Beispiel durch den in Windows integrierten Taskplaner geschehen. Damit die
Software startet, muss sich der Benutzer, nachdem der Server-Rechner hochgefahren ist,
ein Mal anmelden.
63
Webroot – Startverzeichnis eines Webservers
8 Zusammenfassung
8
85
Zusammenfassung
In dieser Diplomarbeit wurde ein System realisiert, welches grundsätzlich 24 Stunden am
Tag einen Transportstrom des DVB-Netzwerkes zur Weiterverarbeitung mitschneidet.
Die Struktur des Transportstroms wird automatisch interpretiert, sodass die Software
auch ohne weitere Anpassungen auf andere Transponder als den des ZDF eingestellt
werden kann.
Der mitgeschnittene Transportstrom kann dann auf verschiedene Weise weiterverarbeitet
werden. Es ist zum Beispiel möglich, die im Transportstrom enthaltenen DVB-SI und
DVB-PSI Informationen auszulesen und deren inhaltliche Struktur zu analysieren.
Weiterhin können aus den gespeicherten Daten beliebige Sendungen extrahiert werden.
Für die Extraktion existiert eine Formatauswahl, welche neben verschiedenen aktuellen
Codecs wie DivX oder XviD auch die Extraktion der Daten in ihrer originalen MPEG-2
Struktur anbietet und somit eine weitere Möglichkeit bietet, die Sendequalität zu beurteilen und zu analysieren.
Um beliebigen weiteren Analysemethoden nicht den Weg zu versperren, ist es ebenfalls
möglich, Teile des gespeicherten Transportstroms in roher Form zu extrahieren und diesen mit beliebigen externen Analysetools zu verarbeiten.
Die Bedienung dieser Funktionen wird durch eine Web-Oberfläche bewerkstelligt. Je
nach Bedarf und Netzwerk-Konfiguration wird es so ermöglicht, dieses System von jedem Rechner, der an das Internet (bzw. an das ZDF-Netzwerk) angeschlossen ist, zu
bedienen.
Weiterhin entstanden neben dem eigentlichen Produkt diverse Software-Elemente, welche einem Entwickler die Universelle Weiterverwendung zur Programmierung in diesem
Themenbereich möglich machen.
8.1
Kritische Würdigung
Im Zuge von ersten Tests, die nach der Fertigstellung eines jeden Moduls parallel zur
Weiterentwicklung durchgeführt wurden, wurde herausgestellt, dass das System funktioniert und die nötigen Funktionen bereitstellt. Sämtliche Funktionen arbeiten im Allgemeinen fehlerfrei, jedoch muss auf absolut korrekte Bedienung geachtet werden, da im
aktuellen prototypischen Zustand wenige Fehlerüberprüfungen vorgenommen werden.
Weiterhin ist für einen Regelbetrieb das komplette System in einer Serverumgebung zu
86
8 Zusammenfassung
testen, da während der Bearbeitung dieser Diplomarbeit alle Tests auf einem Entwicklungsrechner durchgeführt wurden.
In Gesprächen mit diversen Mitarbeitern des ZDF wurde klar, dass ein solches System
einen sehr guten Ansatz für den Einsatz in einer Sendeanstalt darstellt. Viele der Mitarbeiter, mit denen gesprochen wurde, hatten eigene Vorschläge, womit der Nutzen des
Systems abermals erhöht werden kann. Leider konnte aufgrund des begrenzten Zeitrahmens und Umfangs einer Diplomarbeit den meisten Wünschen nicht entsprochen werden. Deshalb wäre es wünschenswert, diesen Ansatz in der Zukunft aufzugreifen und
weiterzuentwickeln.
Im Laufe der Bearbeitung und der Tests hat sich die Wahl des Webfrontends für die
Bedienung durch den Benutzer als unfunktional herausgestellt, da einige Funktionen
mehr Elemente benötigen, als HTML zur Verfügung stellt. Auch die Überwachung des
Systemstatus und des Aufnahmestatus sollte über ein Frontend möglich sein, was in
HTML nur eingeschränkt möglich wäre. Eine eigenständige Applikation mit einer entsprechenden Netzwerkschnittstelle am Server ist hier wünschenswert. Um weiterhin die
örtliche Unabhängigkeit zu erhalten, ist der Einsatz von Techniken wie Java Web Start
denkbar.
Weiterhin ist unbedingt auf Performance zu achten. Die in Abschnitt 6.5.2 empfohlene
Entwicklung eines Plugins für den Frameserver AVISynth ist unbedingt nötig, da Tests
zeigten, dass DGIndex sehr Fehleranfällig ist. Einerseits werden bei Fehlern während der
Bearbeitung keinerlei Informationen über das Auftreten eines Fehlers zurückgegeben,
andererseits wird bei Fehlern im Strom teilweise unsynchrones Videomaterial produziert.
Ein weiteres noch nicht gelöstes Problem stellt die Extrahierung von TransportstromFragmenten durch das Webfrontend dar. Es scheint dem Apache Webserver nicht möglich, aneinanderhängende Daten mit mehr als 4 GB an einen Internetbrowser auszuliefern. Da Transportstromdaten relativ schnell größer als 4 GB werden können, stellt dies
ein Problem dar. In Tests mit IIS64 konnte derselbe Effekt festgestellt werden. Durch die
Einführung einer GUI-Applikation würde dieses Problem allerdings verschwinden.
64
IIS – Microsoft Internet Information Server
9 Fazit / Ausblick
9
87
Fazit / Ausblick
Die Speicherung des kompletten Fernsehprogramms ist eine sehr gute Grundlage für die
Weiterverarbeitung jeglicher Art. Die Weiterverarbeitungsmöglichkeiten, welche durch
diese Diplomarbeit beschrieben werden, sind nur ein kleiner Teil der denkbaren Anwendungsgebiete.
So wie es entwickelt wurde, soll das System in Zukunft beim ZDF eingesetzt werden. Ein
zukünftiger Einsatzbereich wird das Internet-Streaming sein. Das ZDF bietet momentan
ausgewählte Sendeinhalte innerhalb der „ZDF Mediathek“ über das Internet an. Aktuell
sind diese Inhalte sehr begrenzt, es ist aber geplant, das Angebot zu erweitern. Das größte Hindernis bei der Erweiterung dieses Angebots sind Lizenzrechtliche Fragen. Für
Sport-Veranstaltungen beispielsweise besitzt das ZDF keine Rechte, dieses Material über
das World Wide Web zu verbreiten oder es ist nicht genau geklärt, in wie weit das Material für das Internet verwendet werden darf. Wenn diese Fragen geklärt sind, plant das
ZDF, das Streaming Angebot zu erweitern und das Encoding System dafür an das in
dieser Diplomarbeit entstandene System anzukoppeln.
Weiterhin wird – auch auf Hinblick der aktuellen Olympia-Veranstaltung – der Wunsch
nach Beweissicherung innerhalb der Redaktionen laut. Beweissicherung bedeutet, alles
gesendete Material ohne Beachtung auf die Qualität zu sichern. Hierfür ist bereits die
Funktion „DVD Extrahieren“ im Webfrontend eingeplant. Da der Qualitätsaspekt hier
vernachlässigbar ist, ist es denkbar, einen kompletten Tag eines Senders auf wenige
DVDs zur Archivierung zu exportieren.
Auch die technische Seite des ZDF ist mit eingebunden. Für die Abteilung Sendeabwicklung ist es denkbar, einen Mechanismus zur automatischen Erkennung von Fehlern zu
entwickeln, bei dem nach dem Auftreten eines Fehlers unverzüglich ein Verantwortlicher
informiert wird.
Durch die immer weiter steigenden Computer- und vor allem Speicherkapazitäten rückt
die Realisierung eines solchen Systems für heimische Wohnzimmer in finanzierbare Bereiche. Deshalb wäre es denkbar, dieses System als privaten „Über-Videorecorder“ zu
verwenden. Beispielsweise mit Anschluss an eines der in Abschnitt 5.1.1 genannten
Freeware-Projekte oder als eigenständiger Server mit Funktionen nach den aktuellen
UPnP65-Standards.
65
UPnP – Universal Plug and Play – Zur Herstellerunabhängigen Ansteuerung von Geräten über ein IPbasiertes Netzwerk
88
89
III Literaturverzeichnis
III Literaturverzeichnis
[REIMERS]
Reimers, Ulrich: Digital Video Broadcasting. The International
Standard for Digital Television. Heidelberg: Springer-Verlag Berlin Heidelberg, 2001
[VONHOEGEN]
Vonhoegen, Helmut: Einstieg in XML. 2. Auflage. Bonn: Galileo Press GmbH, 2004
[KRUEGER]
Krüger, Guido: Handbuch der Java-Programmierung. 3. Auflage. München: Addison-Wesley, 2002
[LENZ]
Lenz, Martin: Digitales Fernsehen in der Praxis. Der sichere
Start in die digitale Zukunft. Poing: Franzis-Verlag GmbH, 1999
[LOUIS]
Louis, Dirk: C/C++. Die praktische Referenz.
München: Markt + Technik Verlag, 2003
[GAMMA]
Gamma, Erich: Design Patterns. Elements of Reusable ObjectOriented Software. München: Addison-Wesley, 1996
[ETSI 300468]
ETSI EN 300 468 Digital Video Broadcasting (DVB); Specification for Service Information (SI) in DVB systems. V1.6.1,
11.2004
[ISO 13818-1]
ISO/IEC 13818-1 Information technology - Generic coding of
moving pictures and associated audio information: Systems.
01.12.2000
[BOLDT]
Boldt, Daniel: Konzeption und Realisierung eines Dienstes zur
Aufbereitung und Codierung von DVB-SI Tabellen aus Content
Management Daten. Diplomarbeit, TU Ilmenau 2004
90
[KLEIN]
III Literaturverzeichnis
Klein, Daniel: Konzeption und Realisierung von SoftwareKomponenten zur Extraktion von DVB-SI Daten für die Weiterverarbeitung im Rahmen des ZDF-DVB-SI-ManagementProjekts, FH Wiesbaden 2005
[FSF]
Free Software Foundation: “Various Licenses and Comments
about Them”,
URL: http://www.fsf.org/licensing/licenses/
[Stand: 15. Februar 2006]
[INFORMITV]
informitv.com: “BBC opens Pandora box on a Promise” URL:
http://informitv.com/articles/2005/08/07/bbcopenspandora/i
ndex.shtml [Stand: 14. November 2005]
[PATTERSON]
Patterson, David A.: „A Case for Redundant Arrays of Inexpensive Disks (RAID)”, URL:
http://www.cs.cmu.edu/~garth/RAIDpaper/Patterson88.pdf
[Stand: 12. Januar 2006]
[DVBORG]
DVB Project: DVB Timeline,
URL: http://www.dvb.org/about_dvb/history/dvb_timeline
[Stand: 11. Februar 2006]
[ASTRA]
SES-Global:
The
Astra
Fleet,
URL:
http://www.ses-
astra.com/corpSite/siteSections/ASTRAFleet/index.php
[Stand: 20. Februar 2006]
[MSBDA]
Microsoft: “Protected Broadcast Driver Architecture”, URL:
http://www.microsoft.com/whdc/device/stream/BDA_protect
.mspx [Stand: 25. April 2006]
91
III Literaturverzeichnis
[DASAT]
Dasat: “Was ist ein CMS?“ URL:
http://www.dasat.com/content-management-system/was-istein-cms-/online-content-management-system--cms_100132_0.html [Stand: 26.01.2006]
[MVCD]
MoleVCD: „MoleVCD 2003“
URL: http://www.molevcd.de/mvcd.htm [Stand: 26.01.2006]
92
A Listings
A Listings
A.1
DTDs
A.1.1 Tables-Socket-Service
Anfrage:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ELEMENT table_id (#PCDATA)>
<!ELEMENT pid (#PCDATA)>
<!ELEMENT timestamp (#PCDATA)>
<!ELEMENT get (table_id, pid, timestamp)>
<!ATTLIST get
ID #REQUIRED
(yes | no) #REQUIRED
(yes | no) #REQUIRED
>
Antwort:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ELEMENT descriptor (#PCDATA)>
<!ATTLIST descriptor
CDATA #REQUIRED
>
<!ELEMENT rows ANY>
<!ELEMENT loop (rows, descriptor*)>
<!ATTLIST loop
ID #REQUIRED
>
<!ELEMENT table (rows, descriptor*, loop*)>
<!ATTLIST table
CDATA #REQUIRED
CDATA #REQUIRED
>
<!ELEMENT response (table)>
<!ATTLIST response
ID #REQUIRED
>
<!ELEMENT answer (response+)>
93
94
A.2
A Listings
TS2PS Job-Files
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
title (#PCDATA)>
filename (#PCDATA)>
format (#PCDATA)>
begin (#PCDATA)>
end (#PCDATA)>
vorlauf (#PCDATA)>
nachlauf (#PCDATA)>
email (#PCDATA)>
pid (#PCDATA)>
<!ELEMENT TS2PSJOB (title, filename, format, begin, end,
vorlauf, nachlauf, email, pid+)>
A.3
Beispiel Konfigurationsdatei
[Tuner]
Frequenz=11954000
Symbolrate=27500000
;Polarisation: h -> Horizontal v -> Vertikal
Polarisation=h
QAM=2
[LNB]
LOF1=9750000
LOF2=10600000
LOFSW=11700000
;true/false
LNBPower=true
[TS_Save]
TS_Files_Path=C:\Temp\TS_SAVE
TS_Files_Name=TS_
TS_Files_Extension=.ts
;TS_Files_Size --> Dateigröße der Dateien, die geschrieben werden in Bytes. Max. Groesse 2GB. Hier einige MB unter 2GB angeben,da beim Aufnehmen die Dateien nicht genau geschnitten werden können
TS_Files_Size=2000000000
;Maximalgroesse des Verzeichnisses in GB, wo die TS-Files reingeschrieben werden
TS_Files_Folder_Max_Size=110
[Logfile]
;Es wird dann bei jedem Start ein Logfile erstellt nach dem
Schema <Log_file_Dir>\<Log_File_Prefix><timestamp>.log
A Listings
95
Log_File_Dir=C:\Temp\TSLOGS
Log_File_Prefix=TS_Log
[Encoding]
Path_To_DGIndex=C:\DA\Software\dgmpgdec145\DGIndex.exe
DGIndex_Save_Path=C:\Temp\TS_SAVE\DGIndex_Save
Encoder_Tasks_Dir=C:\DA\apache_webroot\webinterface_cms\Scripte\D
GIndex_Klasse\tasks
AVS_Template_Path=C:\DA\apache_webroot\webinterface_cms\Scripte
\DGIndex_Klasse\AVS_Template.avs
Video_Delivery_Dir=C:\Temp\apache_videos
[Misc]
Tmp_Dir=C:\Temp
[EPG]
EPG_XML_Path=C:\DA\apache_webroot\EPG
EPG_XML_File_Prefix=EPG_
[TS2PS]
;In dieses Verzeichnis kommen Job-Dateien rein, die von
TS2PS_Worker abgearbeitet werden sollen
TS2PS_job_dir=C:\DA\Software_Entwicklung\TS2PS_Worker\jobs
;In dieses Verzeichnis werden die fertigen MPEG2-Files gelegt,
damit sie vom Empfänger abgerufen werden können
TS2PS_target_dir=C:\Temp\apache_videos
[Software]
PVAStrumento=C:\DA\Software\pvas21015\cmdshell\cPVAS.exe
96
B Pflichtenheft zum System
B Pflichtenheft zum System