mplayer

Aus Mikiwiki
Version vom 26. November 2024, 23:06 Uhr von Michi (Diskussion | Beiträge) (→‎Abspielgeschwindigkeit)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Der Shell-Befehl mplayer (auch: MPlayer, Mplayer) spielt über 150 Audioformate und Videoformate ab (Status codecs support). Allfällig benötigte dynamische Windows-Bibliotheken müssen unter "/usr/local/win32" installiert werden. Um möglichst alle aktuellen Formate abzuspielen sollte das Programm aus dem Quellcode selber kompiliert werden.

Der mplayer unterstützt unter anderem folgende Codecs: MPEG-1, AVI (einschliesslich aller Windows-Codecs und alle Divx-Codecs), DVD, VCD, SVCD

mplayer kann als gmplayer auch mit einer grafischen Benutzeroberfläche aufgerufen werden. Aber das ist was für Pipis.

Mit Hilfe des Mplayer Plugin kann mplayer auch innerhalb eines Webbrowsers verwendet werden.

Die 7 MB kleine Linux-Distribution Geexbox bootet lediglich einen Mplayer, der das Ansehen von Bildern, Filmen und DVDs auf einem beliebigen Rechner ermöglicht, ohne dass dort ein Mplayer installiert sein muss.

In Kürze: mplayer ist der beste Medienspieler, den es gibt.

Installation

Herunterladen: http://www.mplayerhq.hu/

Debian GNU/Linux 10

$ sudo apt-get install mplayer
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.       
Statusinformationen werden eingelesen.... Fertig
Die folgenden zusätzlichen Pakete werden installiert:
  liba52-0.7.4 libdirectfb-1.7-7 libenca0 libgles2 liblirc-client0 libmad0
  libmpeg2-4 libvorbisidec1
Vorgeschlagene Pakete:
  libdirectfb-extra lirc fonts-freefont-ttf mplayer-doc netselect | fping
Die folgenden NEUEN Pakete werden installiert:
  liba52-0.7.4 libdirectfb-1.7-7 libenca0 libgles2 liblirc-client0 libmad0
  libmpeg2-4 libvorbisidec1 mplayer
0 aktualisiert, 9 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen 3'758 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 10.5 MB Plattenplatz zusätzlich benutzt.

SUSE Linux

Ubuntu 7.04 Feisty Fawn

Installation von mplayer 2.1.0~rc1 (Pakete "mplayer" und "mozilla-mplayer") über die Synaptic-Paketverwaltung.

Zusätzliche Codecs werden wie folgt installiert.

# wget ftp://ftp1.mplayerhq.hu/MPlayer/releases/codecs/essential-20061022.tar.bz2
# tar jxvf essential-20061022.tar.bz2
# mkdir /usr/lib/win32
# cp essential-20061022/* /usr/lib/win32

Ubuntu 8.04 Hardy Heron

Installation von Mplayer 2.1.0~rc2 (Pakete "mplayer" und "mozilla-mplayer") über die Synaptic-Paketverwaltung.

Installation zusätzlicher Codecs.

$ wget ftp://ftp1.mplayerhq.hu/MPlayer/releases/codecs/essential-20071007.tar.bz2
$ tar jxvf essential-20071007.tar.bz2
$ sudo mkdir /usr/lib/win32
$ sudo cp essential-20071007* /usr/lib/win32

Noch einfacher lassen sich die zusätzlichen Codecs aus dem Repository "Medibuntu" über das Paket "w32codecs" installieren.

Konfiguration

Dateien

Systemweite Einstellungen in der Datei "/etc/mplayer/mplayer.conf"

Benutzereinstellungen in der Datei "~/.mplayer/config"

Input bindings (siehe "-input keylist" für die vollständige keylist) in "~/.mplayer/input.conf"

Schriftartenverzeichnis (es muss eine Datei "font.desc" sowie Dateien mit dem Suffix ".raw" geben) in der Datei "~/.mplayer/font/"

Skins im Verzeichnis "/usr/local/share/mplayer/Skin"

Anlegen der Dateien für die Benutzereinstellungen.

$ cd /tmp/MPlayer-1.0pre7try2/etc
$ cp codecs.conf input.conf ~/.mplayer
$ cp example.conf ~/.mplayer/config

Bearbeiten der Benutzereinstellungen.

$ vi ~/.mplayer/config
joystick=0
lirc=0
# vo=xv
ac=mad,ffmp2,
ao=alsa
cache=3000
cache-min=60
fs=yes
stop-xscreensaver="no"

