Wie kann ich ein Plugin für VLC schreiben, das auf Ereignisse reagiert, pausiert und stoppt?

8

Ich möchte ein sehr einfaches Plugin für VLC schreiben, das Webanfragen stellt, wenn ein Medium abgespielt, angehalten oder gestoppt wird. Es ist einem Scrobbling-Plugin sehr ähnlich.

Ich habe gesehen, dass VLC Plugins und Extensions unterstützt (das sind sehr einfache Lua-Skripte), aber ich konnte keine Informationen dazu finden.

Ich denke, ich müsste ein Plugin schreiben, das einige Callbacks registriert - habe ich recht? Irgendeine Idee, wie ich das erreichen könnte? Es scheint ein ziemlicher harter Kampf zu sein. Kann ich das mit Python machen?

    
Mridang Agarwalla 03.04.2013, 18:41
quelle

2 Antworten

6

Ich verwende VLC 2.2.1 unter Windows.

Hier ist ein einfaches Lua-Plugin, das die Wiedergabe / Pause / Stopp-Ereignisse erkennt:

%Vor%

Anmerkungen:

  • VLC ruft an einem bestimmten Punkt im Plugin-Lebenszyklus activate() , deactivate() , meta_changed() auf. Sie müssen diese nicht einschließen, aber VLC wird Ihr Debug-Protokoll mit nutzlosen Nachrichten "function not found" füllen.
  • Wenn das Plugin-Funktionen enthalten playing-listener , Erwartet VLC den playing_changed() -Hook und ruft ihn gegebenenfalls auf. Der Code-Kommentar besagt, dass der Hook-Name "status_changed" lautet. Es lügt.
  • vlc.playlist.status() returns "gestoppt", „spielen "," pausiert "oder" unbekannt ".

Ausführen:

  • Speichern Sie das Plugin in einer .lua-Datei und legen Sie es dann im Erweiterungsordner von VLC ab / a>: %APPDATA%\vlc\lua\extensions\ (Windows) oder ~/.local/share/vlc/lua/extensions/ (Linux)

  • Laden Sie es: Tools & gt; Plugins und Erweiterungen, Reload Erweiterungen (Neustart von VLC ist nicht notwendig)

  • Aktiviere es (es gibt eine Option unter Ansicht, benannt nach Titel im Plugin-Deskriptor); activate() wird
  • aufgerufen
  • Um alle Protokolle ( vlc.msg calls) anzuzeigen, öffnen Sie Tools & gt; Nachrichten ( Strg + M ), legen Sie die Ebene zum Debuggen und Filtern von "lua"
  • fest

Etwas tun, wenn ein neuer Gegenstand abgespielt wird:

  • Füge input-listener zu den Fähigkeiten des Plugins hinzu
  • Fügen Sie den entsprechenden Hook hinzu input_changed()
  • Verwenden Sie vlc.input.item() erhalten die aktuelles Element (Name, URI, Metadaten usw.)
  • Sie können Inhalte auf einem HTTP-Server posten. VLC bietet vlc.net , was bedeutet, dass Sie für Sockets programmieren. Sie wollen nicht für Steckdosen programmieren. Glücklicherweise ist die Erweiterung vlsub , mit VLC standardmäßig ausgeliefert hat Utility-Methoden für GET-Anfragen zu senden . Stehlen Sie diese.

In diesem Beispiel sende ich nur ein fadenscheiniges GET:

%Vor%

Mir sind Umleitungen oder das Lesen von Antworten egal, also ist get() viel einfacher als die vlsub-Version.

%Vor%     
approxiblue 13.12.2015 11:53
quelle
2

Sie haben zwei Möglichkeiten: Schreiben Sie ein Lua-Modul (überprüfen Sie das MSN-Benachrichtigungs-Plugin für Beispielcode) oder schreiben Sie ein C-Plugin (ähnlich dem bereits gefundenen Scrobbler).

Ich würde den Lua-Weg vorschlagen, da es plattformübergreifend kompatibel ist und die Sprache viel einfacher ist. Darüber hinaus ist das Kompilieren von C-Plugins für VLC ein echtes Problem, es sei denn, Sie verwenden Linux oder OS X.

Python wird derzeit nur für Client-Anwendungen über VLC unterstützt, wir unterstützen jedoch nicht die interne Verwendung von VLC.

    
feepk 27.07.2013 19:06
quelle

Tags und Links