Hallo,
ich würde gerne Video an eine UDP Adresse streamen und Audio lokal oder an einen remote pulseaudio server streamen.
Kann mir da jemand die korrekte command line Syntax nennen?
Danke,
DocMAX
Hallo,
ich würde gerne Video an eine UDP Adresse streamen und Audio lokal oder an einen remote pulseaudio server streamen.
Kann mir da jemand die korrekte command line Syntax nennen?
Danke,
DocMAX
Hallo DocMax,
das folgende Kommandozeilen-Beispiel stellt eine lokale Audio-Wiedergabe und einen UDP-Stream für das Video bereit. Mit dem Parameter --no-sout-display-video wird die lokale Videowiedergabe unterdrückt.
@echo off
start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" --network-caching=300 "http://static.france24.com/live/F24_EN_LO_HLS/live_web.m3u8" --sout=#duplicate{dst=display,dst=es{access-video=udp,mux-video=ts,dst-video=224.1.1.1:1234}} --no-sout-display-video :sout-keep
Mit dem zweiten Kommandozeilenscript erfolgt die Videowiedergabe.
@echo off
start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" --network-caching=300 "udp://@224.1.1.1:1234" :no-sout-all :sout-keep
Beide Kommandozeilen-Beispiele sind für eine 64-Bit Version des VLC-Players.
Ich habe mit der Version 3.0.7.1 unter Windows 10 erfolgreiche Test durchgeführt.
Zwischen der Bild- und Ton-Wiedergabe liegt ein zeitlicher Versatz von ca. 1,2 Sekunden.
MfG
Thomas
Hallo zusammen,
da ich kurz vor dem verzweifeln bin, hoffe ich, das mir jemand von Euch weiterhelfen kann. Deshalb hänge ich mich mal an diesen Thread dran. Im offiziellen VLC Forum hat man mich nur auf die CLI Paramter verwiesen, bei der Vielzahl an Kombinationen sehe ich aber nicht mehr durch. Folgendes möchte ich mit VLC realisieren.
Ein MP4 File soll wiedergegeben werden. Dabei soll der Video-Part lokal ohne Audio am HDMI ausgegeben werden. Das funktioniert bereits. Der Audio-Part soll über HTTP gestreamt werden. An dieser Stelle hänge ich. Weder das "es"-Modul bekomme ich ans laufen, noch funktioniert es mit "dst-audio". Somit wird derzeit Video und Audio gestreamt - was ich aber nicht möchte.
Ausserdem hatte ich festgestellt, das durch das Streaming das Audio ein Delay hat. Ich hoffe, das der verwendete "delay" Parameter korrekt ist um dies anzugleichen. Hier meine bisherige command line
vlc file:///"C:/temp/Video/Test.mp4" --sout=#duplicate{dst=http{mux=ffmpeg{mux=flv},dst-audio=:8080/},dst=display{noaudio, delay=1470} :no-sout-all :sout-keep
Es wäre super, wenn mir irgendjemand mit einem Tipp weiterhelfen könnte.
Tausend Dank!
Mario
Hallo Mario,
ja, die Anzahl der Kommandozeilenparameter ist nahezu unüberschaubar.
- https://wiki.videolan.org/VLC_command-line_help/
Im folgenden Beispiel kann ich mit dem VLC-Player Version 3.0.10 (64-Bit) unter Windows 10 das Videobild lokal ausgeben und somit auch über HDMI.
@echo off
start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" --network-caching=300 "file:///D:/Video/Musikvideo.mp4" --sout=#duplicate{dst=display,dst=es{access-audio=http,mux-audio=ts,dst=:8080}} --no-sout-display-audio :sout-keep
Das Tonsignal wird per http auf dem Port :8080 im lokalen Netzwerk gestreamt.
In einer zweiten VLC-Instanz kann man die Netzwerkadresse http://127.0.0.1:8080 für die Tonwiedergabe einsetzen.
Auf einem zweiten Computer setzt man die IP-Adresse des Streamservers ein.
MfG
Thomas
Hallo Thomas,
vielen Dank für das Beispiel. Folgende Fehlermeldung erhalte ich beim Start damit (VLC 3.0.10, Windows 64-Bit)
Streaming/Transkodierung fehlgeschlagen:
Es gibt kein passendes Streamausgabe-Access-Modul für "/://:8080".
Es scheint jedoch, das Video und Audio wie gewünscht geplittet wiedergegeben werden. Hättest Du noch eine Idee, wie ich die Ursache für die Fehlermeldung herausbekomme? Die Media-Information der Datei habe ich angehangen. Hier auch nochmal meine aktuelle command line:
vlc file:///"C:/temp/Video/Test.mp4" --sout=#duplicate{dst=display{delay=500},dst=es{access-audio=http,mux-audio=ts,dst=
:8080}} --no-sout-display-audio :sout-keep
Nochmals vielen Dank für das Beispiel !!!
Tschöö
Mario
Hallo Thomas,
ich habe die Streamout-Parameter mal einzeln getestet.
Dieser Teil funktioniert ohne Fehlermeldung
--sout=#duplicate{dst=display{delay=500}}
Lediglich dieser Teil mit dem ES-Modul erzeugt die o.g. Meldung
--sout=#duplicate{dst=es{access-audio=http,mux-audio=ts,dst-audio=:8080/}}
Hättest Du noch eine Idee, was an der Syntax falsch sein könnte? Ist halt leider wieder das ES-Modul, bei dessen Parameter Kaskadierung ich absolut nicht durchsehe - mal geschweifte Klammer, mal Hochkomma, mal Anführungszeichen.
thx
Mario
Hallo Mario,
danke für die Rückmeldung.
keine Fehlermeldung:
...dst=es{access-audio=http,mux-audio=ts,dst=:8080}}...
Syntax-Fehlermeldung:
...dst=es{access-audio=http,mux-audio=ts,dst=:8080/}}...
Wenn ich den Schrägstrich nach der Portangabe weglasse, dann tritt die Fehlermeldung nicht auf.
Fehlermeldung "VLC3010-http-Syntax-Fehlermeldung.PNG":
MfG
Thomas
Hallo Thomas,
ich habe einfach mal den Debug Level angeschaltet - es lag nicht an der Syntax. Das Problem ist wohl, das ich "vlc ..." über ein normales "cmd" aufrufe. Ich erhalte dann die nachfolgende "Permission denied" Meldung im Log:
main debug: looking for sout access module matching "any": 10 candidates
file error: cannot create stream-1-h264.: Permission denied
main debug: no sout access modules matched
es error: no suitable sout access module for `/://stream-1-h264.'
duplicate debug: - failed for output 0
main warning: new sout input failed (sout_input: 0000000005e69590)
main error: cannot create packetizer output (h264)
duplicate debug: duplicated a new stream codec=mp4a (es=1 group=0)
main debug: Buffering 25%
es debug: creating `http/ts://:8080'
Starte ich "cmd" mit Admin Rechten ist alles bestens. Da ich VLC immer nur standardmäßig installiere, wundert es mich, das scheinbar der normale User nicht völlig ausreicht. Ist Dir da was bekannt?
thx
Mario
Hallo Mario,
ich arbeite mit meinen Batch-Dateien immer in einem lokalen Laufwerk des Computers, ausserhalb des Windows Benutzerverzeichnisses.
Mir ist bislang nicht aufgefallen, dass man für die Kommandozeile unterschiedliche Benutzerrechte benötigt.
Vermutlich war in meinem Kommandozeilenbeispiel noch ein Fehler versteckt, den ich dank deiner Rückfragen jetzt gefunden habe.
Im Script wird für den Elementar-Stream #es zweimal der Parameter dst= eingesetzt, was vermutlich zu der Fehlermeldung Es gibt kein passendes Streamausgabe-Access-Modul für "/://:8080 führt.
Es ist besser für die Tonausgabe den Parameter dst-audio= zu verwenden. Hier ist der Schrägstrich nach der Portangabe egal.
@echo off
start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" --network-caching=300 file:///"D:/Video/Musikvideo.mp4" --sout=#duplicate{dst=display{delay=300},dst=es{access-audio=http,mux-audio=ts,dst-audio=:8080/}} --no-sout-display-audio :sout-keep
Danke für die Rückmeldungen.
MfG
Thomas
Danke nochmal für die Tipps! Läuft jetzt wie gewünscht.
Tschöö
Mario
Hallo Thomas,
sorry das ich doch nochmal nerve, aber ich muss jetzt leider für mein Vorhaben auf einen Mac wechseln (war nicht geplant). Hättest Du eventuell noch einen Tipp, wie die nun fertige command line dort aussehen muss?
Das ist meine nun fertige Windows command line
vlc file:///"C:/temp/Video/Test.mp4" --sout=#duplicate{dst=display{delay=500},dst=es{access-audio=http,mux-audio=ts,dst-audio=:8080/}} --no-sout-display-audio :sout-keep
Und hier die (vermutliche) Mac command line. Leider erhalte ich aber einige Fehler
$ /Applications/http://VLC.app/Contents/MacOS/VLC -I rc /Test.mp4 --sout='#duplicate{dst=display{delay=500,dst=es{access-audio=http,mux-audio=ts,dst-audio=:8080/}} --no-sout-display-audio :sout-keep
Hier die Mac-Meldungen:
Last login: Fri May 1 13:17:47 on ttys000
AlexR-MacBook:~ alex$ /Applications/http://VLC.app/Contents/MacOS/VLC /Users/alex/Desktop/Test.mp4 --sout=#duplicate{dst=display{delay=500},dst=es{access-audio=http,mux-audio=ts,dst-audio=:8080/}} --no-sout-display-audio :sout-keep
VLC media player 3.0.10 Vetinari (revision 3.0.10-0-g7f145afa84)
[00007fc31740e3e0] main libvlc: VLC wird mit dem Standard-Interface ausgeführt. Benutzen Sie 'cvlc', um VLC ohne Interface zu verwenden.
[00007fc3175daf50] main stream output error: stream chain failed for `duplicatedst=esdst-audio=:8080/'
[00007fc3190340f0] main input error: cannot start stream output instance, aborting
[00007fc31b0520a0] main stream output error: stream chain failed for `duplicatedst=esdst-audio=:8080/'
[00007fc31c0000f0] main input error: cannot start stream output instance, aborting
Ich habe leider überhaupt keine Ahnung von Mac, weshalb ich nicht weiß, ob die VLC syntax falsch ist oder ich einfach einen Mac-Fehler mache.
Besten Dank und Tschöö
Mario
Hallo Mario,
ich kann erst nächste Woche mit einem MacBook testen.
Füge mal zwei Links mit Hinweisen (englisch) für MacOS hinzu.
- https://wiki.videolan.org/MacOS/
- https://wiki.videolan.org/Command-line_interface/#macOS
MfG
Thomas
Hallo Thomas,
kein Problem, ich wäre schon glücklich, überhaupt den entscheidenden Tipp zu erhalten - da warte ich auch gern.
Das Mac Wiki hatte ich bereits gelesen, es ist jedoch wie ich finde sehr oberflächlich, was das Thema CLI und Streamout Module angeht.
Danke und schönes WE!
Mario
Hallo Mario,
bin jetzt einen Schritt weiter gekommen und konnte die Fehlermeldung replizieren.
Im Kommandozeilenscript für den Mac fehlen die Hochkomma ("#duplicate...") für das Modul duplicate.
#!/bin/sh
/Applications/VLC.app/Contents/MacOS/VLC -I rc /Test.mp4 --sout="#duplicate{dst=display{delay=500},dst=es{access-audio=http,mux-audio=ts,dst-audio=:8080/}}" --no-sout-display-audio :sout-keep
Ich habe die Kommandozeilendatei mit den Vorgaben für den Mac mit TextEdit bearbeitet bzw. nano erstellt.
Gespeichert wird die Datei mit der Endung *.command z.B auf dem Desktop (~/Desktop/Dateiname.command).
Anschliessend im Terminal die Datei ausführbar machen mit: chmod a+x Dateiname.command.
Ein Doppelklick auf die *.command Datei führt das Kommandozeilenscript aus.
Ob die Funktion der Kommandozeile wie unter Windows funktioniert müsste man noch prüfen und ggf. anpassen.
MfG
Thomas
Hallo Thomas,
ich konnte es am Wochenende testen und es hat wie gewünscht funktioniert.
Insofern nochmals vielen Dank für Deine Hilfe!!!
Tschöö
Mario