4.18. MPEG-Dekoderkarten

4.18.1. DVB-Output und -Input

MPlayer unterstützt Karten mit dem Siemens-DVB-Chipsatz von Herstellern wie Siemens, Technotrend, Galaxis oder Hauppauge. Die neuesten DVB-Treiber gibt's auf der Linux TV-Seite. Wenn du Transcodierung in Software machen willst, dann brauchst du eine CPU mit mindestens 1GHz.

configure sollte automatisch deine DVB-Karte erkennen. Wenn es das nicht tut, dann erzwinge DVB-Unterstützung mit

./configure --enable-dvb

Wenn die ost-Headerdateien nicht an ihrem normalen Platz liegen, dann gib explizit den Pfad zu ihnen an mit:

./configure --extra-cflags=DVB-Source-Verzeichnis/ost/include

Dann compiliere und installiere wie sonst auch.

GEBRAUCH.  Hardwaredecodierung von Streams, die MPEG-1/2 Video und/oder MPEG-Audio enthalten, geschieht mit diesem Kommando:

mplayer -ao mpegpes -vo mpegpes Datei.mpg|vob

Decodierung jeder Art Videostream verlangt Transcodierung zu MPEG-1, daher ist es langsam und den Ärger möglicherweise nicht wert, vor allem, wenn dein Computer langsam ist. Es kann folgenderweise gemacht werden:

mplayer -ao mpegpes -vo mpegpes DateieDatei.ext
mplayer -ao mpegpes -vo mpegpes -vf expand DateieDatei.ext

Beachte, dass DVB-Karten nur bestimmte Bildhöhen unterstützen: 288 und 576 für PAL und 240 und 480 für NTSC. Du musst das Bild vorher skalieren, wenn die Höhe nicht einer der oben erwähnten entspricht: -vf scale=width:height. DVB-Karten unterstützen eine Vielzahl horizontaler Auflösungen wie z.B. 720, 704, 640, 512, 480, 352 etc. Sie machen Hardwareskalierung in horizontaler Richtung, sodass du meist nicht in horizontaler Richtung skalieren musst. Bei einem 512x384-MPEG4 (DivX) (Verhältnis 4:3) kannst du folgendes probieren:

mplayer -ao mpegpes -vo mpegpes -vf scale=512:576

Wenn du einen Breitwandfilm hast und du ihn nicht auf die volle Höhe skalieren möchtest, dann kannst du den expand=w:h-Filter benutzen, um schwarze Balken hinzuzufügen. Um ein 640x384-MPEG4 (DivX) anzuschauen:

mplayer -ao mpegpes -vo mpegpes -vf expand=640:576 Datei.avi

Wenn deine CPU für 720x576-MPEG4 (DivX) zu langsam ist, dann skaliere herunter:

mplayer -ao mpegpes -vo mpegpes -vf scale=352:576 Datei.avi

Wenn sich die Geschwindigkeit nicht verbessert, dann skaliere auch in vertikaler Richtung:

mplayer -ao mpegpes -vo mpegpes -vf scale=352:288 Datei.avi

Für ein OSD und Untertitel kannst du das OSD-Feature des expand- Filters benutzen. Anstelle von expand=w:h oder expand=w:h:x:y benutzt du dafür expand=w:h:x:y:1 (der fünfte Parameter :1 schaltet die OSD-Anzeige an). Eventuell willst du das Bild ein wenig nach oben schieben, um unten mehr Platz für die Untertitel zu haben. Vielleicht willst du auch die Untertitel hochschieben, wenn sie ansonsten außerhalb des sichtbaren Bereiches des Fernsehers liegen. Das kannst du mit -subpos <0-100> erreichen, wobei -subpos 80 meistens eine gute Wahl darstellt.

Um Filme mit weniger/mehr als 25 Frames pro Sekunde auf einem PAL-Fernseher abzuspielen, oder wenn du eine langsame CPU hast, verwende die Option -framedrop.

Um das Höhen-/Breitenverhältnis des MPEG-4 (DivX) beizubehalten und trotzdem die optimalen Skalierungsparameter zu verweden (Hardwareskalierung in horizontaler Richtung und Softwareskalierung in vertikaler Richtung unter Beibehaltung des richtigen Höhen-/Breitenverhältnisses), benutze den neuen dvbscale-Filter:

