Mplay.sh

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Beschreibung

Autor: Thomas Hildebrandt

Das (zweifelsohne sehr gute) Script 'mplayer.sh' weist einige Beschränkungen auf, deren Beseitigung ich mit der Entwicklung dieses Scriptes anstrebte.

Konkret sind das:

  • Anzeige im OSD des VDR

Die Anzeige des kompletten Dateinamens im OSD (inkl. Extension) fand ich persönlich immer nicht so schick. Ein Eintrag, nur aus z.B. dem Namen des Films gefällt mir besser.

  • gemischte Playlists mit verschiedenen Dateitypen

Jede Datei kann ihre eigene Konfiguration bekommen. Das ist meines Wissens mit MPlayer's '-playlist' Option schlicht nicht zu realisieren.

Status

Version:

  • 0.5.3

getestet mit:

  • MPlayer-1.0rc1-3.4.1


Hardwareanforderungen

  • irgendetwas, worauf MPlayer etwas abspielen kann

Softwareanforderungen

Installation

  • kopiere die 'mplay.sh' an einen dir genehmen Ort (z.B. /usr/bin)
  • kopiere die Dateien im Verzeichnis 'conf' an einen dir genehmen Ort (z.B. ins VDR Konfigurationsverzeichnis unter 'plugins/mplay'
  • editiere die 'mplay.sh' und trage oben das von dir gewählte Konfigurationsverzeichnis ein (Zeile 16)
  • VDR muss so aufgerufen werden, dass das MPlayer-Plugin als Parameter 'mplay.sh' bekommt
  • Korrektur der Parameter in den Konfigurationsdateien im Konfigurationsverzeichnis
  • evt. anpassen der Parameter in der 'mplayersources.conf'

Konfiguration

mplayrc (Beispiel)

Datei
$CONFDIR/mplayrc
# mplayrc
# configuration file for 'mplay'

# set this to find debug messages in syslog
#MPLAY_DEBUG=yes

# set this, if your VDR doesn't stop to play its sound, when
# invoking 'mplay.sh'
#MPLAY_FIXVDRSOUND=yes

# media root dir (the trailing slash is important)
MPLAY_MEDIA_DIR=/media

# media types to search for in MDIR
# (when no file is given in a set file)
MPLAY_TYPES="avi mpg mkv mov flv vob vdr"

# where or what is our 'mplayer'
MPLAY_MPLAYER=mplayer

# where is 'mplayer-multi' (if you need it)
#MPLAY_MULTI=mplayer-multi

# support file for playing
# (in case of problems maybe set this to an absolute path)
MPLAY_PLAY=~/mplay.play
#MPLAY_PLAY=/video/mplay.play

### default video out
MPLAY_VOUT="mpegpes"
# use this, when output card is not the first (and only)
#MPLAY_VOUT="mpegpes:card=1"

### default audio out
MPLAY_AOUT="mpegpes"
# use this, when output card is not the first (and only)
#MPLAY_AOUT="mpegpes:card=1"

# MPlayer mandatory options
# (this will always passed through to MPlayer)
MPLAY_GLOBAL="-quiet -nolirc -cache 8192 -framedrop"

# automatic identifying file types
MPLAY_IDENTIFY=yes

### target resolutions of video output
# up to 3 resolutions are supported
# (set the highest in MPLAY_RES1)
# this seems to be the most common use
MPLAY_RES1=720x576
MPLAY_RES2=352x288

# try this with a slow cpu
#MPLAY_RES1=352x288

# scale videos up instead of down
MPLAY_SCALE=up

# care for aspect
MPLAY_ASPECT=yes

# when using 'lavc' filter, use it with this argument
MPLAY_LAVC=4600

# option for MPlayer's 'pp' option (very seldom used)
#MPLAY_PP=fd

# padding
#MPLAY_PADDING=20

### global options for subtitle handling
# show subtitles, if found
MPLAY_SUB_SHOW=yes

# languages to display
MPLAY_SUB_LANGUAGES=ger,eng

# vertical position (% of screen height)
MPLAY_SUB_POS=95

# width on screen (% of screen width)
MPLAY_SUB_WIDTH=95

# fps
#MPLAY_SUB_FPS=25

# subtitle delay
#MPLAY_SUB_DELAY=5

# background transparency
#MPLAY_SUB_BG_ALPHA=0

# background 'color' (means grayscale up to now)
#MPLAY_SUB_BG_COLOR=0

# handle sound sets with 'sndctl' plugin
#MPLAY_WITH_SNDCTL=yes

# command for SVDR commands to VDR, if available
MPLAY_SVDR=svdrpsend.pl

# command for logging into syslog
MPLAY_LOGGER="logger -i -t mplay.sh"


Parameter

Jeder der folgenden Parameter kann eigentlich und im Prinzip in jeder der Konfigurationsdateien stehen. Sie können auf diese Weise überschrieben oder ergänzt werden.

MPLAY_AF

  regulär definiert in: SET Datei
          Standardwert: <nicht gesetzt>
          Beschreibung: Parameter für MPLayer's Audiofilter (-af)

'MPLAY_AF' wird direkt in die MPlayer-Option '-af', das sind die Audiofilter.

Die Zeile konkret besteht aus mehreren hintereinander gesetzten Filtern.

sub=120:5 generiert einen Subwooferkanal mit einer Cutoff-Frequenz von 120 Hz und fügt den als Kanal 5 in den Audiostrom

channels=6:5:0:0:1:1:0:2:1:3:5:5 macht aus den (jetzt) 3 Audioströmen (links, rechts und der sub vom vorigen Filter) 6.

   * 6 Ausgabekanäle
   * 5 folgende Routings
   * 0:0 Eingangskanal 0 wird Ausgangskanal 0
   * 1:1 Eingangskanal 1 wird Ausgangskanal 1
   * 0:2 Eingangskanal 0 wird Ausgangskanal 2 (routet das Frontsignal identisch auf einen hinteren Lautsprecher)
   * 1:3 Eingangskanal 1 wird Ausgangskanal 3
   * 5:5 Eingangskanal 5 wird Ausgangskanal 5 (Subwoofer)


equalizer=0:0:0:0:0:-3:-3:0:0:0 ein 10-Band-Equalizer mit folgenden Frequenzen

   * 31.25 Hz
   * 62.50 Hz
   * 125.00 Hz
   * 250.00 Hz
   * 500.00 Hz
   * 1.00 kHz
   * 2.00 kHz
   * 4.00 kHz
   * 8.00 kHz
   * 16.00 kHz


volume=-15:1 Lautstärkeverringerung (ist auf meinem System nötig um den Unterschied zwischen Stereo und 5.1 auszugleichen), die 1 schaltet das Softclipping (Lautstärkebegrenzung) ein

Das Ganze dient dazu, normalen Stereoton (im konkreten Fall Musik) über eine 5.1-Anlage zu schicken und aus allen Lautsprechern einen Ton zu haben.

MPLAY_AOUT

  regulär definiert in: mplayrc
          Standardwert: alsa
          Beschreibung: das Audioausgabegerät für MPlayer

MPLAY_ASPECT

 regulaer definiert in: mplayrc
          Standardwert: yes
          Beschreibung: Wenn gesetzt, versucht 'mplay.sh' die korrekte
                        Auflösung des Videomaterials aus dem von MPlayer
                        ermittelten Aspekt-Ratio zu errechnen.

MPLAY_DD20

 regulaer definiert in: video-a52.conf
          Standardwert: siehe 'video-a52.conf'
          Beschreibung: spezielle Parameter, wenn zwar ein AC3 Audiostrom
                        vorliegt, dieser jedoch "nur" 2.0 ist

MPLAY_DEBUG

  regulär definiert in: mplayrc
          Standardwert: <nicht gesetzt>
          Beschreibung: wenn gesetzt (auf irgendeinen Wert) werden
                        verschiedene Meldungen ins System Log geschrieben

MPLAY_DIRECT

  regulär definiert in: SET Datei
          Standardwert: <nicht gesetzt>
          Beschreibung: ist diese Option gesetzt, wird der MPlayer kommentar-
                        los mit den hiermit gesetzten Parametern und dem
                        Dateinamen aufgerufen;
                        'mplay.sh' beendet sich danach

MPLAY_FILE

  regulär definiert in: SET Datei
          Standardwert: <nicht gesetzt>
          Beschreibung: definiert in einer SET-Datei die Datei, die
                        abgespielt werden soll

MPLAY_FIXVDRSOUND

  regulär definiert in: mplayrc
          Standardwert: <nicht gesetzt>
          Beschreibung: Wenn die Audioausgabe in 'MPLAY_AOUT' auf 'alsa'
                        gesetzt ist, kann es sein, dass der Ton des VDR
                        nebenher weiterläuft. Setz' diesen Wert auf 'yes'
                        und 'mplay.sh' macht einen Workaround für dieses
                        Problem.
                        Kleine Nebenwirkung: Nach Ende von 'mplay.sh'
                        ist der VDR auch stumm bis zur nächsten Betätigung
                        der Lautstärkeregelung.

MPLAY_GLOBAL

  regulär definiert in: mplayrc
          Standardwert: "-quiet -nolirc -cache 8192"
          Beschreibung: globale Optionen für MPlayer

MPLAY_IDENTIFY

  regulär definiert in: mplayrc
          Standardwert: yes
          Beschreibung: bewirkt, dass eine Identifizierung der abzuspielenden
                        Datei versucht wird
                        (ACHTUNG: Wenn dieser Parameter nicht auf 'yes' steht,
                        muss jede einzelne Option in den SET-Dateien manuell
                        gesetzt werden!)

MPLAY_LAVC

  regulär definiert in: mplayrc
          Standardwert: 4600:25
          Beschreibung: betrifft MPlayer's 'lavc'-Videofilter und beschreibt
                        die Datenrate, mit der MPlayer einen on-the-fly
                        MPEG1-Datenstrom erzeugt. Der Wert hängt von der
                        Leistungsfähigkeit des Systems ab und muss probiert
                        werden.
                        Als Ausgangswert mag '4000' dienen. Der Wert kann
                        erhöht werden, bis die Videoausgabe zu ruckeln anfängt.

MPLAY_LOGGER

  regulär definiert in: mplayrc
          Standardwert: "logger -i -t mplay.sh"
          Beschreibung: falls 'MPLAY_DEBUG' gesetzt ist, muss hiermit das
                        Programm definiert werden, das zum Loggen
                        benutzt wird

MPLAY_MEDIA_DIR

  regulär definiert in: mplayrc
          Standardwert: ein existierendes Verzeichnis
          Beschreibung: das Verzeichnis, in dem deine abzuspielenden Dateien
                        liegen

MPLAY_MPLAYER

  regulär definiert in: mplayrc
          Standardwert: mplayer
          Beschreibung: das Kommando, mit dem MPlayer aufgerufen wird

MPLAY_MULTI

  regulär definiert in: mplayrc
          Standardwert: <nicht gesetzt>
          Beschreibung: falls du 'mplayer-multi' benutzt, setze diesen
                        Parameter auf den Namen oder den Pfad des Programms

MPLAY_PADDING

  regulär definiert in: irgendwo
          Standardwert: <nicht gesetzt>
          Beschreibung: erzeugt einen schwarzen Rand um das Video
                        (Ausgleich des Overscans von TV-Geräten)

MPLAY_PLAY

  regulär definiert in: mplayrc
          Standardwert: ~/mplay.play
          Beschreibung: 'mplay.sh' erzeugt eine temporäre Datei, die den
                        kompletten MPlayer-Aufruf enthält. Dieser Parameter
                        kontrolliert, wo diese Datei liegen soll

MPLAY_PLAYLIST

  regulär definiert in: Dateityp-Konfigurationsdatei
          Standardwert: <nicht gesetzt>
          Beschreibung: kennzeichnet den Dateityp als Playlist

MPLAY_PP

  regulär definiert in: mplayrc
          Standardwert: <nicht gesetzt>
          Beschreibung: Optionen für MPlayer's 'pp' Videofilter

MPLAY_RES1, MPLAY_RES2, MPLAY_RES3

  regulär definiert in: mplayrc
         Standardwerte: 720x576
                        640x480
                        352x288
          Beschreibung: Bis zu 3 mögliche Ausgabe-Auflösungen können
                        hiermit definiert werden. Die höchste muss in
                        MPLAY_RES1 stehen. 'mplay.sh' skaliert ein Video
                        abhängig von MPLAY_SCALE auf die nächste, die
                        zur Verfügung steht.
                        MPLAY_RES1 muss immer definiert sein, die anderen
                        können. MPLAY_RES3 wird nicht beachtet, wenn es
                        kein MPLAY_RES2 gibt.
                        (HINWEIS: Die Auflösung 640x480 erzeugt auf
                         manchen Karten kein korrektes oder ein verschobenes
                         Bild.)

MPLAY_RESOLUTION

  regulär definiert in: SET Datei
          Standardwert: <nicht gesetzt>
          Beschreibung: erzwingt die Ausgabe in einer bestimmten Auflösung
                        (ACHTUNG: Im Regelfall wird NICHT jede beliebige
                         Auflösung unterstützt.)

MPLAY_SCALE_ALWAYS

  regulär definiert in: SET Datei
          Standardwert: <nicht gesetzt>
          Beschreibung: erzwingt den Einsatz der MPlayer Videofilter-Option
                        'scale=...', auch, wenn das von der Auflösung her
                        nicht nötig waere (hilft zuweilen gegen
                        Bildstörungen)

MPLAY_SCALE

  regulär definiert in: mplayrc
          Standardwert: up
          Beschreibung: Wenn auf 'up' gesetzt, werden Video-Ausgaben auf die
                        nächstgrössere Auflösung skaliert statt auf die
                        nächstkleinere.
                        (Beispiel: Video ist 640x272, mögliche Auflösungen
                        seien 720x576 und 352x288. Mit 'MPLAY_SCALE=up'
                        wird das Video mit 720x576 abgespielt, ohne den
                        Parameter mit 352x288.)

MPLAY_SOUNDSET

  regulär definiert in: SET Datei
          Standardwert: <nicht gesetzt>
          Beschreibung: definiert in einer SET-Datei das Soundset, mit dem
                        die Datei abgespielt werden soll
                        (siehe auch 'MPLAY_WITH_SNDCTL')

MPLAY_SUB_FILE

 regulaer definiert in: SET Datei
          Standardwert: <nicht gesetzt>
          Beschreibung: spezifiziert eine konkrete Untertitel-Datei

MPLAY_SUB_FPS

 regulaer definiert in: mplayrc
          Standardwert: <nicht gesetzt>
          Beschreibung: abweichende Geschwindigkeit für Untertitel
                        spezifizieren (in fps)

MPLAY_SUB_ID

 regulaer definiert in: SET Datei
          Standardwert: <nicht gesetzt>
          Beschreibung: benutzt statt des Standardwertes '0' eine andere SID
                        für die Untertitel (ermöglicht die Benutzung eines
                        anderen Untertitels, falls mehrere vorliegen)

MPLAY_SUB_LANGUAGES

 regulaer definiert in: mplayrc
          Standardwert: ger,eng
          Beschreibung: Sprachen(liste), die MPlayer als Untertitel anzeigen
                        soll (mehrere Sprachen durch Komma trennen)

MPLAY_SUB_SHOW

 regulaer definiert in: mplayrc
          Standardwert: yes
          Beschreibung: weist 'mplay.sh' an, Untertitel anzuzeigen, wenn diese
                        identifiziert werden

MPLAY_SUB_POS

 regulaer definiert in: mplayrc
          Standardwert: 95
          Beschreibung: die Position der Untertitel in % der Höhe des
                        Bildschirms

MPLAY_SUB_WIDTH

 regulaer definiert in: mplayrc
          Standardwert: 95
          Beschreibung: die maximale Breite der Untertitel in % der Breite des
                        Bildschirms

MPLAY_SUB_DELAY

 regulaer definiert in: mplayrc
          Standardwert: <nicht gesetzt>
          Beschreibung: Verzögerung bei der Anzeige der Untertitel in Sekunden

MPLAY_SUB_BG_ALPHA

 regulaer definiert in: mplayrc
          Standardwert: <nicht gesetzt>
          Beschreibung: Hintergrundtransparenz fuer Untertitel (und OSD)

MPLAY_SUB_BG_COLOR

 regulaer definiert in: mplayrc
          Standardwert: <nicht gesetzt>
          Beschreibung: Hintergrundfarbe für Untertitel (und OSD)

MPLAY_SVDR

  regulär definiert in: mplayrc
          Standardwert: svdrpsend.pl
          Beschreibung: Das Programm, um SVDR Kommandos an VDR abzusetzen.
                        (wird z.B. von 'MPLAY_WITH_SNDCTL' benötigt)

MPLAY_TYPE_OPTIONS

  regulär definiert in: Dateityp-Konfigurationsdatei
          Standardwert: <nicht gesetzt>
          Beschreibung: definiert Optionen speziell für diesen Dateityp

MPLAY_TYPES

  regulär definiert in: mplayrc
          Standardwert: "avi mpg mkv mov"
          Beschreibung: definiert die Dateitypen, nach denen im Medien-
                        verzeichnis gesucht wird

MPLAY_VF

  regulär definiert in: SET Datei
          Standardwert: <nicht gesetzt>
          Beschreibung: Parameter für MPLayer's Videofilter (-vf)

MPLAY_VOUT

  regulär definiert in: mplayrc
          Standardwert: mpegpes
          Beschreibung: das Videoausgabegerät für MPlayer

MPLAY_WITH_SNDCTL

  regulär definiert in: mplayrc
          Standardwert: <nicht gesetzt>
          Beschreibung: wenn auf 'yes' gesetzt wird 'mplay.sh' versuchen, ein
                        Soundset-Handling durchzuführen (per 'sndctl' Plugin)
                        ('MPLAY_SVDR' muss dazu korrekt gesetzt sein)

Dolby Digital

Die Standardkonfiguration ist konservativ auf die Audioausgabe über die DVB-Karte eingestellt. MPlayer muß so einen evt. vorhandenen 5.1-Stream auf Stereo herunterrechnen. Falls 'echter' 5.1-Sound gewünscht ist, sollte man seine Aufmerksamkeit auf die 'mplayrc' und die 'video-52.conf' richten.

  • 5.1 Ausgabe über Soundkarte (ALSA)
 in 'mplayrc'       : MPLAY_AO=alsa
 in 'video-a52.conf': MPLAY_TYPE_OPTIONS="-channels 6" und ggf. MPLAY_DD20 aktivieren
  • AC3-Datenstrom auf externen Decoder/Receiver streamen
 in 'video-a52.conf': MPLAY_TYPE_OPTIONS="-ac hwac3," aktivieren
                      (ungetestet, evt. ein bisschen experimentieren)

Hinweis: Wenn die Ausgabe über die Soundkarte erfolgt, muß ggf. für eine entsprechende Lautstärkeregelung gesorgt werden.

Untertitel

Untertitel werden gemäß dem normalen Handling von MPlayer erkannt und verarbeitet (Dateiname der Untertitel-Datei bis auf die Dateierweiterung identisch zum Filmnamen). Um Untertitel ähnlich flexibel wie alle anderen Dateitypen verarbeiten zu können, wird von 'mplay.sh' nach der Erkennung des Untertiteltyps nach einer entsprechenden Konfigurationsdatei gesucht und diese geladen. Damit können sowohl globale Optionen in der 'mplayrc' gesetzt als auch spezielle für bestimmte Untertiteltypen bestimmt werden.

Beispiel: Wenn zu einer 'Film.avi' eine 'Film.srt' existiert, wird das erkannt und eine evt. vorhandene 'srt.conf' geladen.

Sonstiges

Tipps

  • WICHTIG: Die Dateien/Sets im Anzeigeverzeichnis müssen tatsächlich Dateien sein, KEINE Links
  • Die Dateitypenkonfigurationsdateien für Audiodaten gibt es getrennt für reines Audio und für Audio in Video. So mag manch einer eine reine MP3-Datei anders gespielt haben als wenn der MP3-Ton aus einem Film stammt. Hierzu läßt sich eine spezielle Konfigurationsdatei für jeden Dateityp erstellen.

Im Beispiel: video-mp3.conf - 'mplay.sh' liest die 'video-mp3.conf' statt der 'mp3.conf', wenn ein Videostream identifiziert werden kann.

  • Es gibt keinen Parameter der Art 'SLOWCPU' oder so. Wenn dein Rechner mit 720x576 nicht klarkommt (ruckeln usw.), dann setze 'MPLAY_RES1=352x288' und lass MPLAY_RES2 und MPLAY_RES3 weg oder experimentiere ein wenig mit MPLAY_LAVC.

Probleme

  • Unter bestimmten Bedingungen wird 'mplay.sh' vom VDR mit keinem konkreten Usernamen aufgerufen. In diesem Fall funktioniert die Auflösung von 'MPLAY_PLAY=~/mplay.play' nicht. (Sieht man im Log "~/mplay.play: No such file or directory") Der Pfad ist dann durch einen konkreten Pfad zu ersetzen (z.B. 'MPLAY_PLAY=/tmp/mplay.play')

Links

  1. Download
  2. Mplayer-plugin
  3. MPlayer
In anderen Sprachen