Wenn der Empfang einwandfrei ist, der DVBViewer aber trotzdem nicht die erwarteten Ergebnisse bringt, liegt dies meist daran, dass wichtige Komponenten für die Audio- und Video-Wiedergabe im System fehlen. Oder andere Programme haben welche installiert, die sich nicht mit dem DVBViewer vertragen. Wer sich damit befassen muss, weil irgendwas nicht funktioniert, oder hofft, durch Austausch von Komponenten noch bessere Ergebnisse zu erzielen, oder sich einfach für die Angelegenheit interessiert, findet im Folgenden eine kleine Einführung in das DirectShow-System.
● Inhalt ● an den Anfang ● ans Ende ● vorheriges Kapitel ●
Microsoft stellt mit DirectShow (einem Bestandteil von DirectX) eine Multimedia-Schnittstelle zur Verfügung, die alle diesbezüglichen Programme benutzen. DirectShow-Komponenten – nicht immer zutreffend „Filter“ genannt – werden im System registriert und stehen danach allen Programmen zur Verfügung. Es handelt sich dabei um Dateien mit der Endung .ax (manchmal auch .dll). An der Verarbeitung der Audio- und Video-Datenströme ist eine ganze Kette solcher Filter beteiligt, wobei jeder eine bestimmte Aufgabe übernimmt. Dem DVBViewer – oder auch Mediaplayern allgemein – obliegt dann die Verwaltung der Filterkette, mit der Verarbeitung der Datenströme haben sie nur indirekt etwas zu tun.
Standardmäßig wird die Zusammenstellung der benötigten Filter dem DirectShow-Filtermanager übertragen. Soll z.B. eine Videodatei abgespielt werden, wird der Manager beauftragt, die nötigen Filter zu ermitteln und die Kette – den so genannten „Filtergraphen“ - aufzubauen. Da diese Automatik nicht immer zum gewünschten Ergebnis führt, können Programme den Prozess beeinflussen, also z.B. vorgeben, dass bestimmte Filter auf jeden Fall verwendet werden. Ansonsten nimmt der Manager den „besten“ Filter, den er im System für die Aufgabe findet. Die Entscheidung trifft er aufgrund eines jedem Filter zugeordneten Wertes, der „Merit“ genannt wird. Da der Merit jedoch vom Hersteller des Filters festgelegt wird, führt dieses System aufgrund gewisser Übertreibungen nicht immer zu einem optimalen Ergebnis, wie man sich denken kann... Glücklicherweise gibt es jedoch Möglichkeiten, den Merit zu ändern – dazu später mehr.
Um allen Eventualitäten gerecht zu werden, bietet der DVBViewer im Optionenfenster unter „Erweitert“ und „DirectShow Filter“ eine ganze Reihe Möglichkeiten, den Filtergraphen zu beeinflussen. Der folgende Abschnitt vermittelt einen Überblick über die vom DVBViewer benutzten Filtergraphen, über die darin enthaltenen Komponenten und die Variationsmöglichkeiten.
● Inhalt ● an den Anfang ● ans Ende ● vorheriges Kapitel ●
Den Anfang bildet ein so genannter Quellfilter oder auch Renderkern, der den Datenstrom zur Verfügung stellt (also Audio, Video und gegebenenfalls auch Teletext und EPG). Für den Fernsehempfang gibt es zwei zur Auswahl, die die Daten von den SkyStar-Treibern übernehmen: Der SkyStar 4.2 Renderkern stammt von B2C2, dem Hersteller der SkyStar2-Chips und wird von TechniSat mitgeliefert – das ist die Datei Sky2PCAVSrc.ax in Ordner Programme\TechniSat\bin.
Welchen Quellfilter der DVBViewer benutzt, lässt sich unter Einstellungen/ Optionen/ Erweitert wählen. Die zusätzlichen Optionen „SkyStar kompatibler Renderer“ und „SkyStar 4.14 Renderer“ beziehen sich nur auf alternative Schnittstellen zum SkyStar-Quellfilter, die bei Unverträglichkeiten mit älteren Versionen zum Einsatz kommen können.
Bei Video-Wiedergabe ist der Quellfilter eine Standard-Systemkomponente, die einfach die betreffende Datei ausliest. Auch diese lässt sich im DVBViewer unter „Renderkern“ auswählen, worauf sich prompt ein Fenster für die Dateiauswahl öffnet.
Die nächste Station im Filtergraphen bilden bei Fernsehempfang Dump-Filter, die dem DVBViewer das Abgreifen der Audio- und Video-Daten zwecks Aufnahme sowie der Teletext- und EPG-Daten erlauben. Diese befinden sich alle in der Datei RLDumper.ax im Ordner DVBViewer/Filters. Das folgende Bild zeigt den vollständigen Graphen für den Fernsehempfang mit SkyStar 4.2 Quellfilter (0001):
Bei Video-Wiedergabe folgt dagegen auf den Quellfilter ein Demultiplexer (auch Demuxer oder Splitter), der die Aufgabe hat, Video- und Audio-Daten in zwei separate Ströme aufzuspalten. Der Standard-Splitter von Microsoft befindet sich im System32-Ordner (mpg2splt.ax). Dieser macht jedoch erfahrungsgemäß häufig Probleme beim Springen an andere Stellen des Videos. Empfehlenswert ist deshalb, den besseren Demultiplexer von Elecard zu installieren (mehr dazu hier). Da er einen höheren Merit hat, übertrumpft er dann den Standard-Splitter. Hier ein vollständiger Graph für das Abspielen des samstäglichen Fußballvergnügens :-)
Weiter geht es danach bei Fernseh- und Videowiedergabe mit den Decodern, die eine besonders wichtige Rolle spielen. Da die Video- und Audio-Daten nach dem MPEG-Standard komprimiert angeliefert werden, müssen sie nun entkomprimiert bzw. dekodiert werden. Dieses ist der schwierigste und zeitaufwendigste Vorgang in der Filterkette. Das Funktionieren und die Wiedergabequalität hängen deshalb besonders von dieser Station ab. Bei der Installation der TechniSat-Software wird deshalb ein passender Videdecoder mitinstalliert (DVD Express von Mediamatics). Der Audio-Decoder wird standardmäßig von Windows bereitgestellt (MPEG Audio Decoder), kann aber wie der Demultiplexer z.B. durch den im Elecard Decoder-Package enthaltenen besseren Odio-Dekoda ersetzt werden.
Da viele Programme eigene Decoder mitbringen, gibt es häufig Alternativen im System. Bei Benutzung des SkyStar 4.2 Renderkerns wird jedoch grundsätzlich, unabhängig vom Merit, der Mediamatics-Decoder und der MPEG Audio Decoder ausgewählt, was sich nur mit „Gewalt“ ändern lässt – dazu gleich mehr.
Den Abschluß im Filtergraphen bilden schließlich der Audio- und Videorenderer, die die Daten weiter aufbereiten und via Treiber zur Grafik- bzw. Soundkarte schicken. Unter Optionen/ Erweitert/ Renderausgabe bietet der DVBViewer für den Video-Renderer einige Auswahlmöglichkeiten mit verschiedenen Vor- und Nachteilen. Diese wurden bereits in in diesem Abschnitt in Kapitel 7 beschrieben, einschließlich dem Overlay-Mixer, der sich noch gerne zwischen Decoder und Video-Renderer einmischt. Für das Rendern der Audio-Daten gibt es auch Alternativen (im DVBViewer einstellbar unter Optionen/ DirectShow Filter), die jedoch nur verschiedene Schnittstellen zur Soundkarte darstellen und im allgemeinen keinen hörbaren Unterschied ergeben.
● Inhalt ● an den Anfang ● ans Ende ● vorheriges Kapitel ●
Wer gerne aus Neugier (oder bei Problemen gezwungenermaßen) am Filtergraphen herum basteln will, sollte sich zunächst informieren, welche Filter effektiv benutzt werden.
Die erste Anlaufstelle bietet der DVBViewer unter Ansicht/ Filter – dort sind die wichtigsten (Quellfilter, Decoder, Renderer) aufgezählt. Leider findet man hier nicht immer aussagekräftige Namen, sondern manchmal nur Nummern. Klickt man einen Eintrag an, so erscheint, falls verfügbar, die Eigenschaftsseite (Property Page) des Filters und gibt weiteren Aufschluss. Oft bietet sie spezielle Einstellmöglichkeiten – wer experimentierfreudig ist, kann sie ausprobieren und wird dabei vielleicht interessante Bild- und Tonstörungen erleben :-)
Für die Ermittlung der im System registrierten Filter und der dazugehörigen Dateinamen und Pfade benutzt man am besten ein von Microsoft stammendes Werkzeug namens GraphEdit. Da es von Microsoft nicht offiziell zum Download angeboten wird, ist es etwas schwierig im Web aufzutreiben, aber Sie können es bei http://doom9.org/ (rar-komprimiert) oder auch bei http://www.stokebloke.com/video/wmv2avi.php probieren. GraphEdit stellt Filtergraphen anschaulich dar und erlaubt es, Filter nach Lust und Laune miteinander zu verknüpfen.
Hier eine Auswahl der Möglichkeiten, die GraphEdit bietet:
Nach Anwahl von „Graph/ Insert Filters“ erscheint eine hierarchisch geordnete Liste aller im System registrierten Filter. Begeben Sie sich in die Abteilung „Directshow Filters“. Dort finden Sie unter anderem die im System vorhandenen Mpeg-Decoder mitsamt Dateiname und -pfad aufgelistet – diese Informationen brauchen Sie, um selbst Filter registrieren bzw. deregistrieren zu können (dazu gleich mehr). Halten Sie Ausschau nach Namen wie ATI, Cyberlink, DVD Express, Elecard, MainConcept, InterVideo, Ligos, nvidia...
„File/ Render Media File“ veranlasst GraphEdit bzw. den Filter-Manager, die Filter für das Abspielen einer Datei automatisch zusammenzusetzen. Als Datei können Sie eine beliebige Media-Datei auswählen. Die einzelnen Filter werden wie die Komponenten einer Audio-Anlage über ihre Output- und Input-Pins zusammengestöpselt. Dies gibt einige Aufschlüsse darüber, was im System standardmäßig für bestimmte Aufgaben verwendet wird. Mit einem Klick auf den Play-Button lässt sich die Datei abspielen.
File/Connect to Remote Graph erlaubt es, den vom DVBViewer aktuell benutzten Filtergraphen in GraphEdit zu übernehmen und zu analysieren, sofern der DVBViewer gerade läuft.
Über „File/ Render URL“ können Sie Graphedit sogar dazu bewegen, einen „Filtergraphen“ für den Empfang via SkyStar-Karte aufzubauen und als Fernseher zu funktionieren. Gehen Sie wie folgt vor:
Starten Sie den DVBViewer und stellen Sie den gewünschten Sender ein.
Öffnen Sie die Kanalliste, wählen Sie dort die Registerkarte „Editieren“ und notieren Sie sich die dort angezeigte Video- und Audio-PID.
Beenden Sie den DVBViewer, starten Sie GraphEdit und wählen Sie „File/ Render URL“
Geben Sie die folgende Adresse ein: b2c2src://VideoPid-AudioPID.mpg (z.B. für SAT1: b2c2src://1791-1792.mpg). Danach wird der Graph aufgebaut; über den Play-Button können Sie die Wiedergabe starten.
„Graph/ Insert Filters“ ermöglicht es, andere Filter in den Graphen einzufügen. Nachdem Sie mit „Edit/ Disconnect all Pins“ alle Verbindungen gelöst haben, können Sie durch Ziehen mit der Maus die Filter per Hand neu verbinden und dabei z.B. einen neuen Decoder einbauen. Auf diese Weise lässt sich feststellen, wie ein Filter auf die Wiedergabe wirkt. Via Rechtsklick mit der Maus können Sie auch einzelne Output-Pins rendern lassen, es also dem Filtermanager überlassen, den Faden weiter zu spinnen. Auch lassen sich einzelne Filter oder Verbindungen markieren und dann mit „Edit/Delete“ löschen.
Leider werden manche Filter auch in GraphEdit nur mit nichts sagenden Nummern gekennzeichnet. Hier hilft es, den gesamten Graphen mit „File/Save as XML“ abzuspeichern und die Datei, die zusätzliche Informationen enthält, mit einem Texteditor zu öffnen. Weitere Einzelheiten sind der Hilfe zu GraphEdit zu entnehmen.
● Inhalt ● an den Anfang ● ans Ende ● vorheriges Kapitel ●
Wenn die im DVBViewer angebotenen Möglichkeiten nicht ausreichen, um die Wiedergabe mit einer gewünschten Filterkombination zu erreichen, helfen nur noch Eingriffe im System. Auf keinen Fall darf man unerwünschte Filter einfach entfernen, da sie ja im System registriert sind. Die zuständigen Einträge stehen in der Windows-Registry im Schlüssel HKEY_CLASSES_ROOT. Dort sollte man jedoch nur direkt eingreifen, wenn man genau weiß, was man tut. Es gibt bessere und einfachere Möglichkeiten.
Für das Registrieren und Deregistrieren von Filtern ist das Programm regsvr32.exe im Ordner Windows\System32 zuständig. Es handelt sich um ein Kommandozeilen-Tool, das jedoch auf folgende Weise leicht bedienbar wird:
Ziehen Sie die Datei regsvr.32.exe mit der rechten Maustaste auf Ihr Desktop und wählen Sie im Kontextmenü „Verknüpfung hier erstellen“. Benennen Sie die Verknüpfung anschließend in „Register“ um.
Wiederholen Sie den Vorgang, benennen Sie aber die zweite Verknüpfung in „Unregister“ um. Klicken Sie sie danach mit der rechten Maustaste an und wählen Sie „Eigenschaften“. Ergänzen Sie den Eintrag in der Zeile „Ziel“ durch ein Leerzeichen getrennt durch /u. Damit sollte dort nun etwas stehen wie „C:/WINDOWS/System32/regsvr32.exe /u.“
Nun brauchen Sie Filterdateien nur noch auf das entsprechende Icon zu ziehen und dort fallen zu lassen: Prompt erscheint ein Fenster, dass die erfolgreiche (De-)Registrierung meldet. Deregistrierte Filter werden nicht mehr benutzt, können aber bei Bedarf jederzeit über „Register“ wieder angemeldet werden. Auf diese Weise lässt sich z.B. erreichen, dass in Verbindung mit dem SkyStar 4.2 Renderkern ein anderer Videodecoder als der Mediamatics benutzt wird: Einfach die Datei DVD Express AV Decoder.DLL im Windows\System32-Ordner deregistrieren, dann ist, falls vorhanden, ein anderer Decoder an der Reihe.
Möchte man einen Filter nicht generell aus dem Verkehr ziehen, sondern nur dafür sorgen, dass er nicht mit Vorrang vom DirectShow-Filtermanager eingesetzt wird, muss man seinen Merit ändern. Dieser Wert steht ebenfalls in der Registry, aber meist verschlüsselt und damit kaum auffindbar.
Recht einfach geht dies jedoch mit dem Zoomplayer (Freeware, http://www.inmatrix.com/zplayer/), der einiges in Richtung DirectShow-Management zu bieten hat. Nach Installation und Programmstart öffnet man mit einem Rechtsklick das Kontextmenü und folgt den Optionen Player Options/ Manual Filters/ Registered Filter Manager. Dort findet man eine Liste aller registrierten DirectShow-Filter. Wählt man einen von ihnen an, lässt sich der Merit-Wert editieren. Zusätzlich gibt es in dem Fenster Hinweise zur Bedeutung der Werte. Eine Änderung wird allerdings erst wirksam, wenn man unter Windows 2000/XP das aktuelle Benutzerkonto verlässt und sich neu einloggt. Bei Windows 98 ist eventuell ein Neustart fällig (noch ungeklärt).
Falls Ihnen übrigens beim Basteln mit Filtern manch Wunderbares und Unerklärliches begegnen sollte: Das ist so. Schon mancher ist zu dem Ergebnis gelangt, dass es sich bei DirectShow nicht um eine mit den Mitteln der Logik beherrschbare Multimedia-Schnittstelle handelt, sondern schlicht um ein Glücksspiel :-)
● Inhalt ● an den Anfang ● ans Ende ● vorheriges Kapitel ●