for a  4:3 TV: -vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1
for a 16:9 TV: -vf dvbscale=1024,scale=-1:0,expand=-1:576:-1:-1:1

Digitales TV (DVB-Input-Modul).  Du kannst deine DVB-Karte zum Ansehen digitalen TVs verwenden.

Du solltest die Programme scan und szap/tzap/czap/azap installiert haben; sie sind alle im Treiberpaket enthalten.

Überprüfe, ob die Treiber sauber mit dem Programm wie etwa dvbstream arbeiten (das ist die Basis des DVB-Input-Moduls).

Jetzt solltest du eine Datei ~/.mplayer/channels.conf mit der von szap/tzap/czap/azap Syntax compilieren oder es von scan für dich compilieren lassen.

Hast du mehr als einen Kartentyp (z.B. Satellit, Antenne, Kabel und ATSC), kannst du deine Kanaldateien als ~/.mplayer/channels.conf.sat, ~/.mplayer/channels.conf.ter, ~/.mplayer/channels.conf.cbl, und ~/.mplayer/channels.conf.atsc respektive speichern, um MPlayer unbedingt darauf hinzuweisen, eher diese Dateien zu verwenden als ~/.mplayer/channels.conf, und du musst angeben, welche Karte du verwendest.

Stelle sicher, dass du nur frei ausgestrahlte Kanäle in deiner Datei channels.conf hast, oder MPlayer wird auf eine unverschlüsselte Übertragung warten.

In deinen Audio- und Videofeldern kannst du eine erweiterte Syntax anwenden: ...:pid[+pid]:... (für ein Maximum von 6 pids bei jedem); in diesem Fall wird MPlayer alle gezeigten pids enbinden, plus pid 0 (welche das PAT enthält). Binde ruhig in jede Spalte die PMT pid für den korrespondierenden Kanal ein (falls du ihn kennst). Du kannst auch 8192 angeben; dies wird alle pids auf dieser Frequenz wählen, und du kannst dann zwischen ihnen mit TAB wechseln. Das mag mehr Bandbreite benötigen, billige Karten übertragen jedoch alle Kanäle zumindest bis zum Kernel, daher macht es für diese keinen großen Unterschied. Andere mögliche Anwendungen sind: televideo pid, zweiter Audio-Track, etc.

Wenn sich MPlayer regelmäßig über

Zu viele Audiopakete im Puffer

beschwert oder wenn du eine zunehmende Desynchronisation zwischen Ton und Video feststellst, versuche den MPEG-TS-Demuxer von libavformat zu verwenden, indem du -demuxer lavf -lavfdopts probesize=128 der Kommandozeile hinzufügst.

Um den ersten der in deiner Liste vorhandenen Kanäle anzuzeigen, führe folgendes aus

  mplayer dvb://

Willst du einen bestimmten Kanal wie z.B. R1 ansehen, führe dies aus

  mplayer dvb://R1

Hast du mehr als eine Karte, musst du die Nummer der Karte, in der der Kanal zu sehen ist (z.B. 2), mit dieser Syntax angeben:

  mplayer dvb://2@R1

Um Kanäle zu wechseln, drücke die Tasten h (nächster) und k (vorheriger) oder verwende das OSD-Menü.

Wenn deine ~/.mplayer/menu.conf einen Eintrag <dvbsel> enthält, wie der in der Beispieldatei etc/dvb-menu.conf (die du zum Überschreiben der ~/.mplayer/menu.conf nutzen kannst), wird das Hauptmenü einen Untermenüeintrag anzeigen, der dir die Wahl des Kanal-Presets in deiner channels.conf erlaubt, womöglich gefolgt von einem Menü mit der Liste der verfügbaren Karten, falls mehr als eine von MPlayer genutzt werden kann.

Willst du ein Programm auf die Festplatte speichern, nimm

  mplayer -dumpfile r1.ts -dumpstream dvb://R1

Willst du ihn statt dessen in einem anderen Format aufnehmen (ihn neu encodieren), kannst du einen Befehl wie diesen ausführen

  mencoder -o r1.avi -ovc xvid -xvidencopts bitrate=800 -oac mp3lame -lameopts cbr:br=128 -pp=ci dvb://R1

