Schon vor geraumer Zeit hatte sich mit mplayer2 ein Fork von mplayer abgespaltet. Ich kann zumindest sagen, dass nur mplayer2 (im Gegensatz zum originalen mplayer) bei mir in der Lage war, auch bei 24p-Wiedergabe lippensynchron zu bleiben. Nun ist anscheinend bei mplayer2 die Luft raus, und die meisten Entwickler haben sich jetzt bei mpv zusammengefunden, um noch radikaler alte Zöpfe abzuschneiden. Meine Erfahrung ist, dass einige Files (z.B. mkv's in 1080i) mit mplayer2 nicht liefen und nun erstmals richtig abgespielt werden.
Da es für Ubuntu 12.04 bzw. yavdr 0.5 keine Debian-Pakete gibt, habe ich mpv mal aus den Sourcen kompiliert und ein Debian-Paket gebaut. Um das ganze mit dem mplayer-Plugin zum Laufen zu bekommen, waren an meinem alten Script (das ich hier im Forum verschiedentlich schon mal gepostet hatte) etliche Anpassungen erforderlich, da sich die gesamte Syntax bei mpv geändert hat.
Ich beschreibe hier mal Schritt für Schritt was zu tun ist, um das ganze auf einem yavdr 0.5 zum Laufen zu bekommen. Ziel ist, Videos z.B. im mkv-Format mittels vdpau abzuspielen und an einem LCD-TV mit 1920x1080 auszugeben, der standardmäßig auf 50Hz läuft. Das Skript ist in der Lage, den TV je nach Framerate des Videos automatisch auf z.B. 24Hz einzustellen und bei Rückkehr in den VDR-TV-Betrieb wieder auf 50Hz zurückzuschalten.
Zunächst wechselt Ihr in Eurem yavdr in Euer home-Verzeichnis und ladet dort das Debian-Paket runter (ich habe kein repository und habe auch nicht vor, eines einzurichten):
anschließend installiert Ihr das Paket manuell:
Es kommen wahrscheinlich Hinweise auf nicht erfüllte Abhängigkeiten. Diese löst Ihr wie folgt auf:
mpv ist jetzt installiert!
Falls Ihr das mplayer-Plugin noch nicht installiert habt, holt dies jetzt nach:
Hier werden jetzt vermutlich eine Reihe von zusätzlichen Paketen mit installiert.
Im nächsten Schritt müssen wir nun dafür sorgen, dass ein auf mpv abgestimmtes mplayer-Script angelegt wird. Hierzu gehen wir den Weg, ein custom template zu erstellen:
sudo mkdir -p /etc/yavdr/templates_custom/usr/share/vdr-plugin-mplayer/mplayer
cd /etc/yavdr/templates_custom/usr/share/vdr-plugin-mplayer/mplayer
sudo wget http://home.arcor.de/directorskinner/40_softhddevice
Dieses Script benötigt noch einige Anpassungen je nach individuellem System. Es geht hierbei um die Zeilen für den Parameter AO (Audio Out) und CONNECTION (an welchem Anschluss der Grafikkarte hängt der LCD?).
#HDMI:
#AO="--ao=alsa:device=[hw:1,3] --ad=spdif:ac3,spdif:dts"
#Mainboard SPDIF:
#AO="--ao=alsa:device=[hw:0,1] --ad=spdif:ac3,spdif:dts"
AO="--ao=alsa:device=iec958,AES0=0x06 --ad=spdif:ac3,spdif:dts"
#CONNECTION="DVI-I-1"
CONNECTION="HDMI-0"
Alles anzeigen
Vorbelegt ist meine Konfiguration, bei der der Ton per SPDIF des Mainboards und mit Passthrough für Dolby Digital und DTS ausgegeben wird. Den richtigen Anschluss für CONNECTION kann man mittels xrandr ermitteln:
martin@ubuntuvdr1:~$ export DISPLAY=:1
martin@ubuntuvdr1:~$ xrandr
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 16384 x 16384
DVI-I-0 disconnected (normal left inverted right x axis y axis)
VGA-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 160mm x 90mm
1920x1080 60.0 + 59.9 59.9 50.0* 30.0 25.0 24.0 30.0 30.0 25.0
1920x1200 60.0
1680x1050 60.0 59.9
1600x1200 60.0
1440x900 75.0 59.9
1400x1050 74.8 70.0 60.0
1360x768 60.0 60.0 59.8
1280x1024 75.0 60.0
1280x960 60.0
1280x800 59.8
1280x720 60.0 59.9 50.0
1152x864 75.0 75.0 70.0 60.0
1024x768 75.0 70.1 60.0
960x600 120.0
960x540 120.0
840x525 139.8 120.0 119.8
832x624 74.6
800x600 75.0 72.2 60.3 56.2
720x576 50.0
720x480 59.9
720x450 119.8
700x525 149.5 120.0
680x384 119.9 119.6
640x480 75.0 72.8 72.8 59.9
512x384 140.1 120.0
400x300 144.4
320x240 145.6 120.1
Alles anzeigen
Da hier "HDMI-0 connected" steht, ist also CONNECTION="HDMI-0" richtig.
Hinweis: Falls Euer TV nicht auf 1920x1080 Full-HD-Auflösung läuft, müsst Ihr noch an zwei Stellen im Script beim xrandr-Aufruf den mode-Parameter anpassen
Für AO sind bereits andere Beispiele vorhanden und auskommentiert. Hier müsst Ihr selbst das richtige Gerät finden und konfigurieren. Nochmal der Hinweis: Die Syntax ist eine andere als bei mplayer!
Wenn das Script-Template fertig konfiguriert ist, erstellen wir nun das neue Script /usr/share/vdr-plugin-mplayer/mplayer:
Wir sind aber noch nicht fertig. Für die Prüfung, welche Framerate ein Video hat, gibt es bei mpv die Option -identify nicht mehr. Diese Aufgabe übernimmt nun ein separates Script, das die mpv-Macher leider nicht dem Debian-Paket beifügen.
sudo mkdir /usr/share/mpv
cd /usr/share/mpv
sudo wget https://github.com/mpv-player/mpv/raw/master/TOOLS/mpv_identify.sh
sudo chmod +x mpv_identify.sh
Nun definieren wir die Tasten, mit denen mpv per Fernbedienung gesteuert wird. (Ich habe hierzu die gültigen Namenskonvention benutzt, so wie sie auch in der lircd.conf stehen sollten. Wert seine Tasten dort anders benannt hat, muss das entsprechend anpassen.)
Es wird die Datei /etc/lirc/lircrc editiert
und um folgende Einträge ergänzt:
begin
prog = mpv
button = KEY_2
config = discnav up
end
begin
prog = mpv
button = KEY_4
config = discnav left
end
begin
prog = mpv
button = KEY_5
config = discnav select
end
begin
prog = mpv
button = KEY_6
config = discnav right
end
begin
prog = mpv
button = KEY_8
config = discnav down
end
begin
prog = mpv
button = KEY_0
config = discnav menu
end
begin
prog = mpv
button = KEY_1
config = seek_chapter -1
end
begin
prog = mpv
button = KEY_3
config = seek_chapter +1
end
begin
prog = mpv
button = KEY_RECORD
config = dvdnav prev
end
begin
prog = mpv
button = KEY_LEFT
config = seek -10
repeat = 1
end
begin
prog = mpv
button = KEY_9
config = add audio-delay 0.100
end
begin
prog = mpv
button = KEY_7
config = add audio-delay -0.100
end
begin
prog = mpv
button = KEY_GREEN
config = seek -60
repeat = 1
end
begin
prog = mpv
button = KEY_RIGHT
config = seek +10
repeat = 1
end
begin
prog = mpv
button = KEY_YELLOW
config = seek +60
repeat = 1
end
begin
prog = mpv
button = KEY_OK
config = show_progress
end
begin
prog = mpv
button = KEY_PAUSE
config = cycle pause
end
begin
prog = mpv
button = KEY_MENU
config = osd
end
begin
prog = mpv
button = KEY_MODE
config = cycle audio
end
begin
prog = mpv
button = KEY_RED
config = add chapter -1
end
begin
prog = mpv
button = KEY_BLUE
config = add chapter 1
end
begin
prog = mpv
button = KEY_ESC
config = quit
end
begin
prog = mpv
button = KEY_DOWN
config = add chapter -1
repeat = 1
end
begin
prog = mpv
button = KEY_UP
config = add chapter 1
repeat = 1
end
begin
prog = mpv
button = KEY_SUBTITLE
config = cycle sub
end
begin
prog = mpv
button = KEY_INFO
config = show_text "${filename}"
end
Alles anzeigen
Zur Erläuterung:
Der Zahlenblock bildet gewissermaßen ein Navigationskreuz für DVD-Menüs. Die 2 bzw. die 8 stehen für Pfeiltasten rauf und runter. Ebenso sind 4 bzw. 6 für Links und Rechts. In der Mitte dient die 5-Taste als Select- bzw. Entertaste. Ansonsten denke ich, ist das weitgehend selbsterklärend. Man muss natürlich daran denken, dass die eigene FB ggf. weniger Tasten hat, so dass nicht alle der oben verwandten Tasten in der lircd.conf auch angelegt sind.
Damit das ganze richtig funktioniert, muss in den Plugin-Einstellungen des mplayer-Plugins der Kontroll-Modus "traditionell" eingestellt werden. Sobald das mplayer-Plugin einen Film aufruft, gibt es kein vdr-OSD-Menü mehr und vdr hört auf, auf die FB zu reagieren. Erst mit dem Beenden der Wiedergabe und Rückkehr ins vdr-Menü (mittels der KEY_ESC-Taste, die vdr für die Back-Funktion benutzt) reagiert der vdr wieder auf die Fernbedienung.
mpv stellt ein rudimentäres eigenes Menü zur Verfügung.
Wenn Ihr soweit seid, dass Ihr den ersten Film abspielen wollt, empfehle ich Euch zu Diagnosezwecken zwei Maßnahmen:
Macht am besten per ssh zwei Konsolen auf. Auf der einen gebt Ihr
ein. Auf der anderen loggt Ihr die Ausgabe von mpv. Dazu ist es erforderlich, dass zunächst die log-Datei angelegt und für vdr berechtigt wird:
Anschließend machen wir eine vorübergehende Änderung im Script, aus Vereinfachungsgründen direkt ohne template:
Hier wird am Ende der Datei die Auskommentierung geändert:
Ich empfehle dringend, dies wieder zurückzuändern, sobald die Einrichtung geklappt hat und Filme abgespeilt werden könnne. Es ist einfach zuviel, was da ständig geloggt wird.
Einstweilen wird die Anzeige des logs gestartet:
Nun könnt Ihr einen Film auswählen, der in /media/Video entweder lokal oder im eingebundenen NFS liegt. Wenn der Film nicht startet, sondern nach wenigen Sekunden das vdr-Bild wiederkommt, liefern die beiden logs wichtige Hinweise, wo der Fehler zu suchen ist.