[yaVDR 0.4pre1] vdr-plugin-mplayer für PVR350 anpassen - initctl

  • Als letzten Schritt für meinen SD-TV VDR würde ich gerne noch das mplayer-plugin mit der Hauppauge PVR350 nutzen. Vermutlich ist das ein Thema für Dr. Seltsam, falls etwas brauchbares dabei herauskommt, beschreibe ich gerne meine Vorgehensweise, damit es ggf. in yaVDR einfließen kann.
    Ich habe mir die aktuelle Version des PVR350-Plugins geholt und die Dateien für das mplayer-plugin an die entsprechenden Stellen laut der README.mplayer kopiert, das SUID-Bit für mplayer gesetzt und den Aufruf in der config entsprechend angepasst (die Konfig-Datei wird unter /usr/share/vdr-plugin-mplayer/mplayer.conf erwartet. Der Pfad für svdrpsend muss darin auch noch angepasst werden.


    Ein erster Versuch mit dem mplayer bei gestopptem VDR in der Konsole weist wohl darauf hin, dass man den MPlayer selber mit aktivem cvidix-Treiber kompilieren muss:

    Code
    ich@yavdr04:/usr/bin$ sudo mplayer -ao alsa -vo cvidix -screenw 720 -screenh 576 ~/Matrix.mpg
    MPlayer 1.0rc4-4.5.2 (C) 2000-2010 MPlayer Team
    
    
    Playing /home/ich/Matrix.mpg.
    MPEG-PS file format detected.
    VIDEO:  MPEG2  720x576  (aspect 3)  25.000 fps  9500.0 kbps (1187.5 kbyte/s)
    vo_cvidix: No vidix driver name provided, probing available ones (-v option for details)!


    Der Patch aus dem pvr350-plugin von Dr. Seltsam lässt sich problemlos anwenden, die .configure habe ich entsprechen der REAME.mplayer angepasst und das gebaute Paket wurde ohne Probleme installiert.
    Danach kann ich eine mpg-Datei problemlos über den Videoausgang abspielen:

    Code
    sudo mplayer -ao alsa -vo cvidix -screenw 720 -screenh 576 Matrix.mpg


    Wenn wie in der README.mplayer empfohlen

    die Option MPLAYER="sudo /usr/bin/mplayer" verwendet wird, klappt die Wiedergabe über das mplayer-Plugin nicht (wird das sudo nicht übergeben, bleibt der Bildschirm schwarz):


    @ Dr. Seltsam:

    • kann es sein, dass die mplayer-pvr350.sh nicht Leerzeichen-sicher ist (Das Escapen des Leerzeichens mit \ klappt auch nicht)?
    • Ist es möglich ivtv für die Audioausgabe des mplayer zu benutzen (war beim Kompilieren deaktiviert und ich meine mal gelesen zu haben, dass diese Option Probleme macht)?
    • Beeinträchtigt der Patch für ivtv_vid.c andere Ausgabegeräte, so dass es hinderlich wäre eine gepatchte Version des mplayers in die yaVDR PPAs aufzunehmen?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    Einmal editiert, zuletzt von seahawk1986 ()

  • Ich habe jetzt mal in der mplayer-pvr350.sh alle Zeilen, in denen $CMDLINE zusammengebaut wird mit einem sudo versehen und nun folgende Fehlermeldung:


    Mit dem gleichen Befehl vom Terminal aus läuft der Film aber:

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Moin!


    Beeinträchtigt der Patch für ivtv_vid.c andere Ausgabegeräte, so dass es hinderlich wäre eine gepatchte Version des mplayers in die yaVDR PPAs aufzunehmen?


    Nein, andere Ausgabegeräte sollten nicht beeinflusst werden. Es wurde nur korrigiert, dass mplayer das richtige Ausgabedevice und den passenden Framebuffer für die PVR350 findet (wenn es um den Patch geht, den ich seinerzeit mal gebaut habe).


    Lars.

  • wenn es um den Patch geht, den ich seinerzeit mal gebaut habe


    Ist dieser hier: http://pastebin.com/mNqJMTtV
    Läuft das mplayer-Plugin auf deinem "verpanschten" yaVDR 0.2?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Moin!


    Ja, das sieht so aus, wie von mir.


    Ich hab's auf meinem vdr nicht installiert, weil ich's nicht mehr brauche. Mein TV und mein Blu-ray-Player spielen alles mögliche vom Stick ab.


    Lars.

  • die Lösung mit "root-privileges" stammt nicht von mir, sondrn hier aus dem Forum. War evtl. mini73 (?).
    Ich selbst habe es nie probiert, da mein vdr immer als root lief. Es haben aber schon andere Debianer mplayer für pvr350 zum Laufen gekriegt, also muss es prinzipiell funktionieren.
    Das Script sollte eigentlich auch mit Leerstellen zurechtkommen, bei anderen Variablen klappt das ja auch.

    Zitat

    Ist es möglich ivtv für die Audioausgabe des mplayer zu benutzen (war beim Kompilieren deaktiviert und ich meine mal gelesen zu haben, dass diese Option Probleme macht)?


    neven cvidix gibt es noch den Ausgabetreiber v4l2. Das ist für die neue API des ivtv-Treibers. (der Ausgabetreiber ivtv bezieht sich auf den alten ivtv-Treiber von vor 2007).
    Ich rate von v4l2 dringend ab, weil der Ton so nur bei mpeg2-Material funktioniert, das mit der Option "-ao v4l2 -ac hwmpa" abspielbar ist. hwmpa geht bei nicht-mpeg2-Material nicht. Die Kombination vo v4l2 und ao alsa führt zu asynchronem Ton.


    Zitat

    Beeinträchtigt der Patch für ivtv_vid.c andere Ausgabegeräte, so dass es hinderlich wäre eine gepatchte Version des mplayers in die yaVDR PPAs aufzunehmen?


    meines Erachtens ist er ivtv-spezifisch. Darübe rhianus gibt es in yavdr ja keine anderen Einsatzfälle, wo vidix benötigt wird. Sollte also unkritisch sein.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD


  • Mit dem gleichen Befehl vom Terminal aus läuft der Film aber


    auf dem Terminal bist Du aber vermutlich nicht als user vdr, sondenr als normaler User angemeldet. Ich vermute irgendein rechte-Problem.


    Änder mal im Script unten


    exec $CMDLINE "$FILE"
    auf
    exec $CMDLINE "$FILE" > /var/log/mplayer
    (ist auch schon drin, brauchst nur die Raute tauschen). Dann noch "sudo touch /var/log/mplayer"
    Dann lass in einem anderen Fenster mal "tail -f /var/log/mplayer" laufen und schaue, was beim Aufruf per vdr geloggt wird

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Da der mplayer ja in beiden Fällen mit sudo aufgerufen wird, denke ich dass er alle Rechte haben sollte.
    Ich bekomme leider keine Ausgabe nach /var/log/mplayer (die Option -quiet habe ich deaktiviert). Auch wenn ich die Ausgabe auf /tmp/mplayer ändere und die Rechte mit chmod 777 sehr freigiebig setze, tut sich nichts in der Datei.
    Ausgehend von der Originalen Datei habe ich das sudo nun anders eingebaut:

    Code
    CMDLINE="sudo $CMDLINE"
    echo $CMDLINE "$FILE" >> /tmp/mplayer
    exec $CMDLINE "$FILE" >> /tmp/mplayer


    Damit landet aber nur das was ich mit echo ausgebe im Log:

    Code
    sudo /usr/bin/mplayer -vo cvidix -screenw 720 -screenh 576 -fs -ao alsa -monitoraspect 4:3 -fps 25 -framedrop -cache 4096 -slave -nolirc -v /home/alexander/Matrix.mpg

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Normalerweise darf der User vdr aber kein sudo, was hast du denn gemacht um das zu ändern? Ich würde dir empfehlen den mplayer-Aufruf in einen Upstart-Script zu packen und diesen script per "sudo /sbin/initctl" zu starten. Das darf der vdr nämlich. Du kannst dir ja ansehen wie der vdr über das Applikation-Menü den Firefox startet.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470


  • Ich bekomme leider keine Ausgabe nach /var/log/mplayer (die Option -quiet habe ich deaktiviert).


    DEBUG="true" ist in der conf gesetzt?

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • gda: Ich habe (bevor ich mir mit einem Upstart-Skript eine weitere Fehlerquelle schaffe) über sudo visudo folgendes eingestellt:

    Code
    vdr ALL=NOPASSWD: /usr/bin/mplayer *


    Damit funktioniert die Videowiedergabe schon mal, Danke für den Hinweis.
    Sehe ich das richtig, dass /media/ das am besten geeignete Verzeichnis für die Medien auf dem yaVDR ist (da dort sowohl lokale als auch übers Netzwerk eingebundene Dateien auftauchen)?


    Dr. Seltsam:
    DEBUG="true" ist gesetzt, im Syslog tauchen ja auch die Parameter für den mplayer auf.
    Wie es scheint, hat es nicht mit dem SUID-Bit funktioniert, über die sudoers.conf geht es.
    Ist es ein bekanntes Phänomen, dass im Wiedergabe-Status erst bei einer Wiedergabeposistion von ca. ein bis zwei Minuten ab Beginn des Videos Informationen auftauchen?


    Bei der DVD-Wiedergabe über das Plugin hängt es noch (übers Terminal klappt alles) - ist das wieder ein Rechteproblem, weil getvidixy root-Rechte braucht um die Videoeigenschaften zu bestimmen?

  • gda: Ich habe (bevor ich mir mit einem Upstart-Skript eine weitere Fehlerquelle schaffe) über sudo visudo folgendes eingestellt:


    vdr ALL=NOPASSWD: /usr/bin/mplayer *


    Der Nachteil ist, dass wir es so wahrscheinlich nicht in yaVDR aufnehmen. Wenn du soweit bist, dann würde ich dir doch empfehlen es auf upstart umzustellen.

    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Der Nachteil ist, dass wir es so wahrscheinlich nicht in yaVDR aufnehmen. Wenn du soweit bist, dann würde ich dir doch empfehlen es auf upstart umzustellen.


    Sobald ich sicher bin, dass die DVD-Wiedergabe klappt versuche ich mich mal daran.


    Würdet ihr denn eine entsprechend gepatchte mplayer-Version in euer PPA aufnehmen?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    Einmal editiert, zuletzt von seahawk1986 ()

  • Würdet ihr denn eine entsprechend gepatchte mplayer-Version in euer PPA aufnehmen?


    Sollte kein Problem sein.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470


  • Dr. Seltsam:
    DEBUG="true" ist gesetzt, im Syslog tauchen ja auch die Parameter für den mplayer auf.


    ein richtiges echtes debug von mplayer läuft abe rnicht ins syslog, das kriegst Du nur über eine beim Aufruf mitübergebene Logdatei. Ich vermute, dass es ein Rechteproblem mit /var/log/mplayer gibt (muss für den benutzer vdr schreibbar sein.)


    Zitat

    Ist es ein bekanntes Phänomen, dass im Wiedergabe-Status erst bei einer Wiedergabeposistion von ca. ein bis zwei Minuten ab Beginn des Videos Informationen auftauchen?


    ich entsinne mich, dass das zumindest bei einigen Filmen so war


    Zitat

    Bei der DVD-Wiedergabe über das Plugin hängt es noch (übers Terminal klappt alles) - ist das wieder ein Rechteproblem, weil getvidixy root-Rechte braucht um die Videoeigenschaften zu bestimmen?]


    wenn getvidixy bei Dateien funktioniert, und nur bei VIDEO_TS nicht, würde ich zunächst an einen Fehler (Rechteproblem?) beim mounten der DVD denken. Aber in der Hinsicht brauchte ich hier auch bei mplayer über VDPAU nichts besonderes machen. Du kannst ja mal einen VIDEO_TS-Ordner auf die Platte kopieren, und dann darin eine vob-Datei auswählen.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Das Problem scheint zu sein, dass in der Funktion "getvidxy" (zu sehen in der mplayer.txt wenn eine DVD abgespielt werden soll nur die letzte Zeile der Ausgabe des mplayer "ID_EXIT=EOF" in der Variablen TEMP1 landet und damit die Videogröße nicht korrekt erkannt wird. Beim Testen des Skriptteils in der Shell tritt das nicht auf (und laut Shebang sollte das Skript ja auch die Bash verwenden) :rolleyes:


    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • schau Dir den Code im Script mal genau an:


    Es wird nacheinander geprüft,
    -ob vom Dummy-Ordner eine gemountete DVD abgespielt wird (hier /var/lib/vdr-plugin-mplayer/DVD-VCD/DVD)
    -ob eine cue-Datei ausgewählt wurde
    -ob ein iso ausgewählt wurde
    -ob ein DVD-Struktur-Ordne roder eine vob-Datei innerhalb eines DVD-Struktur-Ordners ausgewählt wurde
    Erst wenn das alles nicht zutrifft, wird die Funktion getvidxy überhaupt aufgerufen.


    Mit anderen Worten: Für DVD wird getvidxy gar nicht aufgerufen, weil wir die Informationen in dem Fall nicht benötigen: Eine DVD ist immer mpeg2 und wird nie mehr als 720x576 haben. Das braucht also nicht runterskaliert werden, deshalb sind die Aufrufe füpr die CMDLINE auch einfacher.


    Wie rufst Du die DVD auf? Du musst in der mplayer-Verzeichnisanzeige mit der gelben Taste "Datenträger" aufrufen. Dann auf "DVD or VCD" und dann nochmal auf DVD.


    Ich vermute, Du versuchst /var/lib/vdr-plugin-mplayer/DVD-VCD/DVD direkt aus der Verzeichnisanzeige "Lokale Platte" aufzurufen.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Dr. Seltsam: Ich stell mich dann mal zum Schämen in die Ecke... :( Ich habe den Fehler gefunden.
    Es hing am Eintrag für DVD in der mplayer.conf :wand
    Folgende Situation: Im Test-Rechner sind 2 Laufwerke verbaut (1x DVD, 1x DVD-RW). Beim Testen hatte ich mich in /dev/ nach Laufwerkseinträgen umgesehen und bin dummerweise an /dev/cdrom und /dev/cdrom1 hängen geblieben, weil der mplayer - wenn ich ihn auf der Shell mit /dev/cdrom als DVD-Laufwerk aufgerufen habe - brav alles abgespielt hat.
    Für das mplayer-plugin muss es aber wohl /dev/dvd sein (steht ja auch korrekt in deiner Beispiel-Konfiguration).


    Danke für deine Hilfe.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • trotzdem komisch, dass es per shell ging.


    normalerweise sind das ja alles symlinks für die gleiche Adresse. Bei meinem Ubuntu-Arbeitsrechner z.B.


    Code
    root@AMD64:~# cd /dev
    root@AMD64:/dev# ls -l cd*
    lrwxrwxrwx 1 root root 3 2011-07-08 14:09 cdrom6 -> sr1
    lrwxrwxrwx 1 root root 3 2011-07-08 14:09 cdrom7 -> sr0
    lrwxrwxrwx 1 root root 3 2011-07-08 14:09 cdrw7 -> sr0
    root@AMD64:/dev# ls -l dvd*
    lrwxrwxrwx 1 root root 3 2011-07-08 14:09 dvd6 -> sr1
    lrwxrwxrwx 1 root root 3 2011-07-08 14:09 dvd7 -> sr0
    lrwxrwxrwx 1 root root 3 2011-07-08 14:09 dvdrw7 -> sr0

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Neuer Tag, neues Glück: Aufruf des mplayers via /sbin/initctl
    Mir ist noch nicht ganz klar, wie ich die Argumente für den mplayer beim Aufruf über initctl korrekt aus dem mplayer-Skript übergeben kann:
    /etc/init/pvr350mplayer.conf:

    Code
    description     "mplayer for PVR350"
    export PATH=/usr/local/bin:/usr/bin:/bin
    exec echo "Hallo Welt $(date) $CMDLINE $FILE" >> /tmp/hallo_welt.log


    Ich habe es so in der Shell versucht:

    Code
    ich@yavdr04:~$ sudo /sbin/initctl start --no-wait toggle JOBNAME=pvr350mplayer OPTIONS='CMDLINE="TEST" FILE="DATEI"
    
    
    # Andere Shell
    ich@yavdr04:~$ tail -f /tmp/hallo_welt.log
    Hallo Welt Sat Jul  9 11:25:43 CEST 2011 "TEST" "DATEI"


    Sobald jedoch Leerzeichen auftauchen (essentiell, wenn man den mplayer-Aufruf mit Argumenten oder Dateipfade übergeben will) klappt es nicht mehr, das Escapen der Leerzeichen "\ " macht auch keinen Unterschied:

    Code
    ich@yavdr04:~$ sudo /sbin/initctl start --no-wait toggle JOBNAME=pvr350mplayer OPTIONS='CMDLINE="/usr/bin/mplayer cvidix" FILE="/home/ich/Matrix.mpg"'
    # kein Logeintrag

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!