Lies dir in der Manpage eine Liste von Optionen durch, die du an das DVB-Input-Modul übergeben kannst.

AUSBLICK.  Wenn du Fragen hast oder an der Diskussion über zukünftige Features teilnehmen willst, dann melde dich bei unserer MPlayer-DVB Mailingliste an. Denk bitte daran, dass dort Englisch gesprochen wird.

Für die Zukunft kannst du mit der Möglichkeit, das OSD und die Untertitel mit den eingebauten Funktionen der DVB-Karten anzuzeigen, mit flüssigerer Wiedergabe von Filmen mit weniger/mehr als 25 Bildern pro Sekunde und mit Echtzeit-Transcodierung zwischen MPEG-2 und MPEG-4 (partielle Dekompression) rechnen.

4.18.2. DXR2

MPlayer unterstützt hardwarebeschleunigte Wiedergabe mit der Creative DXR2-Karte.

Zuerst brauchst du einen richtig installierten DXR2-Treiber. Du kannst die Treiber und Installationshinweise im DXR2 Resource Center finden.

GEBRAUCH

-vo dxr2

Aktiviere TV-Ausgabe.

-vo dxr2:x11 oder -vo dxr2:xv

Aktiviere Overlay-Ausgabe unter X11.

-dxr2 <option1:option2:...>

Diese Option wird zur Kontrolle des DXR2-Treiber verwendet.

Der auf DXR2 genutzte Overlay-Chipset ist von sehr schlechter Qualität, die Standardeinstellungen sollten aber bei jedem funktionieren. Das OSD kann eventuell mit Overlay genutzt werden (nicht bei TV), indem es im colorkey eingetragen wird. Mit den Standardeinstellungen des colorkey bekommst du evtl. unterschiedliche Ergebnisse, gewöhnlich wirst du den colorkey rund um die Zeichen sehen oder einige anderen lustigen Effekte. Aber wenn du die colorkey-Einstellungen korrekt anpasst, solltest du in der Lage sein, akzeptable Resultate zu erzielen.

Lies bitte in der Manpage über die vorhandenen Optionen.

4.18.3. DXR3/Hollywood+

MPlayer unterstützt die hardwarebeschleunigte Wiedergabe mit den Karten Creative DXR3 und Sigma Designs Hollywood Plus. Beide Karten basieren auf dem em8300-MPEG-Decoderchip von Sigma Designs.

Als erstes brauchst du korrekt installierte DXR3/H+-Treiber, Version 0.12.0 oder neuer. Diese Treiber und weitere Installationsanweisungen findest du auf der Seite DXR3 & Hollywood Plus for Linux. configure sollte die Karte automatisch finden. Die Compilierung sollte auch problemlos funktionieren.

GEBRAUCH

-vo dxr3:prebuf:sync:norm=x:device

overlay aktiviert das Overlay anstelle des TV-Ausgangs. Dafür brauchst du ein korrekt konfiguriertes Overlaysetup. Am einfachsten konfigurierst du das Overlay mit dem Tool autocal. Starte danach MPlayer mit dxr3-Ausgabe und ohne Overlay anzuschalten. Starte dxr3view. Mit dxr3view kannst du die Overlay-Einstellungen verändern und siehst die Auswirkungen sofort. Eventuell wird dieses Feature irgendwann vom MPlayer-GUI unterstützt. Wenn du das Overlay richtig eingestellt hast, brauchst du dxr3view nicht mehr laufen zu lassen.

prebuf schaltet Prebuffering ein. Das ist ein Feature des em8300-Chips, das es ihm ermöglicht, mehr als nur ein Bild gleichzeitig zu speichern. Das bedeutet, dass MPlayer in diesem Modus versucht, den Puffer ständig mit Daten gefüllt zu halten. Wenn du einen langsamen Rechner hast, dann wird MPlayer wahrscheinlich die meiste Zeit über knapp oder genau 100% der CPU-Zeit belegen. Das ist vor allem dann der Fall, wenn du echte MPEG-Streams (z.B. DVDs, SVCDs etc.) abspielst, da MPlayer nicht nach MPEG encodieren muss und den Puffer sehr schnell wird füllen können.

