MPlayer für Film- und MP3 Wiedergabe mit einer PVR350

  • Hallo VDR-Gemeinde, speziell Dr. Seltsam!


    Ich möchte den PVR350-angepassten MPlayer nochmal neu bauen, daher versuche ich hier noch einmal sauber zu rekapitulieren:


    In diesem Post gabs ja schonmal gute Tipps, wie man bei der Selbsterstellung eines PVR350-angepassten MPlayers vorgehen soll:


    Zitat Dr. Seltsam:
    Du musst Dir zunächst diese Sourcen ziehen:

    Code
    svn checkout svn://svn.mplayerhq.hu/dvdnav/trunk/libdvdread
    svn checkout svn://svn.mplayerhq.hu/dvdnav/trunk/libdvdnav
    svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer


    Diese Sourcen können direkt unter /usr/src/ angelegt werden oder unter /usr/local/src/, das ist Geschmackssache.


    Hat man den VDR aus den eTobi-Quellen installiert könnte der debian-eigene MPlayer mit dem selbst kompilierten MPlayer kollidieren


    Hierzu gibt es -2- Vorgehensweisen:


    1. Man komiliert mittels an gabe von "make" und anschließenem "make install". Dann landen die Ergebnisse unter /usr/local/...


    2. Man übergibt beim ./configure "--prefix=/usr", dann landen die Kompilate in /usr/... und überschreiben die debian-Komponenten.


    Beide Varianten haben Vor- und Nachteile.


    libdvdread und libdvdnav werden parallel in separaten Verzeichnissen abgelegt und werden vor dem MPlayer kompiliert.


    Im folgenden Configure-Aufruf steht gar nichts von "--with-vidix-drivers=ivtv" ! das hängt damit zusammen, dass die damit beabsichtigte Funktion leider nicht greift...

    Code
    ./configure --prefix=/usr --disable-x11 --disable-xinerama --disable-fbdev --disable-vesa --disable-tga --disable-jpeg --disable-ftp --disable-network --enable-runtime-cpudetection --enable-largefiles --disable-png --disable-smb --disable-gif --enable-v4l2 --disable-dvdread-internal


    Deshalb sind noch 2 wichtige Änderungen von Hand vorzunehmen:


    config.h: Hier muss CONFIG_VIDIX_DRV_IVTV auf 1 gesetzt werden:

    Code
    /* enables / disables VIDIX usage */
    #define CONFIG_VIDIX 1
    #undef CONFIG_VIDIX_DRV_CYBERBLADE
    #define CONFIG_VIDIX_DRV_IVTV 1

    und in config.mak

    Code
    VIDIX_IVTV=yes


    Dann hatte ich beim letzten Mal folgendes festgestellt:

    Zitat


    Beim Kompilieren wird nach einer video.h gesucht und leider nicht automatisch gefunden (zumindest wars bei mir so)
    /usr/src/linux/include/linux/dvb muss nach
    /usr/src/mplayer/linux/dvb,


    Hat man einen eigenen Kernel gebaut, liegen die Sourcen (und somit auch die Kernel-Header) in /usr/src/linux...
    Hier bietet es sich an, einen Link in den passenden Verzeichnispfad zu erstellen, dann gibts keine doppelten Dateien, die beim Kernel-Update zu merkwürdigen Ergebnisse und zu Verwirrung führen könnten.


    Dann gabs da noch den Patch von Mini, aus diesem Post (geändert!)


    Code
    patch < mplayer_vidix_ivtv_probe_20080714.diff


    Beim Make wird noch die eine oder andere fehlende '-dev" Library abgefordert, die noch per apt oder (mein Favorit) dselect nachgerüstet werden muss...


    Wenn ich mich richtig erinnere, müsste das entstandene Kompilat in der Lage sein, die PVR350 als Grafikkarte ansprechen zu können. Die Soundausgabe geht über eine (hoffentlich vorhandene und unterstütze) Soundkarte zum Ausgabegerät, bei mir analog an den TV und S/PDIF an den AV-Receiver.


    Ach so: Der MPlayer untersucht nach dem Start den PCI-Bus, um das korrekte Ausgabegerät zu ermitteln. Hierzu benötigt er (noch) root-rechte, weil die beabsichtigte Hilfsfunktion noch nicht so richtig funktioniert. Beim Aufruf des MPlayer als Benutzer vdr ist es also vorerst nötig, sich des sudo zu bedienen.


    Apropos: Der Mplayer ist soweit gerüstet, dass er bei Wiedergabe einer DVD (oder Video) mit Digital-Tonspur ein Stereo-Signal per SPDIF ausgibt. Für die Wiedergabe im DD-Format müsste sicherlich noch so einiges nachgerüstet werden (habe noch keine Vorstellung, was da gemacht werden müsste).


    -==[Schubsi]==-

    WoZi-VDR: yaVDR 0.4 out-of-the-box, Asus M4N78-Pro, AMD 4450e, 2GB, 60GB-SSD, 500GB 2,5", 3x KNC-one-Clone (DVB-C), HDMI->Plasma-TV (Panansonic)

    3 Mal editiert, zuletzt von schubsi ()

  • oha, detaillierte Fragen :wow


    wo Du die Sourcen ablegst ist eigentlich egal. Entscheidend ist, dass Du jedes Paket beim configure mit --prefix=/usr konfigurierst. dann landen die binaries und libs in /usr... und nicht in /usr/local/...


    Das debian-Paket sollte sich in /usr/bin bzw. /usr/lib entpacken, und Deine selbst kompilierten Dateien werden beim "make install" diese dann einfach ersetzen.


    Die Option "--with-vidix-drivers=ivtv" funktioniert ja ledier sowieso nicht, deshalb habe ich sie weggelassen. Wenn man dass etzt, werden etwaige andere vidix-Treiber auch von der Erstellung ausgeschlossen.


    Das mit den DVB-Treibern solltest Du nicht machen. Wenn ein error kommt, siehst Du ja wo die video.h erwartet wird. Kann es sein, dass Du in /usr/include/linux/dvb zu alte Header hast? dann aktualisier die lieber mal da.


    Bei den Patches von mini73 habe ich etwas den Überblick verloren. Ich habe einen etwas neueren verwendet - ich häng ihn mal an.


    Zum Thema Digitaltonausgabe habe ich keine Erfahrungen.


    Gruß
    Dr. Seltsam

    Dateien

    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

  • Hallö...


    Erstmal Danke für die Hinweise...


    Hatte bei meinem ersten Versuch libdvdread und libdvdnav nicht kompiliert, sondern die Pakete von debian nachinstalliert. Bin inzwischen vorsichtig geworden, was die Verwendung/Einbindung fremder Pakete angeht... Ist aber vorgesehen beim nächsten Kompilierversuch, kann ja, wenns in die Hosi geht immer noch die Originalpakete drüber bügeln.


    Zitat

    Zum Thema Digitaltonausgabe habe ich keine Erfahrungen.


    Habe es einfach mal angetestet: Eine mit dem Mplayer abgespielte VOB, die definitiv ausschließlich eine AC3-Tonspur enthielt, ließ sich abspielen, brachte auch Ton über den S/PDIF, allerdings "nur" Stereo (der AV-Receiver zeigte PCM an). Ist ja schonmal was... So ganz ohne Manipulation wird das vermutlich nicht funktionieren. Vorerst gebe ich mich damit zufrieden, wenn ich dann doch mal den vollen 5.1 Audio Output genießen will muss ich halt meinen ollen DVD-Player ausbuddeln.


    Ich habe ja zur Not auch noch meine Dreambox 600 :)


    Weiteres demnächst


    -==[Schubsi]==-

    WoZi-VDR: yaVDR 0.4 out-of-the-box, Asus M4N78-Pro, AMD 4450e, 2GB, 60GB-SSD, 500GB 2,5", 3x KNC-one-Clone (DVB-C), HDMI->Plasma-TV (Panansonic)

  • Moin!


    Zitat

    Original von Dr. Seltsam
    Bei den Patches von mini73 habe ich etwas den Überblick verloren. Ich habe einen etwas neueren verwendet - ich häng ihn mal an.


    Je neuer, desto besser. Der sieht gut aus.
    Falls man mehrere PVR350 im System hat, lassen sich über die Umgebungsvariablen VIDIXIVTVVIDEODEV und VIDIXIVTVFRAMEBUFFERDEV die richtigen Devices setzen (oder falls die automatische Erkennung aus welchem Grund auch immer nicht funktioniert).
    z.B. wenn zuerst eine PVR150 und dann die PVR350 initialisiert wird (PVR350 ist dann ivtv1)

    Code
    export VIDIXIVTVVIDEODEV=/dev/video17
    export VIDIXIVTVFRAMEBUFFERDEV=/dev/fb1


    (am besten im mplayer-Script setzen)


    Falls man mehrere Framebuffer-Geräte hat, erzählt einem "cat /proc/fb" das richtige, bei mir z.B.

    Code
    vdr:~# cat /proc/fb
    0 VESA VGA
    1 cx23415 TV out


    Leider wurde der Patch vom vidix-Maintainer bisher nicht angenommen, weil er nicht platformunabhängig ist (was der ivtv-vidix-Treiber aber sowieso nicht ist). Ich wollte den schon immer mal so weit abschwächen, dass zumindest die Möglichkeit mit den Umgebungsvariablen funktioniert. Aber die Zeit...


    mini.

  • wie war das jetzt mit dem YUV-device? ist das statisch /dev/video48, oder wird es irgendwie detected? oder kann man es auch mit Umgebungsvariable setzenß

    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

  • Zitat

    Original von Dr. Seltsam
    wie war das jetzt mit dem YUV-device? ist das statisch /dev/video48, oder wird es irgendwie detected? oder kann man es auch mit Umgebungsvariable setzenß


    Da ich weder Variablen belegen musste noch sonst etwas anderes als das oben beschrieben definieren musste:


    Die automatische Erkennung des Ausgabegeräts funktioniert, allerdings nur in so weit, wenn der Mplayer als root gestartet wird. Der gemeine Anwender darf "irgendwas" (PCI-Bus?) nicht scannen. Mini hatte in einem anderen Thread geschrieben, dass der dha-helper (oder so ähnlich) noch nicht funktionabel ist.


    Wie schon oben geschrieben: Ein neues Kompilat habe ich noch nicht gebaut, mein Stand (svn) ist vom 11.01.09.


    Zitat

    Das mit den DVB-Treibern solltest Du nicht machen. Wenn ein error kommt, siehst Du ja wo die video.h erwartet wird. Kann es sein, dass Du in /usr/include/linux/dvb zu alte Header hast? dann aktualisier die lieber mal da.


    Also wenn das ein absoluter Pfad sein soll: Hier liegen gar keine Header. Wenn überhaupt, dann in /usr/src/linux... Das mit dem reinkopieren scheint aber in der Tat keine glorreiche Idee zu sein, aber zukünftig werde ich dann wohl mit einem Link in das passende Verzeichnis der Kernel-sourcen verzweigen.


    Zitat

    wo Du die Sourcen ablegst ist eigentlich egal. Entscheidend ist, dass Du jedes Paket beim configure mit --prefix=/usr konfigurierst. dann landen die binaries und libs in /usr... und nicht in /usr/local/...


    In diesem Zusammenhang war es ja gerade die Idee, die Produkte der Selbstkompilierung in eigene Verzeichnisse zu verfrachten, damit sie mit den debian-Komponenten nicht vermischt werden (wir erinnern uns, dass die debianer manchmal andere Vorstellungen haben, welche Dateien wie geschrieben werden und in welche Verzeichnisse sie gehören :)). Die Strategie mit dem Überschreiben hat aber auch Ihren Charme, den man(n) muss - im Zeifelsfall - keine Pfade ändern. Hässlich ist nur, wenn die debian-Distributoren der Meinung sind, ein Update der betroffenen Pakete sei nötig, dann funktioniert "plötzlich" irgendwas nicht mehr...


    PS: Habe meinen ersten Post oben mal angepasst, damit die "neuen" Erkennntnisse da auch nachlesbar sind. Wie lange kann ich den Post eigentlich nachträglich verändern?


    -==[Schubsi]==-

    WoZi-VDR: yaVDR 0.4 out-of-the-box, Asus M4N78-Pro, AMD 4450e, 2GB, 60GB-SSD, 500GB 2,5", 3x KNC-one-Clone (DVB-C), HDMI->Plasma-TV (Panansonic)

    Einmal editiert, zuletzt von schubsi ()

  • Moin!


    Zitat

    Original von Dr. Seltsam
    wie war das jetzt mit dem YUV-device? ist das statisch /dev/video48, oder wird es irgendwie detected? oder kann man es auch mit Umgebungsvariable setzenß


    Mein Fehler, muss dann natürlich /dev/video49 in meinem Fall sein, nicht /dev/video1 (lässt sich also über die Variablen setzen). Ist zu lange her und wenn es funktioniert, vergisst man's so schnell wieder...
    Und bei nur einer PVR350 hab ich bisher noch keinen Fall erlebt, dass die automatische Suche nicht funktioniert (aber das kann ja noch kommen).


    Und das root-Problem ist einfach so, weil es vidix-Philosophie ist, diesen PCI-Scan zu machen. Ich bin da jetzt auch nicht mehr so drin, ob man das durch Setzen der Variablen umgehen könnte. Muss ich mal gucken, bin heute aber zu müde (hatte gestern Party-Gäste im Haus) und meine Erfahrung sagt, dass man müde nicht programmieren sollte... ;)


    mini.

Jetzt mitmachen!

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