Bitte um Hilfe bei Codeerweiterung für externalplayer-Plugin

  • Mahlzeit,


    ich bräuchte mal bitte kurz Hilfe zum Einbauen eines Befehls in das Plugin externalplayer.


    Es geht darum, beim Beenden des aufgerufenen Players einen bestimmten Befehl abzusenden.


    In der externalplayer-control.c gibt es ja schon eine Stelle, die den externen Player beendet und einen Eintrag in der syslog veranlasst.


    Codeschnippsel:



    Jetzt ist die Frage, wie muss der genaue Code lauten, dass der VDR diesen Befehl bekommt, beim Beenden des externen Players (z.B: mms oder MPlayer):


    Code
    "/usr/bin/svdrpsend REMO ON"


    Danke im Voraus für alle Tips!


    Gruß
    Wolfgang

  • Quote

    Original von wbreu
    Jetzt ist die Frage, wie muss der genaue Code lauten, dass der VDR diesen Befehl bekommt, beim Beenden des externen Players (z.B: mms oder MPlayer):


    Code
    "/usr/bin/svdrpsend REMO ON"


    Code
    #include <stdlib.h>
    
    
    system("/usr/bin/svdrpsend REMO ON");

    ?
    Aber das Ganze ist eine schreckliche Idee. Du müsstest eigentlich den Code, der dadurch angetriggert wird, direkt ausführen. du bist doch schon im VDR.


    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

  • Quote

    Original von gda


    Code
    #include <stdlib.h>
    
    
    system("/usr/bin/svdrpsend REMO ON");

    ?
    Aber das Ganze ist eine schreckliche Idee. Du müsstest eigentlich den Code, der dadurch angetriggert wird, direkt ausführen. du bist doch schon im VDR.


    Gerald


    Hi Gerald,


    danke dir für den Tip, ja schon, aber dadurch wird die FB und Tastatur wieder freigegeben für den VDR, wenn man sie vorher mit REMO OFF weggenommen hat.


    Ich geh mal testen....


    Gruß
    Wolfgang

  • Quote

    Original von wbreu
    danke dir für den Tip, ja schon, aber dadurch wird die FB und Tastatur wieder freigegeben für den VDR, wenn man sie vorher mit REMO OFF weggenommen hat.


    Das habe ich schon verstanden, aber du mich anscheinend nicht, ist aber auch nicht so wichtig.


    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

  • Hi nochmal,


    so wie es aussieht, habe ich dich nicht verstanden, jepp.


    Könntest du mir dann bitte erklären, was du damit meinst.


    So wie oben beschrieben, geht es leider nicht:


    Auszug aus der syslog:




    Dürfte die Broken-pipe-Meldung sein.


    Gruß
    Wolfgang

  • Quote

    Original von wbreu
    dadurch wird die FB und Tastatur wieder freigegeben für den VDR, wenn man sie vorher mit REMO OFF weggenommen hat.


    wie/wo/durch was wird denn das REMO OFF ausgelöst ?

    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

  • wbreu, wie sieht denn genau dein stückchen code jetzt aus?


    ansonsten mal probieren ob du den svdrpsend befehl als user vdr ausführen kannst (vorrausgesetzt der vdr läuft auch unter user vdr und nicht als bspw. root)


    infinite

    kuifje
    asus m2n-vm | Athlon 5600 | Nvidia 9300GE | TT S2-3200
    yaVDR 0.4 | 1.7.21
    haddock
    asus p4pe | 2ghz | 3x DVB-S Budget | 2x500gb
    debian lenny 2.6.29.3 | e-tobi 1.7.0 | streamdev cvs | live


    <30.12.07 <igel>sid fuer den gewissen kick>
    <01.04.08 <igel>ich kann eh nix ausser debian pakete installiern>
    <15.12.09 igel hasst linux>
    <23.02.10 <igel> easyvdr is nur easy wenn es easy is>

  • Quote

    Original von wbreu
    Hi nochmal,


    so wie es aussieht, habe ich dich nicht verstanden, jepp.


    Könntest du mir dann bitte erklären, was du damit meinst.


    Na ja, die svdrpsend-Meldung löst doch Funktionalität im vdr aus. Diese Funktionen solltest du im VDR finden und direkt aufrufen. Leider habe ich keine Zeit, dir bei der Suche zu helfen. Kannst du denn den externalplayer nicht in einen Wrapper-Skript verpacken, statt ihn direkt aufzurufen? Dann könntest du die svdrpsend REMO off/on-Befehle um den Aufruf des eigentlichen Players bauen.


    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

  • Hallo Wolfgang,



    Warum schaltest Du die FB nich im selben Script wieder ein?


    ... svdrpsend remo off
    ... mms
    ... svdrpsend remo on






    Peter

    VDR1: ASUS N100I-D D4 + IP TV Plugin + Flirc + softhddevice-git VAAPI + vdr-2.6.5 + 3 weitere Plugins + Debian Bookworm via M2 + Kernel 6.1.0


    VDR2: ASUS AT3IONT-I + PCTV USB Stick 461e + Nvidia 340.108 + Flirc + softhddevice-git + vdr-2.6.4 + 8 weitere Plugins + Samsung U70 + Debian Bullseye via SSD + Kernel 6.3.6 + LG 55 Zoll

  • Quote

    Original von infinite
    wbreu, wie sieht denn genau dein stückchen code jetzt aus?


    ansonsten mal probieren ob du den svdrpsend befehl als user vdr ausführen kannst (vorrausgesetzt der vdr läuft auch unter user vdr und nicht als bspw. root)


    infinite


    Hi,


    der VDR läuft als Root, datei: externalplayer-control.c



    Von der Konsole her funzt der Befehl ja..


    Danke fürs Interesse.


    Gruß
    Wolfgang


  • Hi Peter,


    naja, das soll doch allgemeingültig werden.


    Der Gedanke dahinter ist halt, egal welche Anwendung aufgerufen wird, dass beim Beenden der Anwendung die REMO wieder angeschalten wird.


    Das jeweilige Startskript für die Anwendung sieht fast immer anders aus.


    Gruß
    Wolfgang


  • sorry - war heute nicht da. eigtl sollte der system() call dann klappen. der include ist aber gesetzt? muss ja, ansonsten würds ja ned compilen... mh..


    edit:
    eine idee wär was ausführbares zu machen mit dem svdrpsend befehl, und das dann ausführen im system() call - es könnte evt (!) sein, dass system die parameter ned so gerne hat.


    andernfalls hast du das problem ja bereits selbst gelöst, ka inwiefern du noch gerne stochern willst :D

    kuifje
    asus m2n-vm | Athlon 5600 | Nvidia 9300GE | TT S2-3200
    yaVDR 0.4 | 1.7.21
    haddock
    asus p4pe | 2ghz | 3x DVB-S Budget | 2x500gb
    debian lenny 2.6.29.3 | e-tobi 1.7.0 | streamdev cvs | live


    <30.12.07 <igel>sid fuer den gewissen kick>
    <01.04.08 <igel>ich kann eh nix ausser debian pakete installiern>
    <15.12.09 igel hasst linux>
    <23.02.10 <igel> easyvdr is nur easy wenn es easy is>

    Edited once, last by infinite ().

  • Nur der Vollständigkeit halber, der system()-call setzt natürlich voraus, dass du dem VDR-User eine shell in der /etc/passwd gegeben hast.


    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

  • Quote

    Originally posted by gda
    Nur der Vollständigkeit halber, der system()-call setzt natürlich voraus, dass du dem VDR-User eine shell in der /etc/passwd gegeben hast.


    Gerald


    auch wenn er vdr als root läuft?

    kuifje
    asus m2n-vm | Athlon 5600 | Nvidia 9300GE | TT S2-3200
    yaVDR 0.4 | 1.7.21
    haddock
    asus p4pe | 2ghz | 3x DVB-S Budget | 2x500gb
    debian lenny 2.6.29.3 | e-tobi 1.7.0 | streamdev cvs | live


    <30.12.07 <igel>sid fuer den gewissen kick>
    <01.04.08 <igel>ich kann eh nix ausser debian pakete installiern>
    <15.12.09 igel hasst linux>
    <23.02.10 <igel> easyvdr is nur easy wenn es easy is>

  • Quote

    Original von wbreu


    [...] aber dadurch wird die FB und Tastatur wieder freigegeben für den VDR, wenn man sie vorher mit REMO OFF weggenommen hat.


    Moin Wolfgang,


    ist das *REMO OFF/ON* denn überhaupt nötig?


    Wenn ich xbmc oder mms über das externalplayer-plugin starte, wird bei *InputMode = normal;* nur noch die Lautstärkeregelung an den VDR durchgereicht und bei *InputMode = deactivateRemotes;* gar nichts mehr.


    Es wird nur die aktuell laufende Anwendung gesteuert.


    Gruß und nen guten Rutsch ;)


    Tomas


  • Moin Tomas,


    ebenfalls guten Rutsch und ein schönes neues Jahr 2010.


    Also bei mir (xine-plugin) ist es so, dass der VDR trotzdem noch den einen oder anderen Key (z.B Rück-Taste auf der Tastatur) abbekommt.


    Deshalb habe ich mir gedacht, gehe ich halt den "safen" Weg.


    Gruß
    Wolfgang

  • Hi Wolfgang,


    Quote

    Original von wbreu


    Also bei mir (xine-plugin) ist es so, dass der VDR trotzdem noch den einen oder anderen Key (z.B Rück-Taste auf der Tastatur) abbekommt.


    ich benutze ja auch das vdr-xine-plugin, das ist mir bisher noch nicht aufgefallen... aber damit


    Quote

    Original von wbreu


    Deshalb habe ich mir gedacht, gehe ich halt den "safen" Weg.


    hast du natürlich vollkommen recht, bevor im *Blindflug* noch irgendein Malheur passiert ;)



    Falls du doch noch an einer allgemeingültigen Lösung interessiert bist:


    Code
    cControlExternalplayer::~cControlExternalplayer() {
      isyslog("externalplayer-plugin: shutting down player");
      delete player;
      delete status;
      cRemote::SetEnabled(true);
      isyslog("externalplayer-plugin: enable remotes");
      player = NULL;
    }


    ist wohl das, was Gerald gemeint hat und funzt bei mir.


    Gruß
    Tomas

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!