# Untertitel mit Zeichensatz UTF-8
utf8=true
# vi /etc/rc.d/boot.local
# Needed by mplayer to avoid message "Linux RTC init error in ioctl"
echo 1024 > /proc/sys/dev/rtc/max-user-freq

Verwendung

Programmaufruf auf Konsole.

$ mplayer

Abspielen der neuesten MP4-Datei im aktuellen Verzeichnis.

$ mplayer "$(ls -1tr *.mp4 | tail -1)"

Programmaufruf der grafischen Benutzeroberfläche.

# chmod 664 /dev/rtc
$ gmplayer

Abspielen einer eingelegten Audio-CD.

$ mplayer cdda://*

Ausgeben eines Audio-Rohdaten-Streams in die Datei "./stream.dump" (nützlich mit MPEG/AC3).

$ mplayer -dumpaudio -dumpfile dumpfilename

Ausgeben eines Rohdaten-Streams in die Datei "./stream.dump" (nützlich beim Auslesen einer DVD oder aus dem Netzwerk).

$ mplayer -dumpstream -dumpfile dumpfilename

Erzwingen eines Neuaufbau des Filmindex. Nützlich bei Dateien mit defektem Index (desyncs, usw.). Danach ist auch die Suchfunktion über die Pfeiltasten möglich. Mit MEncoder kann ein Index auch permanent geflickt werden (siehe Dokumentation). Dieser Neuaufbau ist nur möglich, wenn das vorliegende Medium die Suche unterstützt (also nicht mit stdin, pipe, usw.).

$ mplayer -forceindex file

Neuaufbau des Index für die AVi-DAtei "file.avi", wenn kein Index gefunden wird, und dadurch Ermöglichung der Suchfunktion. Nützlich bei defekten oder unvollständigen Download-Dateien oder schlecht erzeugten AVI-Dateien. Dieser Neuaufbau ist nur möglich, wenn das vorliegende Medium die Suche unterstützt (also nicht mit stdin, pipe, usw.)

$ mplayer -idx file.avi

Abspielen im Vollbildschirm-Modus (mittet den Film ein und erzeugt schwarze Balken um ihn herum). Verschieben mit der F-Taste (nicht alle Videoausgaben unterstützen das). Siehe auch "-zoom".

$ mplayer -fs file

Einrichten, an welcher Position auf dem Bildschirm sich die Ausgabe bei Beginn befinden soll. Die x- und y-Angaben sind in Pixeln zu machen, gemessen von der linken oberen Bildschirmecke bis zur linken oberen Ecke des Bildes, das angezeigt werden soll.
Achtung: Diese Option wird nur von vo x11, xmga, xv, xvmc, xvidix, directx und tdfxfb unterstützt.

$ mplayer -geometry 50:40 file

Abspielen der Datei "movie.mpg" über den Framebuffer ("-vo fbdev") und Skalierung auf eine Auflösung von 800x600 Pixeln ("-vf scale=800:600").

$ mplayer -vo fbdev -fs -vf scale=800:600 movie.mpg

Abspielen der in der Online-Playlist enthaltenen Titel des Radiosenders MotorFM.

$ mplayer -playlist http://85.25.145.179/motorfm.mp3.m3u

Erzwingen des MP3-Codec "l3codeca.acm".

$ mplayer -ac mp3acm file

Versuche zuerst libmad, dann andere Audio-Codecs.

$ mplayer -ac mad file

Try hardware AC3 passthrough, then software AC3 codec, then others (the ',' sign).

$ mplayer -ac hwac3,a52, file

Versuche andere Audio-Codecs ausser Ffmpeg's MP3-Decoder.

$ mplayer -ac -ffmp3 file

Verfügbare (einkompilierte) Video-Codec-Familien bzw. -Gerätetreiber.

$ mplayer -vfm help

Verfügbare (einkompilierte) Audio-Codec-Familien bzw. -Gerätetreiber.

$ mplayer -afm help

Erzeugen einer PCM-Ausgabe der Datei "file.wma" in die Datei "audiodump.wav" im aktuellen Verzeichnis.

$ mplayer file.wma -ao pcm

Um Xv einzuschalten.

$ mplayer -vo xv movie.avi

...

$ mplayer -zoom -x 1600 -y 1200 film

...

$ mplayer -vo x11 file.avi

...

$ mplayer -ac ffmp2 file.mpg
$ mplayer -cdda speed=4 paranoia=2 noskip