Mit Prebuffering ist die Videowiedergabe viel weniger anfällig gegenüber anderen CPU-intensiven Programmen. Frames werden nur dann verworfen, wenn eine andere Anwendung für eine sehr lange Zeit die CPU belegt.

Wenn kein Prebuffering verwendet wird, dann ist der em8300 viel anfälliger gegenüber CPU-Last. Somit wird dringend empfohlen, MPlayers -framedrop-Option zu verwenden, um die A/V-Sync zu erhalten.

sync aktiviert die neue sync-Methode. Dieses Feature ist momentan noch experimentell. Bei dieser Methode beobachtet MPlayer ständig die interne Uhr des em8300-Chips. Weicht diese von MPlayers Uhr ab, so wird die des em8300-Chips zurückgesetzt, sodass dieser alle Frames verwirft, die hinterherhängen.

norm=x setzt den TV-Standard der DXR3-Karte, ohne dafür externe Programme wie em8300setup zu benötigen. Gültige Werte sind 5 = NTSC, 4 = PAL-60, 3 = PAL. Spezielle Standards sind 2 (automatische Erkennung mit PAL/PAL-60) und 1 (automatische Erkennung für PAL/NTSC), da sie den Standard in Abhängigkeit der FPS des Films setzen. norm = 0 (Standard) ändert den momentan eingestellten TV-Standard nicht.

device = Gerätenummer wählt die zu verwendene em8300-Karte, falls du mehrere davon hast.

Jede dieser Optionen kann auch weggelassen werden.

:prebuf:sync scheint sehr gut zu funktionieren, wenn du DivX abspielst. Es gab Berichte von Leuten, die Probleme mit prebuf bei der Wiedergabe von MPEG1/2-Dateien hatten. Du solltest es also zuerst ohne Optionen probieren. Wenn du Sync-Probleme hast, dann probier :sync aus.

-ao oss:/dev/em8300_ma-X

Audioausgabe, wobei X die Gerätenummer ist (0 bei nur einer Karte).

-af resample=xxxxx

Der em8300 kann keine Sampleraten niedriger als 44100Hz abspielen. Wenn die Samplerate weniger als 44100Hz beträgt, dann wähle 44100Hz oder 48000Hz, je nachdem, welche davon besser passt. Beispiel: Wenn der Film 22050Hz benutzt, dann wähle 44100Hz, da 44100 / 2 = 22050 ist. Bei 24000Hz nimmst du 48000Hz etc. Das funktioniert nicht mit der digitalen Audioausgabe (-ac hwac3).

-vf lavc

Wenn du Nicht-MPEG-Filme mit dem em8300 ansehen möchtest (z.B. DivX oder RealVideo), dann musst du einen MPEG1-Videofilter wie libavcodec (lavc) verwenden. Momentan gibt es keine Möglichkeit, die Anzahl der Bilder pro Sekunde des em8300 zu setzen, was bedeutet, dass sie fest bei 29.97 liegt. Aus diesem Grund solltest du -vf lavc=quality:25 verwenden, besonders dann, wenn du auch Prebuffering verwendest. Warum aber 25 und nicht 29.97? Tja, die Sache ist, dass das Bild bei 29.97 unruhig wird. Wir wissen leider nicht, warum das so ist. Wenn du Werte zwischen 25 und 27 benutzt, dann wird das Bild stabil. Momentan können wir das nur als gegeben hinnehmen.

-vf expand=-1:-1:-1:-1:1

Obwohl der DXR3-Treiber ein OSD über das MPEG1-/2-/4-Video projezieren kann, ist es qualitativ deutlich schlechter als MPlayers traditionelles OSD, und es hat diverse Probleme mit der Erneuerung der Anzeige. Der oben angegebene Befehl konvertiert das Video erst nach MPEG4 (das ist leider erforderlich) und wendet dann den expand-Filter an, der zwar das Bild nicht vergrößert (-1: = Standardwerte) aber dafür das normale OSD auf das Bild stanzt (die "1" am Ende).

-ac hwac3

Der em8300 unterstützt die Audiowiedergabe von AC3-Streams (Surroundsound) über den digitalen Ausgang der Karte. Schau oben bei der Option -ao oss nach. Sie muss angegeben werden, um den DXR3-Ausgang anstelle der Soundkarte anzugeben.