MEncoder
Aus Gentoo Linux Wiki
| Installationsmethoden • LiveCDs • Kernel & Hardware • Laptops & Notebooks • Portage • System • Netzwerke & Services • X • Software • Anderes • alphabetischer HOWTO Index |
Inhaltsverzeichnis |
[Bearbeiten] Vorwort
Nahezu alle DVD-Player der neuen Generation sind in der Lage MPEG-4-Videos in AVI-Dateien abzuspielen. Der Artikel soll helfen solche Video-Dateien mit Hilfe des MEncoders zu erstellen. Das Ziel ist dabei die Videos bei sehr guter Qualität so zu kodieren, dass sie auf nahezu allen DivX-fähigen DVD-Playern abspielbar sind! Dazu verwenden wir lame und LAVC, den DivX-kompatiblen MPEG-4-Codec des FFmpeg-Projektes der nicht nur eine hervorragende Qualität bietet, sondern zudem sehr schnell ist.
[Bearbeiten] Hintergrundinformationen
[Bearbeiten] Seitenverhältnisse
In der Fernseh- und Filmwelt unterscheidet man zwischen sogenannten Seitenverhältnissen, die das Verhältnis von Länge und Breite des Bildes bestimmen.
Auf einer DVD werden Videos in der vollen Auflösung der europäischen Fernsehnorm PAL gespeichert. In einzelnen Bildpunkten bedeutet dies 720x576. Dem Seitenverhätnis entspricht dies 4:3. Daneben gibt es noch weitere Seitenverhältnisse, die gerade beim Backup einer Video-DVD interessant sind. Mit angegeben sind auch die optimalen Auflösungen für eine MPEG-4-Video-CD.
| PAL, TV (4:3) | 496x368 |
| PAL, TV-Mini (4:3) | 384x288 |
| 16:9 (16:9) | 576x320 |
| Breitwand (1:1,85) | 592x320 |
| Cinemascope (1:2,35) | 640x272 |
[Bearbeiten] MPEG-Übersicht
Die MPEG-Audio/Video-Standards en détail:
| Jahr | Standard | Bezeichnung | Kommentar |
| 1993 | MPEG-1 | Video (H.261) | Findet Verwendung auf Video-CD |
| Audio Layer 1/2/3 | Layer 3 bekannt als MP3 | ||
| 1994/1995 | MPEG-2 | Video (H.262) | Findet Verwendung auf DVD |
| Advanced Audio Coding (AAC/NBC) / BC | BC (Backward Compability) spielt MP1/MP2/MP3 | ||
| 1998-2001 | MPEG-4 | Video Simple Profile (SP) (H.263) | Bekannteste Implementierungen sind DivX und XviD |
| Video Advanced Simple Profile (ASP) (H.263+/++) | Wie SP, jedoch mit GMC, Q-PEL, B-FRAMES und mehr Bitratenspielraum | ||
| Advanced Audio Coding (AAC) | Wie MPEG-2 AAC jedoch zusätzlichen Features | ||
| 2002 | Advanced Video Coding (AVC) (H.264) | Die Zukunft |
Die korrekte Bezeichnung für das bekannte MP3 ist also eigentlich MPEG-1 Audio Layer 3. MPEG-2 Audio gibt es in zwei Varianten, nämlich als AAC (Advanced Audio Coding), der nicht kompatibel zu MPEG-1 Audio ist (NBC - Non Backward Compability) und als zu MPEG-1 Audio kompatible Version.
[Bearbeiten] Container und Codecs
Wir müssen ersteinmal unterscheiden zwischen den reinen Video- bzw. Audio-Datenströmen und den Container-Formaten, die sie enthalten.
AVI ist kein Codec, sondern ein Container-Format. Diese Container "nehmen" sich beliebige Audio- und Video-Datenströme, "schnüren" sie zusammen und "bieten" sie den Playern beim Abspielen so an, dass diese sie korrekt abspielen. Moderne Containerformate können daneben noch weitere Datenströme wie Untertitel, Zusatzinformationen oder Attachments beinhalten. Neben AVI (veraltet) gibt es unter anderem noch VOB (DVD), OGG und Matroska.
Die Audio-Codecs (de)kodieren nur reine Audio-Datenströme. Bekannt sind MP3, AC-3 und auch OGG Vorbis.
Hingegen sind Video-Codecs nur für Video zuständig. Hier gibt es MPEG-4 Implementierungen wie DivX und XviD, aber auch Theora.
Dateiendungen sollten also immer den Container beschreiben.
[Bearbeiten] Kodieren einer einzelnen Datei in sehr guter Qualität
Die hier vorgeschlagenen Einstellungen eignen sich vor allem, um vorhandene Videodateien, wie sie viele sicher als Fun-Clips etc. zu Hauf auf der Festplatte haben, so zu kodieren, dass man sie auf CD gebrannt auf DivX-DVD-Player abspielen kann.
mencoder "FILM.MPG" \ -oac mp3lame \ -lameopts preset=standard \ -ovc lavc \ -lavcopts vcodec=mpeg4:vbitrate=1231: \ mbd=1:lumi_mask=0.5:scplx_mask=0.1:cmp=256:vqmin=2:vqmax=6:mbqmin=2:mbqmax=10 \ -vf pp=lb \ -ffourcc DX50 \ -o "FILM_NEU.AVI"
- FILM.MPG ist der Dateiname des zu enkodierenden Films.
- Mit -oac wählt man den Audio-Codec. Hier kommt die Lame-Implementierung des MPEG-1 Layer 3 (MP3) zum Einsatz.
- Es liefert mit dem Preset standard, das unter -lameopts angegeben wurde, eine hervorragende Qualität.
- -ovc bestimmt den Video-Codec. Hier: LAVC.
- Mit den -lavcopts kann man nicht nur die Bitrate einstellen, sondern auch Finetuning an den Parametern des Codecs vornehmen. Die hier vorgeschlagenden Einstellungen bieten eine sehr gute Qualität bei einer Bitrate von 1231 Kilobit pro Sekunde.
- vf pp=lb. Hier können Video-Filter angegeben werden. pp=lb setzt einen sog. Deinterlacing-Filter.
- -ffourcc DX50. Damit ein Player den richtigen Video-Codec wählen kann, wird diese Kennung in die Zieldatei geschrieben. Der Standardwert FMP4 wird von vielen Playern leider nicht richtig interpretiert.
- Zu guter Letzt wählt man mit -o "FILM_NEU.AVI" einen Dateinamen für die neue Zieldatei.
Unter vf pp=lb kann es zudem sehr hilfreich sein, das Seitenverhältnis durch die ergänzende Angabe von scale also zB. vf pp=lb,scale=496:384 zu erzwingen. Das entstandene Video lässt sich ohne Probleme auf jedem DivX-fähigen DVD-Player abspielen, da es dem MPEG-4 SP Standard vollauf entspricht.
[Bearbeiten] Erstellen einer MPEG-4-Video-CD von einer DVD
[Bearbeiten] 1. Schritt: Übertragen der DVD auf die Festplatte
Wir verwenden hier cpdvd, das einfach in der Handhabung ist und sehr stabil läuft.
cpdvd -t 1 -m /mnt/dvd /home/user/dvd-backup
- -t 1 ist der Track auf der DVD. Eine Übersicht der Tracks einer DVD erhält man schön mit lsdvd.
- -m /mnt/dvd ist der Mountpoint des DVD-Laufwerks. Alternativ kann man auch das Device mittels zB. -d /dev/dvd direkt angeben.
- Und /home/user/dvd-backup ist das Verzeichnis in das die Daten der DVD kopiert werden sollen.
[Bearbeiten] 2. Schritt: Ermitteln des Bildausschnitts
Da sich die Seitenverhältnisse der Filmproduzenten (Cinemascope oder Breitwand) von denen der gängigen Bildschirme (4:3) unterscheiden entstehen typischerweise die schwarzen Balken ober- und unterhalb eines Filmes. Kennt jeder. Die MPEG2-Video-Datenströme auf DVDs sind den üblichen Bildschirmen angepasst und beherbergen ungeachtet des Seitenverhältnisses jeden Film in der vollen PAL-Auflösung, also im 4:3 Seitenverhältniss. Dadurch kann das Bild entweder verzerrt werden, was der Fachmann mit anamorph bezeichnet, oder die schwarzen Balken werden einfach mit abgespeichert. Beides hat Vor- und Nachteile (siehe hier). Da die Filme zudem niemals passgenau abgescannt werden, kann es von DVD zu DVD varieren wo genau der Film nun in dem schwarzen "4:3 Block" liegt. Der MEncoder bietet uns jedoch eine komfortable Möglichkeit die schwarzen Balken zu ermitteln und die Werte als sogenannten crop an den Enkodierungsprozess zu übergeben:
mplayer dvd://1 -dvd-device /home/user/dvd-backup -vo null -ao null -ss 600 -vf cropdetect mit <Ctrl+C> oder <Q>abbrechen
- dvd://1 ist der Track, der abgespielt werden soll.
- -vo null -ao null kein Video und Audio ausgeben.
- -ss 600 bedeutet, dass nach 600 Sekunden begonnen wird.
- -vf cropdetect ist die Option die uns den Bildausschnitt liefert
Es folgen in schneller Abfolge einige Angaben die wir in Ruhe durchlaufen lassen können! Die Ausgabe schaut in etwa so aus:
crop area: X: 0..719 Y: 76..499 (-vf crop=720:416:0:80)0.000 [1386:80] crop area: X: 0..719 Y: 76..499 (-vf crop=720:416:0:80)0.000 [1382:80]
Wir notieren die vier durch Doppelpunkt getrennten Zahlen in der Klammer() hinter crop=
[Bearbeiten] 3. Schritt: Der gute Ton
mplayer dvd://1 -dvd-device /home/user/dvd-backup -v | grep "audio stream"
Zeigt uns die verschiedenen Tonspuren des Tracks. Wir wählen den geeigneten und notieren die letzte Zahl der entsprechenden Zeile.
mencoder dvd://1 -dvd-device /home/user/dvd-backup -ovc frameno -oac mp3lame \ -lameopts preset=medium -aid 129 -o frameno.avi
- -lameopts preset=medium erzeugt einen MP3-Datenstrom von ca. 120-160kbit/sek, der eine ausgezeichnete Qualität aufweist. Alternativ kann statt preset auch eine beliebige Bitrate einfach angegeben werden.
- -aid 129 bestimmt die Tonspur, die wir kurz zuvor notiert haben.
Am Schluss schlägt uns der MEncoder für verschiedene Medien einige Größen für einen Video-Datenstrom vor. Auch hier sollten wir uns die Gewünschte notieren. Der Ton wurde in der Datei frameno.avi hinterlegt.
[Bearbeiten] 4. Schritt: Das Bild
Im ersten Durchgang ermittelt MEncoder Daten um das Video über die gesamte Länge optimal an die Bitrate anzupassen:
mencoder dvd://1 -dvd-device /home/user/dvd-backup \ -ovc lavc -lavcopts vcodec=mpeg4:v4mv:mbd=1:vpass=1 \ -vf kerndeint,crop=720:416:0:80,scale=640:272 \ -oac copy -o /dev/null
Zu beachten hierbei ist nun der Parameter scale=640:272. Dies ist die Auflösung unseres fertigen Videos! Am besten schauen wir auf die Hülle der DVD nach dem Seitenverhältnis und nehmen die entsprechenden unter Seitenverhältnisse vorgeschlagenen Werte. Ob dort nun 2.35:1 oder 2.40:1 steht ist egal, der Unterschied ist nicht sichtbar. Natürlich kann man auch andere Auflösungen verwenden, wenn das Seitenverhältnis erhalten bleibt!
Im zweiten Durchgang wird das Video nun endgültig kodiert:
mencoder dvd://1 -dvd-device /home/user/dvd-backup \ -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=680:v4mv:mbd=1:vpass=2 \ -vf kerndeint,crop=720:416:0:80,scale=640:272 -oac copy -ffourcc DX50 \ -o "/home/user/dvd-backup/film.avi"
- -ffourcc setzt eine DivX-Kennung in die AVI-Datei, sodass volle DivX-Kompatibilität gewährleistet ist. Leider erkennen viele Player die Standardkennung FMP4 nicht!
- vbitrate=680 Die Angabe der Bitrate nicht vergessen, die wir ja notiert haben.
- vpass=2 Außerdem müssen wir angeben , dass es sich um den zweiten Durchgang handelt.
Die beiden Einstellungen v4mv:mbd=1, die die internen Kodierungs-Mechanismen beeinflussen, haben sich bei mir in all den Jahren als bester Kompromiss zwischen Geschwindigkeit und Qualität herausgestellt!
Um die Qualität weiter zu erhöhen können zusätzlich B-Frames verwendet werden (vgl. [1]). Jedoch kann es auf einzelnen DVD-Playern zu Problemen bei der Wiedergabe kommen, daher sollte man diese Option im Zweifelsfall testen. Zu aktivieren sind B-Frames, indem man zu den Einstellungen -lavcopts vmax_b_frames=2 hinzufügt.
[Bearbeiten] 5. Schritt (optional): Der Untertitel
Untertitel rippen im VOBsub format. Zuerst wird ermittelt welche Untertitel auf der DVD verfügbar sind:
mplayer dvd://2 -dvd-device /home/user/dvd-backup/ -v -vo null -ao null
[open] subtitle ( sid ): 0 language: de [open] subtitle ( sid ): 1 language: fr [open] subtitle ( sid ): 2 language: de [open] subtitle ( sid ): 3 language: de [open] number of subtitles on disk: 4
Du kannst dir die Untertitel auch vorher anschauen:
mplayer dvd://2 -dvd-device /home/user/dvd-backup/ -aid 128 -sid 0
Wenn alles OK ist, kannst du mit extrahieren beginnen:
rm subtitles.idx subtitles.sub mencoder dvd://2 -dvd-device /home/user/dvd-backup/ -oac copy -ovc copy \ -vobsubout subtitles -vobsuboutindex 0 -vobsuboutid de -sid 0 -o /dev/null mencoder dvd://2 -dvd-device /home/user/dvd-backup/ -oac copy -ovc copy \ -vobsubout subtitles -vobsuboutindex 1 -vobsuboutid fr -sid 1 -o /dev/null
Es wurde der Deutsche und der Französische Untertitel extrahiert, beide in die selbe Datei.
- -oac copy -ovc copy Schnelldurchlauf mit copy, wir wollen jetzt nur die Untertitel. Das ganze kann natürlich auch kombiniert werden mit der 1 oder 2 pass encodierung.
- -vobsubout subtitles Name für die Untertiteldatei. Erstellt subtitles.idx und subtitles.sub.
- -vobsuboutindex 0 Indexnummer
- -vobsuboutid de Manuelle angabe des Ländercodes.
- -sid 0 Untertitel-ID auf der DVD
- -o /dev/null Wie oben schon erwähnt wollen wir nur die Untertitel.
Abspielen eines Films mit Untertitel:
mplayer film.avi -vobsub subtitles -vobsubid 1
Die Dateiendungen .idx .sub werden nicht angegeben.
[Bearbeiten] Weblinks
- MEncoder Scripts - Fertige Befehlsfolgen für verschiedene Anwendungsfälle