Abspielen einer Videodatei, wobei nur der Ton ausgegeben wird, nicht aber das Bild.

$ mplayer -vc null -vo null file

Abspielen nur der ersten 3 Sekunden einer Datei

Im aktuellen Verzeichnis werden die ersten drei Sekunden aller Dateien abgespielt, die auf ".mp3" enden.

$ mplayer -endpos 3 *.mp3

Abspielen eines Ausschnitts einer Datei

Von der Datei "file.xyz" wird ein Ausschnitt abgespielt, der ab Sekunde 313 beginnt und 17 Sekunden lang dauert.

$ mplayer -ss 313 -endpos 17 file.xyz

Wiederholtes Abspielen dieses Ausschnitts.

$ mplayer -loop 0 -ss 313 -endpos 17 file.xyz

...

$ mplayer -fs -loop 0 -ss 389 -endpos 8 file.xyz

Abspielen mehrerer Dateien

Siehe https://unix.stackexchange.com/questions/9496/looping-through-files-with-spaces-in-the-names

Abspielen aller Dateien mit Endung ".mp4" im aktuellen Verzeichnis, wobei bloss jeweils die ersten vier Sekunden (von Sekunde 0 bis 4) des Videos angezeigt werden, bevor zum nächsten Video gewechselt wird.

$ find . -type f -name '*.mp4' -exec sh -c '
    for datei
      do
      echo "${datei}"
      mplayer -fs -ss 0 -endpos 4 "${datei}"
      done
    ' exec-sh {} +

Mit folgendem Befehl wird nach jedem Video eine Pause eingelegt - erst nach Drücken der Taste "RETURN" geht's weiter.

$ find . -type f -name '*.mp4' -exec sh -c '
    for datei
      do
      echo "${datei}"
      mplayer -fs -ss 0 -endpos 4 "${datei}"
      read line </dev/tty
      done
    ' exec-sh {} +

Abspielgeschwindigkeit

$ mplayer -speed 1.5 foo.avi

Ausgabe am Bildschirm

Weniger Informationen. (5 = Standard)

$ mplayer -msglevel all=1 foo.avi

Bildausschnitt

Breite:Höhe:Position X-Achse:Position Y-Achse

$ mplayer -vf rectangle=500:500:500:100 file.mp4
$ mplayer -vf crop=500:500:500:100 file.mp4

Bildschirmausgabe

Erhebliche Verringerung der Textausgabe im Terminal. "-1" entspricht "absolute Stille", gibt aber dennoch einige zeilen aus.

$ mplayer -msglevel all=-1 file.avi
do_connect: could not connect to socket
connect: No such file or directory

Das Unterdrücken der vollständigen Textausgabe im Terminal funktioniert aber wie folgt.

$ mplayer file.avi > /dev/null 2>&1

Bildschirmgrösse

Haben die Cowboys alle etwas kurze Beine oder ist die Weltkugel von Universal Pictures plattgedrückt, so liegt das höchstwahrscheinlich an einem falschen Bildverhältnis.

$ mplayer -aspect 1.3333 file.avi
$ mplayer -aspect 1.7777 file.avi

Bildschirmposition

Anzeige des Fensters an Bildschirmposition Position x=10 und y=100.

$ mplayer -loop 0 -xy 800 -geometry 10:100 file.mpg

Bildschirmkopien

Aus der abgespielten Filmdatei "file.avi" können mit der Taste "s" Bildschirmkopien im PNG-Format erstellt werden, welche im Arbeitsverzeichnis abgespeichert werden.

$ mplayer -vf screenshot file.avi

Bluray-Disc abspielen

$ mplayer br:///dev/sr0

Extraktion der Tonspur

Im Allgemeinen können folgende Optionen verwendet werden.

Extraktion der Tonspur ohne Bearbeitung.

-dumpaudio -dumpfile newaudio.extension

Ausgabe der Ergebnisdatei als WAV-Datei "newaudio.wav".

-ao pcm -aofile newaudio.wav

Benutzung separater Audio-Dateien

Manchmal soll eine andere Ton-Datei zusammen mit dem Video abgespielt werden.

Abspielen des Videos aus der Datei "myvideo.avi" und den Ton aus der Datei "anotherlang.mp3".

$ mplayer -audiofile anotherlang.mp3 myvideo.avi

Auf diese Weise können mehrere Sprachversionen als separate Audiodateien verfügbar gemacht werden. Eine häufig verwendete Kombination ist die Verwendung der englischen Tonspur in der AVI-Datei und die zusätzliche Erzeugung anderer Tonspuren als separate Dateien.

