Ich habe Filmdateien mit mehreren Audiospuren (im MKV-Container). Ich möchte einen Film ansehen, während ich eine Sprache an die Lautsprecher (für die Kinder) und eine andere Sprache an die Kopfhörer (für mich selbst) sende, um die Titel synchron zu halten, wenn der Film angehalten wird usw.
Angenommen, mein System verfügt bereits über zwei ordnungsgemäß konfigurierte Audioausgänge.
Gibt es eine Möglichkeit, dies mit einem Media Player unter Linux zu tun? Ich habe MPlayer und VLC bisher überprüft und sie unterstützen nur die Auswahl einer der verfügbaren Audiospuren.
linux
audio
video
media-player
Martin Vidner
quelle
quelle
:-)
Antworten:
Die Idee
aka Wie man eine (Butter-) Fliege auf dem Rad bricht [ Fliege ] .
Sie können den gesamten Film lokal mit allen Audio- und Untertitelspuren streamen, z
vlc
. B. mit .Dann ist es "genug" , zwei Clients mit diesem Stream zu verbinden und die Sprache (und / oder Untertitel) und den unterschiedlichen Audioausgang (von dem wir annehmen, dass er bereits konfiguriert ist) auszuwählen.
Darüber hinaus ist es bei einem neuen Fernseher, Tablet oder Mobiltelefon nicht erforderlich, die Clients auf dem Computer auszuführen ... und wenn Sie den Streamer pausieren, pausieren Sie alle ... und es sollte auch mit Windows funktionieren (immer vorausgesetzt) Der bereits ausgegebene Audioausgang ist möglicherweise mit Programmen von Drittanbietern konfiguriert, falls Sie die beiden Clients auf dem Computer ausführen möchten.
Einige Worte mehr
Eine typische Streaming-Befehlszeile kann ähnlich sein
Es wird die Option
--sout-all
[ SO ] benötigtLesen Sie
vlc -H
, um einige Hinweise für die anderen (Tonnen) verfügbaren Optionen zu erhalten.Den Stream "abspielen"
Dabei ist x die Nummer des Audiostreams, den Sie auf diesem Client hören möchten.
Alles sollte auch einfach über die Server / Client-GUI erledigt werden können ...
Referenzen und weitere Lesungen
Vielleicht möchten Sie mehr von der Blog-Seite von Luuk lesen. "Verwenden Sie VLC, um mehrere Videoclips synchron auf mehreren Computern abzuspielen" [ 1 ] . Sie können eventuell versuchen, eine externe Audiospur hinzuzufügen, beginnend mit dieser Wiki-Seite von Videolan [ 2 ] , oder Sie können mit Gstreamer und anderen Ausgaben spielen, wie von Antonio in dieser Antwort vorgeschlagen [ 3 ] .
Der obige Gstreamer-Befehl kann eine minimale funktionierende Antwort für sich sein oder ein Weg, um die (Butter-) Fliege zu retten ...
... aber selten bin ich versucht, meinen eigenen Spitznamen zu verteidigen.
quelle
Die Streaming-Lösung hat einen Nachteil: Clients verwenden den Cache und können nicht mehr synchron sein. Es ist mir passiert.
Ein anderer Ansatz zum gleichzeitigen Ausführen von zwei verschiedenen Tracks, den ich für nützlich hielt, besteht darin, zwei Instanzen von VLC auszuführen und deren Wiedergabe zu synchronisieren. Aber ohne Automatisierung kann ich nicht richtig vorgehen (manuelle Aktionen nacheinander, die zu Verzögerungen führen).
Die Lösung besteht darin, beide VLC-Instanzen synchron über die Webschnittstelle zu steuern. Es kann über die GUI oder die Konsole aktiviert werden:
vlc --extraintf=http --http-host 127.0.0.1 --http-port 8081 --http-password any_password
Verwenden Sie für jede VLC-Instanz unterschiedliche Ports. Um die Wiedergabe zu steuern, reicht ein Befehl aus - Pause umschalten:
http://:[email protected]:8081/requests/status.xml?command=pl_pause"
Weitere Informationen zu Befehlen.
In diesem Fall müssen Sie lediglich ein Programm / Skript erstellen, das gleichzeitig eine HTTP-Anforderung an beide URIs sendet. Ich habe ein sehr einfaches Golang-Programm dafür geschrieben (hier ist der Quellcode ). JS ist ein weiterer guter Kandidat für diesen Zweck. Wenn Sie weiter gehen, können Sie weitere Befehle ausführen und diesem Programm / Skript globale Tastenkombinationen zuweisen.
Der Hauptpunkt, dass der Ansatz gut funktioniert.
quelle