4.18. MPEG-Dekoderkarten
Zurück | Kapitel 4. Videoausgabegeräte | Weiter

## 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.

Zurück | Nach oben | Weiter
4.17. DirectFB/Matrox (dfbmga) | Zum Anfang | 4.19. Andere Visualisierungshardware