Entfernung von Kammartefakten

Unter den verschiedenen Interlacing-Funktionen waren mir die folgenden beiden nützlich.

$ mplayer -vf tfields=1 filmdatei
$ mplayer -vf lavcdeint filmdatei

Bild rotieren

Folgende Einstellung dreht das Video um 90 Grad im Uhrzeigersinn.

$ mplayer -vf rotate=1 filmfile

Sprache

Anzeige der verfügbaren Audio-IDs. Im Beispiel sind die Audio-IDs 1, 2 und 3 verfügbar.

$ mplayer -v file.avi | grep "Audio stream found"
[aviheader] Audio stream found, -aid 1
[aviheader] Audio stream found, -aid 2
[aviheader] Audio stream found, -aid 3
CTRL+C
$ mplayer -aid 1 file.avi

Untertitel

$ mplayer -subfont-autoscale file.avi
$ mplayer -subfont-text-scale 3 file.avi

Vorhandene Untertitel können mit der Taste "V" aus- und wieder eingeblendet werden. Dies funktioniert natürlich nicht bei Filmdateien, bei denen die Untertitel direkt Teil des dargestellten Bildes sind.

Untertitel müssen - abgesehen von der Endung - denselben Namen wie die betreffende AVI-Datei haben. Sind im selben Verzeichnis die Dateien "movie.avi" und "movie.srt" vorhanden, so wird die Datei "movie.avi" mit Untertiteln der Datei "movie.srt" abgespielt.

$ mplayer -aid 1 film.mkv
...
libavformat version 59.27.100 (external)
libavformat file format detected.
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (ac3), -aid 0, -alang ger, German Line (PSO)
[lavf] stream 2: audio (eac3), -aid 1, -alang eng, English Line Mix (Experimental) AMC
[lavf] stream 3: audio (eac3), -aid 2, -alang eng, English V3 Collective Own
[lavf] stream 4: audio (eac3), -aid 3, -alang eng, English 2nd Audio Collective Own 
[lavf] stream 5: audio (eac3), -aid 4, -alang eng, English 3nd Audio Collective Own
[lavf] stream 6: audio (eac3), -aid 5, -alang spa, Latino Digital Collective Own
[lavf] stream 7: subtitle (srt), -sid 0, -slang ger, Forced German
[lavf] stream 8: subtitle (srt), -sid 1, -slang eng, Forced English
[lavf] stream 9: subtitle (ssa), -sid 2, -slang eng, Forced English Blackbar
[lavf] stream 10: subtitle (ssa), -sid 3, -slang ger, Forced German Blackbar
[lavf] stream 11: subtitle (ssa), -sid 4, -slang ger, Forced German Blackbar Big
[lavf] stream 12: subtitle (ssa), -sid 5, -slang eng, Forced English Blackbar Big
VIDEO:  [H264]  1920x888  0bpp  23.976 fps    0.0 kbps ( 0.0 kbyte/s)
...

Vergrössern

$ mplayer -vf scale -zoom -xy 800 datei.mp4

Zufällige Titel abspielen

FAQ

Audio- und Videospur laufen nicht synchron

Gründe für nicht synchron laufende Audio- und Videospuren gibt es mehrere. Ebenso gibt es mehrere Möglichkeiten zur Behebung des Problems - zu all den genannten Schaltern sollte bei Bedarf auch der jeweilige Eintrag in der Manpage ("man mplayer") zu Rate gezogen werden:

  • Während dem Ablaufen der Filmdatei kann mit den Tasten "+" und "-" die Audioverzögerung ("A-V delay") mit jedem Tastendruck um 100 ms (0.1 Sekunde) vergrössert bzw. verringert werden.
  • Der Schalter "-autosync Faktor" passt die A-V-Synchronisation auf der Grundlage von Messungen der Audioverzögerung an.
  • Der Schalter "-delay Sekunden" vergrössert oder verkleinert die Audioverzögerung und kann in positiven oder negativen Fliesskommawerten angegeben werden.
  • Der Schalter "-mc Sekunden pro Frame" bestimmt die maximale A-V-Sync-Korrektur pro Frame in Sekunden.
  • Der Schalter "-ni" erzwingt bei AVI-Dateien die Verwendung des non-interleaved AVI-Parsers.
  • Der Schalter "-nobps" verhindert bei AVI-Dateien mit defektem Header die Verwendung des durchschnittlichen Byte/Sekunden-Wertes für die A-V-Synchronisation
  • Je nach dem soll bei fehlerhaften Audio-Gerätetreibern auch der Schalter "-ao oss" (anstelle des standardmässigen "-ao alsa") etwas bringen.

