
In diesem Artikel werde ich darüber sprechen, wie man ein Plugin in C für den VLC Media Player schreibt. Ich habe mein Plugin geschrieben, um das Anschauen von Fernsehsendungen und Filmen auf Englisch zu vereinfachen. Die Idee, dieses Plugin zu erstellen, wird in den Abschnitten
Idee und
Lösungsfindung beschrieben . Technische Details zur Plugin-Implementierung finden Sie in den Abschnitten "
Hello World-Plugin" und "
Implementierung" . Was am Ende passiert ist und wie man es benutzt, können Sie im letzten Abschnitt,
Ergebnis ,
nachlesen .
Der Quellcode für das Projekt ist auf
GitHub verfügbar.
Idee
Die Idee, eine Fremdsprache zu lernen, während ich meine Lieblingsserie anschaue, ist nicht neu, aber ich persönlich hatte immer Probleme mit der Umsetzung. Es ist sehr schwierig, eine Serie oder einen Film anzusehen, wenn Sie nicht die Hälfte dessen verstehen, was sie sagen. Natürlich können Sie Untertitel aktivieren, aber wenn in einer Rede ein unbekanntes Wort oder ein unbekannter Ausdruck vorkommt, wird nicht klarer, dass der Text ihn dupliziert. Und mir gefiel es überhaupt nicht, die Serie mit russischen Untertiteln anzusehen - das Gehirn wechselt in seine Muttersprache und nimmt keine Fremdsprache mehr wahr. Ich habe irgendwo gelesen, dass man sich zuerst eine Serie auf Russisch und dann im Original ansehen muss. Aber dieser Ansatz passte auch nicht zu mir. Erstens ist es nicht mehr so interessant, sich so viel Zeit zu nehmen, um dasselbe mehrmals anzusehen, und zweitens ist es nicht mehr so interessant, das zweite Mal zuzusehen - die Motivation geht verloren.
Trotz all der Schwierigkeiten, ausländische Fernsehsendungen zu sehen, kann ich technische Dokumentationen, Artikel und Bücher auf Englisch ziemlich gut lesen. Ich lese gerne Bücher auf dem elektronischen Reader des Kindle. Da die Wörterbuchfunktion cool ist, können Sie mit einem Tastendruck eine Übersetzung eines unbekannten Wortes finden. Es ist praktisch, englischsprachige Artikel und Websites zu lesen, indem Sie eine spezielle Erweiterung für die Übersetzung im Browser installieren - ich verwende die Erweiterung
Yandex.Translation . Dieser Ansatz ermöglicht es Ihnen, englische Texte zu lesen und zu verstehen, ohne nach unbekannten Wörtern zu suchen.
Ich dachte, warum nicht den gleichen Ansatz für das Ansehen von Fernsehsendungen anwenden? Wir schalten die Serie auf Englisch ein, sobald eine unverständliche Phrase gefunden wird, wechseln zur russischen Audiospur und spulen ein wenig zurück. Als nächstes schauen wir uns die Serie weiterhin in Englisch an.
Suche nach einer Lösung
Tatsächlich ist die gesamte Funktionalität, die ich benötige, bereits in vielen gängigen Mediaplayern verfügbar. Das Einzige, was ich vor ein paar Sekunden mit einem Knopfdruck den Audiotrack wechseln und das Video zurückspulen möchte. Es wäre auch toll, wenn der Mediaplayer selbst nach der Übersetzung eines unverständlichen Fragments die Audiospur wieder auf Englisch umstellen würde. Nun, es wäre schön, das zuvor übersetzte Fragment mit dem englischen Track wiederholen zu können.
Das heißt, ich benötige einen Media Player, für den Sie Plugins schreiben können. Es ist auch wünschenswert, dass es plattformübergreifend ist, da ich einen PC unter Windows und einen Laptop unter Linux verwende. Meine Wahl fiel sofort auf den VLC. Auf habr habe ich sogar
einen Artikel gefunden, in dem
@Idunno erklärt , wie man eine VLC-Erweiterung auf LUA schreibt. Übrigens hat er diese Erweiterung auch geschrieben, um Englisch zu lernen.) Leider funktioniert diese Erweiterung in den neuesten Versionen von VLC (älter als 2.0.5) nicht. Aufgrund eines instabilen Betriebs wurde die Möglichkeit, Rückruffunktionen hinzuzufügen, mit denen Tastaturereignisse in der LUA-Erweiterung verarbeitet werden konnten, aus der LUA-API entfernt. In der
README-Datei führt ein Link zur Mailingliste der VLC-Entwickler, die dieses Problem diskutieren, zu seiner Erweiterung auf GitHub
@Idunno .
Um meine Idee umzusetzen, funktioniert eine Erweiterung von LUA nicht, Sie müssen ein Plugin in C schreiben. Und obwohl ich vor ungefähr 7 Jahren an der Universität etwas in C geschrieben habe, habe ich mich entschlossen, es zu versuchen.
Hallo Welt Plugin
Es ist erwähnenswert, dass der VLC-Mediaplayer ziemlich gut
dokumentiert ist . Ich habe daraus gelernt, dass die Entwicklung eines Mediaplayers modular erfolgt. VLC besteht aus mehreren unabhängigen Modulen, die bestimmte Funktionen implementieren, und dem Kernel (
libVLCCore ), der diese Module verwaltet. Es gibt zwei Arten von Modulen: interne (
innerhalb des Baums ) und externe (
außerhalb des Baums ). Der Quellcode der internen Module wird mit dem Kernel-Code in einem Repository gespeichert. Externe Module werden unabhängig vom VLC Media Player entwickelt und montiert. Letztere sind eigentlich sogenannte Plugins.
Die Dokumentation enthält auch
einen Artikel zum Schreiben Ihres Plug-Ins (Moduls) in C. Dieser Artikel enthält den Quellcode eines einfachen Plug-Ins, das beim Starten von VLC eine Willkommensmeldung "
Hallo, <Name> " an der Konsole anzeigt (der Wert <Name> wird verwendet) aus den Plugin-Einstellungen).
set_category(CAT_INTERFACE)
ich ein wenig
set_category(CAT_INTERFACE)
, werde ich sagen, dass im obigen Beispiel nach
set_category(CAT_INTERFACE)
die folgende Zeile
set_category(CAT_INTERFACE)
:
set_subcategory( SUBCAT_INTERFACE_CONTROL )
Nun, alles, was bleibt, ist das Plug-In zu montieren und seine Funktion zu testen. Es gibt auch eine
Anleitung zum Erstellen eines externen Plugins. Hier lohnt es sich, auf den Abschnitt
Internationalisierung zu achten, in dem beschrieben wird, wie die Lokalisierung in VLC funktioniert. Kurz gesagt, für externe Plug-Ins müssen Sie die Makros
N_()
,
_()
:
#define DOMAIN "vlc-myplugin" #define _(str) dgettext(DOMAIN, str) #define N_(str) (str)
Für die Montage wird vorgeschlagen, das gute alte Makefile oder Autotools zu verwenden. Ich entschied mich für den einfachen Weg und entschied mich für das Makefile. Im Makefile müssen Sie daran denken, die Variable
MODULE_STRING
zu definieren - dies ist die Kennung unseres Plugins. Ich habe auch die Arbeit mit Verzeichnissen ein wenig optimiert - jetzt werden sie durch
pkg-config definiert . Das Ergebnis sind die folgenden Dateien:
hallo.c #ifdef HAVE_CONFIG_H # include "config.h" #endif #define DOMAIN "vlc-myplugin" #define _(str) dgettext(DOMAIN, str) #define N_(str) (str) #include <stdlib.h> /* VLC core API headers */ #include <vlc_common.h> #include <vlc_plugin.h> #include <vlc_interface.h> /* Forward declarations */ static int Open(vlc_object_t *); static void Close(vlc_object_t *); /* Module descriptor */ vlc_module_begin() set_shortname(N_("Hello")) set_description(N_("Hello interface")) set_capability("interface", 0) set_callbacks(Open, Close) set_category(CAT_INTERFACE) set_subcategory( SUBCAT_INTERFACE_CONTROL ) add_string("hello-who", "world", "Target", "Whom to say hello to.", false) vlc_module_end () /* Internal state for an instance of the module */ struct intf_sys_t { char *who; }; /** * Starts our example interface. */ static int Open(vlc_object_t *obj) { intf_thread_t *intf = (intf_thread_t *)obj; /* Allocate internal state */ intf_sys_t *sys = malloc(sizeof (*sys)); if (unlikely(sys == NULL)) return VLC_ENOMEM; intf->p_sys = sys; /* Read settings */ char *who = var_InheritString(intf, "hello-who"); if (who == NULL) { msg_Err(intf, "Nobody to say hello to!"); goto error; } sys->who = who; msg_Info(intf, "Hello %s!", who); return VLC_SUCCESS; error: free(sys); return VLC_EGENERIC; } /** * Stops the interface. */ static void Close(vlc_object_t *obj) { intf_thread_t *intf = (intf_thread_t *)obj; intf_sys_t *sys = intf->p_sys; msg_Info(intf, "Good bye %s!", sys->who); /* Free internal state */ free(sys->who); free(sys); }
Makefile LD = ld CC = cc PKG_CONFIG = pkg-config INSTALL = install CFLAGS = -g -O2 -Wall -Wextra LDFLAGS = LIBS = VLC_PLUGIN_CFLAGS := $(shell $(PKG_CONFIG) --cflags vlc-plugin) VLC_PLUGIN_LIBS := $(shell $(PKG_CONFIG) --libs vlc-plugin) VLC_PLUGIN_DIR := $(shell $(PKG_CONFIG) --variable=pluginsdir vlc-plugin) plugindir = $(VLC_PLUGIN_DIR)/misc override CC += -std=gnu99 override CPPFLAGS += -DPIC -I. -Isrc override CFLAGS += -fPIC override LDFLAGS += -Wl,-no-undefined,-z,defs override CPPFLAGS += -DMODULE_STRING=\ override CFLAGS += $(VLC_PLUGIN_CFLAGS) override LIBS += $(VLC_PLUGIN_LIBS) all: libhello_plugin.so install: all mkdir -p -- $(DESTDIR)$(plugindir) $(INSTALL) --mode 0755 libhello_plugin.so $(DESTDIR)$(plugindir) install-strip: $(MAKE) install INSTALL= uninstall: rm -f $(plugindir)/libhello_plugin.so clean: rm -f -- libhello_plugin.so src/*.o mostlyclean: clean SOURCES = hello.c $(SOURCES:%.c=src/%.o): $(SOURCES:%.c=src/%.c) libhello_plugin.so: $(SOURCES:%.c=src/%.o) $(CC) $(LDFLAGS) -shared -o $@ $^ $(LIBS) .PHONY: all install install-strip uninstall clean mostlyclean
Der einfachste Weg, ein Plugin für Linux zu erstellen. Dazu müssen Sie den VLC-Mediaplayer selbst sowie die zum Erstellen des Plug-Ins erforderlichen Dateien und Tools installieren. Unter Debian / Ubuntu kann dies mit dem folgenden Befehl erfolgen:
sudo apt-get install vlc libvlc-dev libvlccore-dev gcc make pkg-config
Eigentlich ist alles fertig, wir sammeln und installieren unser Plugin mit dem Befehl:
sudo make install
Um das Plugin zu testen, führen Sie VLC auch von der Konsole aus:
vlc
Leider haben wir keine "
Hallo Welt " gesehen. Die Sache ist, dass das Plugin zuerst aktiviert werden muss. Öffnen Sie dazu die Einstellungen (
Extras >
Einstellungen ), wechseln Sie in die erweiterte Ansicht (wählen Sie
Alle in der Gruppe
Einstellungen anzeigen) und suchen Sie in der Baumstruktur im linken Bereich
Schnittstelle >
Steuerungsschnittstellen - aktivieren Sie das Kontrollkästchen neben unserem Plugin für die
Hallo-Schnittstelle .

Wir speichern die Einstellungen und starten den VLC neu.

Erstellen Sie ein Plugin für Windows
Bei Windows sind die Dinge etwas komplizierter. Um das Plugin zu erstellen, müssen Sie sdk herunterladen, das Bibliotheken, Header- und Konfigurationsdateien von VLC enthält. Zuvor war sdk Teil der regulären VLC-Assembly und befand sich im Programminstallationsordner. Jetzt wird es als separate Media Player-Baugruppe geliefert. Beispielsweise kann diese Assembly für VLC Version 3.0.8 unter
ftp://ftp.videolan.org/pub/videolan/vlc/3.0.8/win64/vlc-3.0.8-win64.7z heruntergeladen werden (es ist wichtig, 7z herunterzuladen) -Archiv).
Kopieren Sie den Inhalt des Archivs in einen Ordner, z. B. nach
C: \ Projects . Das Archiv enthält neben sdk auch den Mediaplayer selbst, mit dem Sie das Plug-in testen und debuggen können.
Damit unser Makefile zum Erstellen und Installieren des Plugins verwendet werden kann, müssen Sie die Datei
C: \ Projects \ vlc-3.0.8 \ sdk \ lib \ pkgconfig \ vlc-plugin.pc reparieren und den korrekten Pfad zum Ordner
sdk in den Variablen
prefix und
pluginsdir angeben und
Plugins :
prefix=/c/Projects/vlc-3.0.8/sdk pluginsdir=/c/Projects/vlc-3.0.8/plugins
Um unter Windows zu bauen, müssen wir auch einen Compiler und andere Dienstprogramme installieren. Die gesamte erforderliche Software erhalten Sie, indem Sie die
MSYS2- Umgebung installieren. Die Projektwebsite enthält detaillierte Installationsanweisungen. Kurz gesagt, müssen Sie unmittelbar nach der Installation die Konsole (
C: \ msys64 \ msys2.exe )
öffnen und die MSYS2-Pakete mit dem folgenden Befehl aktualisieren:
pacman -Syu
Schließen Sie als Nächstes das MSYS2-Terminalfenster, öffnen Sie es erneut und führen Sie den Befehl aus
pacman -Su
Nachdem Sie alle Pakete aktualisiert haben, müssen Sie die Toolchain installieren:
pacman -S base-devel mingw-w64-x86_64-toolchain
Nachdem alle erforderlichen Pakete installiert sind, können Sie mit dem Erstellen des Plugins beginnen. Ich habe das Makefile ein wenig modifiziert, damit es das Plugin sowohl unter Linux als auch unter Windows erstellen kann. Außerdem musste ich einige nicht unterstützte MinGW-Build-Parameter entfernen, was dazu führte, dass das Makefile so aussah:
Makefile für Windows LD = ld CC = cc PKG_CONFIG = pkg-config INSTALL = install CFLAGS = -g -O2 -Wall -Wextra LDFLAGS = LIBS = VLC_PLUGIN_CFLAGS := $(shell $(PKG_CONFIG) --cflags vlc-plugin) VLC_PLUGIN_LIBS := $(shell $(PKG_CONFIG) --libs vlc-plugin) VLC_PLUGIN_DIR := $(shell $(PKG_CONFIG) --variable=pluginsdir vlc-plugin) plugindir = $(VLC_PLUGIN_DIR)/misc override CC += -std=gnu99 override CPPFLAGS += -DPIC -I. -Isrc override CFLAGS += -fPIC override LDFLAGS += -Wl,-no-undefined override CPPFLAGS += -DMODULE_STRING=\ override CFLAGS += $(VLC_PLUGIN_CFLAGS) override LIBS += $(VLC_PLUGIN_LIBS) SUFFIX := so ifeq ($(OS),Windows_NT) SUFFIX := dll endif all: libhello_plugin.$(SUFFIX) install: all mkdir -p -- $(DESTDIR)$(plugindir) $(INSTALL) --mode 0755 libhello_plugin.$(SUFFIX) $(DESTDIR)$(plugindir) install-strip: $(MAKE) install INSTALL= uninstall: rm -f $(plugindir)/libhello_plugin.$(SUFFIX) clean: rm -f -- libhello_plugin.$(SUFFIX) src/*.o mostlyclean: clean SOURCES = hello.c $(SOURCES:%.c=src/%.o): $(SOURCES:%.c=src/%.c) libhello_plugin.$(SUFFIX): $(SOURCES:%.c=src/%.o) $(CC) $(LDFLAGS) -shared -o $@ $^ $(LIBS) .PHONY: all install install-strip uninstall clean mostlyclean
Da MSYS2 nichts über unser SDK für VLC weiß, muss vor dem
Erstellen der Pfad zum Ordner
pkgconfig von diesem SDK zur Umgebungsvariablen
PKG_CONFIG_PATH hinzugefügt
werden . Öffnen Sie die MinGW-Konsole (
C: \ msys64 \ mingw64.exec ) und führen Sie die folgenden Befehle aus:
export PKG_CONFIG_PATH=/c/projects/vlc-3.0.8/sdk/lib/pkgconfig:$PKG_CONFIG_PATH make install
Um das Plugin zu testen, führen Sie VLC auch von der Konsole aus:
/c/projects/vlc-3.0.8/vlc
Gehen Sie wie bei Linux zu den Einstellungen und schalten Sie unser Plugin ein. Wir speichern die Einstellungen und starten den VLC neu.
Plugin-Implementierung
Um mein Plugin zu implementieren, musste ich verstehen, wie der Media Player gesteuert wird (Ändern der Audiospur, Zurückspulen) und wie Tastaturtastenereignisse behandelt werden. Um das alles zu verstehen, habe ich mich der
Dokumentation zugewandt. Auch im Internet fand ich einige interessante Artikel, die die Architektur des Media Players beleuchteten:
Die Architektur des VLC Media Frameworks und die
API-Dokumentation des VLC Media Players .
VLC besteht aus einer großen Anzahl unabhängiger Module (400+). Jedes Modul sollte Informationen über die Art der von ihm implementierten Funktionalität sowie über die Initialisierungs- / Finalisierungsfunktionen enthalten. Diese Informationen werden im Block
vlc_module_begin () -
vlc_module_end () mit den Makros
set_capability () und
set_callbacks () beschrieben . Die Modulinitialisierungs- / Finalisierungsfunktionen (normalerweise als
Öffnen und
Schließen bezeichnet ) haben die folgende Signatur:
static int Open(vlc_object_t *) static void Close(vlc_object_t *)
vlc_object_t ist der Basistyp für die Darstellung von Daten in VLC, von denen alle anderen geerbt werden (siehe Artikel
Object_Management ). Ein Zeiger auf
vlc_object_t muss entsprechend der vom Modul implementierten Funktionalität in einen bestimmten Datentyp umgewandelt werden. Um den Media Player zu steuern, habe ich
den Schnittstellenwert im Makro
set_capability () festgelegt . Dementsprechend muss ich in den Funktionen
Öffnen und
Schließen vlc_object_t in
intf_thread_t umwandeln .
Die Interaktion zwischen den Modulen basiert auf dem
Beobachterdesignmuster . VLC bietet einen Mechanismus für
„Objektvariablen“ (siehe
Variablen ), mit dem Sie Instanzen vom Typ
vlc_object_t (und seinen Ableitungen) Variablen hinzufügen können. Module können über diese Variablen Daten austauschen. Sie können der Variablen auch eine Rückruffunktion hinzufügen, die aufgerufen wird, wenn sich der Wert dieser Variablen ändert.
Betrachten
Sie als Beispiel das
Hotkeys- Modul (
modules / control / hotkeys.c ), das für die Behandlung von Hotkey-Ereignissen zuständig ist. In der Open-Funktion hängt die
ActionEvent- Rückruffunktion an der
Schlüsselaktionsvariablen :
var_AddCallback( p_intf->obj.libvlc, "key-action", ActionEvent, p_intf );
Ein Zeiger auf
vlc_object_t , ein Variablenname, eine Rückruffunktion und ein Zeiger auf void werden an die Funktion
var_AddCallback übergeben , um beliebige Daten zu übergeben, die dann an die angegebene Rückruffunktion weitergeleitet werden. Die Signatur der Rückruffunktion ist unten dargestellt.
static int ActionEvent(vlc_object_t *, char const *, vlc_value_t, vlc_value_t, void *)
Ein Zeiger auf
vlc_object_t , der Name der Variablen, die alten und neuen Werte dieser Variablen (in diesem Fall die Kennung der entsprechenden gedrückten Tastenkombination der Aktion) sowie der Zeiger auf zusätzliche Daten, die beim Hinzufügen der Rückruffunktion angegeben wurden, werden an die Rückruffunktion übergeben .
Die direkte Verarbeitung von Hotkey-Ereignissen erfolgt in der
PutAction- Funktion, die in der
ActionEvent- Rückruffunktion
aufgerufen wird. Die
PutAction- Funktion akzeptiert eine Kennung eines Ereignisses beim Drücken einer Tastenkombination (
i_action ) und führt mit Hilfe des Switch-Operators die entsprechenden Aktionen aus.
Ein Rücklaufereignis entspricht beispielsweise
ACTIONID_JUMP_BACKWARD_SHORT
. Um die entsprechende Aktion auszuführen, wird das Rücklaufintervall aus den VLC-Einstellungen (aus der Variablen
Short-Jump-Size ) entnommen:
mtime_t it = var_InheritInteger( p_input, varname );
Um die wiedergegebene Datei zurückzuspulen, stellen Sie einfach die Variable für den
Zeitversatz auf den Wert ein, der der Zeit (in Mikrosekunden) entspricht, um die Sie die Wiedergabe verschieben möchten:
var_SetInteger( p_input, "time-offset", it * sign * CLOCK_FREQ );
Für den schnellen Vorlauf müssen Sie einen positiven Wert angeben, für den schnellen Rücklauf einen negativen. Die
CLOCK_FREQ-Konstante wird zum Konvertieren von Sekunden in Mikrosekunden verwendet.
Ebenso ändert sich die Audiospur (
ACTIONID_AUDIO_TRACK
Ereignis). Nur die für die Audiospur verantwortliche
Audio-es- Variable kann einen begrenzten Satz von Werten akzeptieren (entsprechend den in der wiedergegebenen Datei verfügbaren Audiospuren). Mit der Funktion
var_Change () erhalten Sie eine Liste der möglichen Werte einer Variablen:
vlc_value_t list, list2; var_Change( p_input, "audio-es", VLC_VAR_GETCHOICES, &list, &list2 );
Neben der Werteliste können Sie mit dieser Funktion auch eine Liste mit Beschreibungen dieser Werte abrufen (in diesem Fall den Namen der Audiospuren). Jetzt können wir die Audiospur mit der Funktion
var_Set () ändern:
var_Set( p_input, "audio-es", list.p_list->p_values[i] );
Wie der Media Player zu verwalten ist, bleibt abzuwarten, wie mit Tastaturereignissen umgegangen wird. Leider konnte ich keinen neuen Hotkey hinzufügen. Alle Hotkeys sind im VLC-Kernelcode (
src / misc / actions.c ) fest
codiert . Aus diesem Grund habe ich einen Handler für Tastaturtastenereignisse auf niedrigerer Ebene hinzugefügt und meine Rückruffunktion aufgehängt, um die Variable mit
gedrückter Taste zu ändern:
var_AddCallback( p_intf->obj.libvlc, "key-pressed", KeyboardEvent, p_intf );
Die Variable mit
gedrückter Taste speichert den Zeichencode (in Unicode), der der zuletzt gedrückten Taste entspricht. Wenn Sie beispielsweise die Taste mit der Nummer
"1" drücken , wird der Variablen mit der
gedrückten Taste der Wert
49 zugewiesen (0x00000031 im 16. Zahlensystem). Sie können andere Zeichencodes unter
unicode-table.com anzeigen . Zusätzlich berücksichtigt der Wert der
Tastendruckvariablen das Drücken von Modifikatortasten, wobei ihnen das vierte signifikante Byte zugewiesen wird. Wenn Sie beispielsweise die Tastenkombination „
Strg + 1 “
drücken , wird der Variablen bei
gedrückter Taste der Wert 0x
04 000031 (00000
1 00 00000000 00000000 00110001
2 ) zugewiesen. Aus Gründen der Übersichtlichkeit zeigt die folgende Tabelle die Bedeutungen verschiedener Tastenkombinationen:
Achten Sie auf den Wert, wenn Sie die Kombination „
Shift + 1 “ drücken. Da in diesem Fall die “
! ", Dann entspricht der Wert des ersten Bytes dem Code dieses Zeichens in Unicode (0x00000021).
Ergebnis
Ich habe mein
TIP- Plugin ein Akronym für den Ausdruck „Bitte übersetzen“ genannt, auch Tipp kann als „Hinweis“ übersetzt werden. Der Quellcode für das Plug-In wird auf
GitHub veröffentlicht. Dort können Sie auch vorgefertigte Plug-In-Assemblys für Windows und Linux herunterladen.
Um das Plugin zu installieren, müssen Sie die Datei
libtip_plugin.dll (libtip_plugin.so für Linux) in den Ordner
<path-to-vlc> / plugins kopieren . Unter Windows wird VLC normalerweise im Ordner
C: \ Programme \ VideoLAN \ VLC installiert. Unter Linux können Sie den Installationsordner mit dem folgenden Befehl finden:
whereis vlc
In Ubuntu ist beispielsweise VLC in
/ usr / lib / x86_64-linux-gnu / vlc installiert .
Als Nächstes müssen Sie VLC neu starten. Wechseln Sie dann im Hauptmenü zu
Extras >
Einstellungen in die erweiterte Ansicht (wählen Sie in der Gruppe
Einstellungen anzeigen die Option
Alle aus), gehen Sie im linken Bereich zum Abschnitt
Benutzeroberfläche >
Steuerung und aktivieren Sie das Kontrollkästchen neben
TIPP (bitte übersetzen) . Dann müssen Sie den VLC erneut starten.

In den Plugin-Einstellungen können Sie die Nummern der Haupt- und Nebenaudiospuren (für die Übersetzung) sowie die Zeit (in Sekunden) angeben, um die das Plugin zurückgespult wird, um sie mit der Nebenaudiospur zu wiederholen.

Um das Plugin zu steuern, habe ich die folgenden Tastaturkürzel hinzugefügt:
- " / " Für die Übersetzung
- " Shift + / ", um das zuvor übersetzte Videofragment mit der Hauptaudiospur zu wiederholen
Während der Ausführung der Übersetzungs- und Wiederholungsbefehle zeigt das Plugin die Meldungen
"TIPP: Übersetzen" und
"TIPP: Wiederholen" in der oberen linken Ecke an.

Aus meiner Erfahrung mit dem Plugin kann ich sagen, dass ich im Allgemeinen mit dem Ergebnis zufrieden bin. Die Hauptsache ist, den richtigen Inhalt zu wählen, wenn mindestens die Hälfte der dort verwendeten Fremdsprache verstanden wird, hilft das Plugin bei der Übersetzung des Rests. Andernfalls ist das Plugin wahrscheinlich unbrauchbar.