yavdr-ansible: Beschreibung zur Einbindung von kodi & emby

  • Hallo,


    gibt es eine Beschreibung zur Einbindung von kodi in vdr für yavdr-ansible?

    Die Idee ist, den emby-Client für x86-64 (emby theater für linux) direkt aus vdr aufrufen zu können, analog zu kodi.

    Aktuell nutzen wir kodi nur zum Zugriff auf den emby-Server und würden kodi gerne durch emby-theater auf dem vdr-client ersetzen.


    Vielen Dank und VG
    Bernhard

    Server: QNAP-NAS (yavdr ansible headless im container), OctopusNet S4
    Client 1: Fujitsu Esprimo E710 (SSD, nvidia Quadro 410, Logitech Harmony One - Profil VDR-1.6-KLS - atric-USB)

    Client 2: Odroid N2+ (VDR*ELEC)

    Client 3: Raspberry Pi Modell 1B (aktuell außer Funktion)


  • Hi,

    Das müsste mit dem externalplayer-plugin gehen.

    Apt install vdr-plugin-externalplayer

    Mfg Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • gibt es eine Beschreibung zur Einbindung von kodi in vdr für yavdr-ansible?

    Grob funktioniert das für KODI (und alle anderen Programme, die im Wechsel mit der VDR-Ausgabe genutzt werden sollen) so:

    Für den User vdr gibt es eine aktive Systemd User-Session. Das Frontend-Skript nutzt Systemd-Units, um Programme gezielt zu starten, zu stoppen und ihren Status zu verfolgen (damit beim Beenden eines Programms wieder auf die VDR-Ausgabe umgeschaltet werden kann).

    Da Programme normalerweise eine .desktop-Datei mitbringen, gibt es eine generische Systemd-Unit /usr/lib/systemd/user/app@.service, die als Wrapper genutzt wird, wenn man bei einem Umschalt-Befehl von yavdr-frontend den Namen der .desktop-Datei (abzüglich Endung) angibt und keine gleichnamige Systemd-Unit für die Session existiert.


    Da sich nicht alle Programme sauber mit einem SIGTERM beenden lassen (KODI ist da ein Negativ-Beispiel, daher muss man da nachhelfen), kann man eine eigene Systemd-Unit anlegen, um die Befehle zum Starten und Stoppen zu übersteuern. Wichtig ist, dass der Exit-Status als normal (also kein Fehler) angesehen wird (ich hoffe, dass ich mit einer neuen DBus-Library für das yavdr-frontend den genauen Exit-Status bald besser tracken kann - da warte ich noch darauf, dass die Maintainerin von dasbus eine Änderung Upstream einpflegt, die es mit erlaubt das DBus-Interface beim yavdr-frontend stabil zu halten).


    Ich vermute, dass du das emby-theatre Paket von https://github.com/MediaBrowse…heater-electron/releases/ nutzt - das bringt eine emby-theater.desktop Datei mit (und sollte damit im Desktop-Plugin (Menüpunkt "Applikationen") unter Tools auftaufen und startbar sein) - dann kannst du direkt ausprobieren, ob sich das Programm "brav" verhält oder eine Sonderbehandlung in Form einer Systemd-Unit benötigt: frontend-dbus-send switchbetween emby-theater vdr - wenn du das zum erster Mal aufrufst, sollte das yavdr-frontend das VDR-Frontend beenden und Emby starten. Beim Zweiten Aufruf (oder beim Beenden von Emby Theater) sollte er zum VDR zurückwechseln.


    Wenn das funktioniert, kannst du die menuorg.xml bzw. das Template dafür anpassen und z.B. den Starteintrag für KODI durch einen für Emby Theater ersetzen:

    Code
    <command name="Kodi" execute="frontend-dbus-send switchto emby-theater" />

    oder auch die /var/lib/vdr/.lircrc anpassen, damit man mit KEY_HOME umschalten kann:

    Code
    begin
        prog = irexec
        button = KEY_HOME
        config = frontend-dbus-send switchbetween kodi vdr
    end


    Was ich auf die Schnelle nicht gefunden habe, ist ob Emby Theater Tastendrücke verarbeiten kann, die von einem lirc-kompatiblen Sockel kommen - falls nicht könnte man eine Systemd-Unit anlegen, die eine extra irexec-Instanz mit einem passenden Mapping der Fernbedienungstasten auf X-Keyboard-Events startet.


    Mit dem external-Player Plugin muss man sich also hoffentlich nicht herumschlagen ;)

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Danke für die Tipps und Ausführungen.

    Mal sehen wie weit ich komme.


    Vielen Dank und VG
    Bernhard

    Server: QNAP-NAS (yavdr ansible headless im container), OctopusNet S4
    Client 1: Fujitsu Esprimo E710 (SSD, nvidia Quadro 410, Logitech Harmony One - Profil VDR-1.6-KLS - atric-USB)

    Client 2: Odroid N2+ (VDR*ELEC)

    Client 3: Raspberry Pi Modell 1B (aktuell außer Funktion)


  • Bin diese Woche dazugekommen, die Integration des emby-client in yavdr-ansible anzugehen.

    Hier mein aktueller Stand und die offenen Punkte.


    Ausgangsbasis ist eine aktuelle yavdr-ansible Installation mit nvidia Karte.

    Zusätzlich wurde kodi 19.2 aus kodi-19.2-addon-von-seahawk1986 installiert.

    Mit dem plugin.video.emby-next-gen-6.1.3 aus dem Entwicklungszweig von emby-for-kodi-next-gen und dem embruary-skin für kodi matrix funktioniert der Zugriff auf den emby-server schonmal ganz gut.

    Allerdings würden wir gerne die volle Funktionalität von emby im Wechsel zu yavdr und kodi nutzen können.


    Installiert wurde daher emby-theater für debian/ubuntu x64 gemäß den dort angegebenen Schritten.

    Da die ersten Schritte gut aussahen wurde der emby-client, wie von seahawk1986 vorgeschlagen, direkt in die menuorg.xml (/var/lib/vdr/plugins/menuorg.xml) aufgenommen:

    Code
    <command name="Emby" execute="frontend-dbus-send switchto emby-theater" />

    Aufgrund der mitinstallierten emby-theater.desktop Datei ist für die ersten Schritte keine Sonderbehandlung in Form einer Systemd-Unit erforderlich.

    Der emby-client lässt sich damit wie kodi aus dem vdr-menu starten und beim Beenden ist anschließend der vdr wieder aktiv.

    Es kann beliebig oft zwischen vdr, emby und kodi gewechselt werden. Die Logs sind diesbezüglich unauffällig.


    Beim ersten Start wurde der emby-server in unserem Netz gesucht und gefunden.

    Mit einer am Gerät angeschlossenen USB-Tastatur konnte dann am Server angemeldet und navigiert werden.

    Der angeschlossene und für vdr wie kodi nutzbare IR-Empfänger funktioniert aktuell beim emby-client noch nicht.


    Da der emby-client beim ersten Start mit einer Standardauflösung von 1280x720 startet, muss im Videoplayer der Fullscreenmodus aktiviert werden.

    Hierzu ein Video starten und im Steuermenu den Button für Fullscreen (unten rechts) aktivieren.

    Anschließend behält der emby-client diese Einstellung, auch bei einem Neustart, bei.


    Bei unserem System geht der Home-Screen wie auch die Videoausgabe beim emby-client über die dargestellt Fläche hinaus.

    Besipielweise wird von der Uhrzeit (rechts oben) anstelle hh:mm nur hh:m dargestellt, der Rest ist Offscreen.

    Bei kodi konnte ich die Ausgabe per video-calibration anpassen, allerdings ging kodi, ohne die Anpassung, von einem ähnlichen Darstellungsbreich aus wie der emby-client.

    Da die Ausgabe beim vdr passt, scheint hier noch etwas Feintuning an der Konfiguration der Hardware erforderlich zu sein.


    So weit so gut.

    Was ist noch offen:

    a) Steuerung des emby-clinets via IR-Fernbedienung.

    b) Justierung der X-Konfiguration, um die darstellbare Fläche bei kodi und emby auf die Displaygröße abzubilden.


    Hierzu hätte ich folgenden Fragen, vielleicht kann mir einer von Euch Tipps geben:

    zu a)

    Wie können IR-Events auf X-Events abgebildet werden?

    Kann hierzu das Tool irxevent verwendet werden?

    Wie muss dieses in Verbindung mit dem emby-client gestartet werden, damit dieser die Events auch erhält?


    zu b)

    Als Grafikkarte kommt eine nvidia Quadro 410 zum Einsatz.

    Bei kodi und emby liegt ein Teil außerhalb des sichtbaren Bereichs, beim vdr passt die Ausgabe.

    Über welche Parameter kann die dargestellte Fläche beeinflusst werden?

    DisplaySize in der Monitor Section der xorg.conf wurde vim System ignoriert.

    Die Option DPI wird erkannt und angewendet, hat jedoch keinen Einfluss auf die angezeigte Fläche.


    Vielen Dank

    Bernhard

    PS: Werde vom Fortgang in diesem Thread berichten und die Schritte hier dokumentieren.

    Server: QNAP-NAS (yavdr ansible headless im container), OctopusNet S4
    Client 1: Fujitsu Esprimo E710 (SSD, nvidia Quadro 410, Logitech Harmony One - Profil VDR-1.6-KLS - atric-USB)

    Client 2: Odroid N2+ (VDR*ELEC)

    Client 3: Raspberry Pi Modell 1B (aktuell außer Funktion)


    Einmal editiert, zuletzt von bronline ()

  • Als Grafikkarte kommt eine nvidia Quadro 410 zum Einsatz.

    Bei kodi und emby liegt ein Teil außerhalb des sichtbaren Bereichs, beim vdr passt die Ausgabe.

    Über welche Parameter kann die dargestellte Fläche beeinflusst werden?

    DisplaySize in der Monitor Section der xorg.conf wurde vim System ignoriert.

    Am besten ist es, wenn man den TV dazu bringen kann den Overscan-Bereich nicht abzuschneiden. Falls das nicht möglich ist, kann man bei nvidia-Karten Optionen für den ViewPort setzen, also z.B. für einen alten HD-Ready TV;

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • zu b)

    Gerade in der guisetting.xml von kodi nachgesehen.

    Bei der Auflösung von 1920x1080_50 und nur bei dieser sind folgende Korrekturwerte hinterlegt:

    left: 38

    top: 22

    right: 1882

    bottom: 1058


    Mir ist nicht ganz klar, warum vdr mit der Einstellung zurechtkommt, kodi jedoch Korrekturwerte benötigt.

    Server: QNAP-NAS (yavdr ansible headless im container), OctopusNet S4
    Client 1: Fujitsu Esprimo E710 (SSD, nvidia Quadro 410, Logitech Harmony One - Profil VDR-1.6-KLS - atric-USB)

    Client 2: Odroid N2+ (VDR*ELEC)

    Client 3: Raspberry Pi Modell 1B (aktuell außer Funktion)


  • Wie können IR-Events auf X-Events abgebildet werden?

    Kann hierzu das Tool irxevent verwendet werden?

    Wie muss dieses in Verbindung mit dem emby-client gestartet werden, damit dieser die Events auch erhält?

    Wenn das für das jeweilige Programm gelten soll, würde ich dafür eine eigene lircrc-Konfigurationsdatei (z.B. /var/lib/vdr/.lircrc-emby) anlegen - da gilt die in der Manpage von irexec gezeigte Syntax, die Tastennamen für die X-Events kann man sich z.B. in https://github.com/aldebaran/l…/master/doc/irxevent.keys ansehen - also z.B. um KEY_OK auf die Eingabetaste zu mappen:

    Code
    begin
            prog = irxevent
            button = KEY_OK
            config = Key Return CurrentWindow
    end

    Statt CurrentWindow kann man auch den expliziten Namen des Fensters angeben, das den Tastendruck erhalten soll.


    irexec kann man dann über eine Systemd-Unit starten lassen, die eine Abhängigkeit von der app@emby\x2dtheater.service (den escapten Namen für den Teil hinter dem @ bekommt man mit systemd-escape) hat und daher mit der Unit gestartet und gestoppt wird:

    Code: /var/lib/vdr/.config/systemd/user/emby-irexec.service
    [Unit]
    Description=LIRC command handler for emby media center
    PartOf=app@emby\x2dtheater.service
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/irexec %h/.lircrc-emby
    
    [Install]
    WantedBy=app@emby\x2dtheater.service

    Und dann noch die Unit in der Session des Users vdr anschalten:

    sudo -u vdr DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/666/bus systemctl --user enable emby-irexec.service

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Mir ist nicht ganz klar, warum vdr mit der Einstellung zurechtkommt, kodi jedoch Korrekturwerte benötigt.

    Das OSD lässt beim VDR IIRC standardmäßig ca. 10% der Bildgröße an den Rändern frei.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Am besten ist es, wenn man den TV dazu bringen kann den Overscan-Bereich nicht abzuschneiden. Falls das nicht möglich ist, kann man bei nvidia-Karten Optionen für den ViewPort setzen, also z.B. für einen alten HD-Ready TV;

    Super, danke für den Tipp.

    Die dargestellt Fläche passt mit den ViewPort-Angaben nun sowohl für kodi wie auch für emby.


    Ob der TV dazugebracht werden kann, den Overscan-Bereich nicht abzuschneiden, muss ich mir noch ansehen.

    Server: QNAP-NAS (yavdr ansible headless im container), OctopusNet S4
    Client 1: Fujitsu Esprimo E710 (SSD, nvidia Quadro 410, Logitech Harmony One - Profil VDR-1.6-KLS - atric-USB)

    Client 2: Odroid N2+ (VDR*ELEC)

    Client 3: Raspberry Pi Modell 1B (aktuell außer Funktion)


  • Am besten ist es, wenn man den TV dazu bringen kann den Overscan-Bereich nicht abzuschneiden.

    Habe die entsprechende Einstellung beim LG TV gefunden, damit konnten die ViewPort-Einstellungen wieder entfernt werden.


    LG TV -> Format -> "Just scan"

    Server: QNAP-NAS (yavdr ansible headless im container), OctopusNet S4
    Client 1: Fujitsu Esprimo E710 (SSD, nvidia Quadro 410, Logitech Harmony One - Profil VDR-1.6-KLS - atric-USB)

    Client 2: Odroid N2+ (VDR*ELEC)

    Client 3: Raspberry Pi Modell 1B (aktuell außer Funktion)


  • irexec kann man dann über eine Systemd-Unit starten lassen, die eine Abhängigkeit von der app@emby\x2dtheater.service (den escapten Namen für den Teil hinter dem @ bekommt man mit systemd-escape) hat und daher mit der Unit gestartet und gestoppt wird:

    VIelen Dank seahawk1986.

    Mit den Anregungen funktioniert jetzt auch die Steuerung per IR-Fernbedienung.

    Jetzt müssen nur noch alle relevanten Keys gemappt werden.


    emby-theater (linux, x64) läuft nun vollständig mit yavdr-ansible und kodi.

    Server: QNAP-NAS (yavdr ansible headless im container), OctopusNet S4
    Client 1: Fujitsu Esprimo E710 (SSD, nvidia Quadro 410, Logitech Harmony One - Profil VDR-1.6-KLS - atric-USB)

    Client 2: Odroid N2+ (VDR*ELEC)

    Client 3: Raspberry Pi Modell 1B (aktuell außer Funktion)


  • emby-theater (linux, x64) läuft nun vollständig mit yavdr-ansible und kodi.

    Zu früh gefreut. "irxevent" wird beim Wechsel zurück zum vdr nicht beendet.

    Dadurch laufen zwei Prozesse und senden zwei Events an den vdr.


    Habe nun über ExecStop im irxevent.service versucht, den Prozess zu beenden.

    Bisher leider ohne Erfolg.


    Hat jemand einen Tipp, wie beim Beenden von emby auch der zugehörige irxevent-Prozess beendet werden kann?

    Server: QNAP-NAS (yavdr ansible headless im container), OctopusNet S4
    Client 1: Fujitsu Esprimo E710 (SSD, nvidia Quadro 410, Logitech Harmony One - Profil VDR-1.6-KLS - atric-USB)

    Client 2: Odroid N2+ (VDR*ELEC)

    Client 3: Raspberry Pi Modell 1B (aktuell außer Funktion)


  • Wie beendest du das Emby Media Center? Falls du das Programm aus sich selbst heraus beendest (statt z.B. sowas wie frontend-dbus-send switchto vdr abzusetzen), dann greift vermutlich der automatische Stop aufgrund der

    PartOf=app@emby\x2dtheater.service

    Direktive nicht, weil die Unit nicht aktiv gestoppt wird. Probiere die Systemd-Unit so anzupassen:

    Danach einmal systemd die Units neu einlesen lassen und die Unit re-enablen:

    Code
    sudo -u vdr DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/666/bus systemctl --user daemon-reload
    sudo -u vdr DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/666/bus systemctl --user disable emby-irexec.service
    sudo -u vdr DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/666/bus systemctl --user enable emby-irexec.service

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Wie beendest du das Emby Media Center?

    Wir beenden kodi wie auch emby jeweils aus sich selbst heraus.


    BindsTo=app@emby\x2dtheater.service

    Danke, das war der Trick.

    Nun wird emby sowie das dazugehörige irxevent sauber beendet.


    Vielen Dank und viele Grüße

    Bernhard

    Server: QNAP-NAS (yavdr ansible headless im container), OctopusNet S4
    Client 1: Fujitsu Esprimo E710 (SSD, nvidia Quadro 410, Logitech Harmony One - Profil VDR-1.6-KLS - atric-USB)

    Client 2: Odroid N2+ (VDR*ELEC)

    Client 3: Raspberry Pi Modell 1B (aktuell außer Funktion)


Jetzt mitmachen!

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