Ist die Audiospur immer mit demselben Wert zu schnell oder zu langsam, so lässt sich dies normalerweise mit einer der oben genannten Möglichkeiten beheben. Ich hatte jedoch auch schon Filmdateien, die am Anfang wenig Verzögerung der Audiospur hatten, die Verzögerung wurde mit der Dauer des Films aber immer grösser (zuletzt 20 Sekunden). In diesem Fall half nur das gelegentliche Drücken der Tasten "+" bzw. "-" um die Synchronisation wieder herzustellen.

Beim Abspielen einer Filmdatei erscheint am unteren Bildschirmrand folgende Zeile. Es ist ganz nützlich zu wissen, was die einzelnen Werte zu bedeuten haben.

A:  34.9 V:  34.9 A-V:  0.000 ct:  0.000 1047/1047  6%  0%  1.3% 16 0 49% 
|        |        |           |          |    |     |   |   |    |  | |
|        |        |           |          |    |     |   |   |    |  | Grösse des Cache (um 50% ist normal)
|        |        |           |          |    |     |   |   |    |  Aktuelle Stufe des Image Postprocessing (bei Verwendung von "-autoq")
|        |        |           |          |    |     |   |   |    Anzahl zu verwerfender Frames, um die A-V-Synchronisation zu erhalten
|        |        |           |          |    |     |   |   Prozessorverwendung durch den Audiocodec
|        |        |           |          |    |     |   Prozessorverwendung durch video_out
|        |        |           |          |    |     Prozessorverwendung durch den Audiocodec (for slices and DR this includes video_out)
|        |        |           |          |    Anzahl dekodierter Frames (gezählt ab dem letzten Suchvorgang)
|        |        |           |          Anzahl abgespielter Frames (gezählt ab dem letzten Suchvorgang)
|        |        |           Gesamt durchgeführte A-V-Sync-Korrektur
|        |        Audio-Video-Unterschied in Sekunden (Verzögerung / delay)
|        Video-Position in Sekunden
Audio-Position in Sekunden

Was diese Zahlen im Fall einer Audioverzögerung genau nützen sollen, ist mir allerdings nicht klar. Untenstehende Zeile war beispielsweise in einem Film an einer Position zu sehen, an der ich mittels der Taste "-" bereits 12000 ms Audioverzögerung eingestellt hatte, um Video und Audio synchron zu halten.

A:1609.2 V:1609.2 A-V:  0.000 ct:  0.152 48229/48229  6%  0%  1.1% 0 0 49%

Audiospur wechseln

Gegeben ist eine mkv-Datei.

$ mplayer film.mkv
MPlayer 1.3.0 (Debian), built with gcc-8 (C) 2000-2016 MPlayer Team
do_connect: could not connect to socket
connect: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing film.mkv
libavformat version 58.20.100 (external)
libavformat file format detected.
[lavf] stream 0: video (hevc), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang eng, 2.0 Riff
[lavf] stream 2: audio (aac), -aid 1, -alang eng, 5.1 Movie
[lavf] stream 3: subtitle (srt), -sid 0, -slang eng
VIDEO:  [HEVC]  1920x816  0bpp  23.976 fps    0.0 kbps ( 0.0 kbyte/s)
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
libavcodec version 58.35.100 (external)
Selected video codec: [ffhevc] vfm: ffmpeg (FFmpeg HEVC / H.265)
...

Im aktuellen Fall kann mit der Taste "#" zwischen der Spur 0 (mit Rifftrack), der Spur 1 (ohne Rifftrack) und einer tonlosen Spur ohne Nummer gewechselt werden.

Verzögerung beim Abspielen

Bei manchen Dateien dauert es nach dem Aufruf von mplayer etwa drei sekunden, bis die Datei tatsächlich abgespielt wird.

Zum Abstellen dieses Verhaltens wurden erfolglos folgende Schalter versucht:

-vo xv
-vo x11
-ao pulse 

Den genauen Grund für dieses Verhalten kenne ich nicht, derzeit auch keine Lösung.

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen
Mplayer Project eng MPlayerwbm Offizielle Homepage
NJIT eng FAQwbm
Mauriat Miranda eng MPlayer : Fedora guidewbm
Wikipedia ger Mplayerwbm Enzyklopädischer Artikel