VLC Command Line Corner
#1
Hallo in die Runde,

ich habe mal so eine kleine Ecke hier aufgemacht, denn ich denke das könnte Spaß machen und vielen helfen.

Die Story: Mein allerliebst zum Rippen benutzter StreamRipper hat offenbar Probleme mit „mp4a“ Radio-Streams. Also habe ich mich nach Ersatz umgesehen bzw. gefragt, ob man nicht den VLC Player dafür nutzen könne. Er kann ja sehr viel, sofern man über die Benutzeroberfläche arbeitet. Aber was ist, wenn man ihn über die Kommandozeile steuern möchte? Nun, nach etwas suchen wurde ich im „VLC-Wiki“ mehr als fündig. Von der Menge der Befehle her, muss das Ding einfach alles können!

http://wiki.videolan.org/VLC_command-line_help

Frisch ans Werk aber doch ziemlich überflutet mit Befehlssyntax gelang es mir immerhin, eine kanadische mp4a-Station erfolgreich zu saugen und eine kleine Batch-Datei dafür zu erstellen (Alles in einer Zeile)

Code:
c:\Programme\VideoLan\vlc\vlc http://1721.live.streamtheworld.com/CKRUFMAAC :no-video --sout "#transcode{acodec=mp3,ab=128,channels=2,samplerate=44100}:std{access=file,mux=dummy,dst=E:\\VLCWorkbench\\test.mp3}"


Leider trotz aller Versuche kommt bei diesem Sender und „mp4a”hinten Mono raus, obwohl alle Parameter „Stereo“ (channels=2) sagen und auch Stereo in den Player reinkommt. (Man kann das beim laufenden Player sehr schön sehen.

Ein Gegenversuch mit einer anderen Station die beispielsweise „mpga“ streamt geht es ohne Probleme. Alle Parameter haben Wirkung und man kann das Streamen sehr schön automatisieren.

Ich will jetzt hier nicht um Hilfe rufen, werde sicher noch daran weiter basteln bzw. mal sehen ob ich ggf. ein Codec-Update o.ä. brauche. Mir geht es bei dem Thread mehr um gemeinsam die Möglichkeiten des VLC auszureizen und zum Mittmachen und Nutzen animieren Big Grin Frei nach dem Motto: Tricks und Kniffe mit der VLC Kommandozeile...

Hier noch ein Link zum Appetit holen:

http://wiki.videolan.org/Extract_audio


VG
Michael
Zitieren
#2
Hallo Michael,

vielen Dank für den Tip mit dem VLC Aufruf von der Kommandozeile ! Das kann ich gerade gut brauchen.

Viele Grüße, Hagen
Zitieren
#3
Klappt es mit anderen Playern, den mp4a Stream in Stereo abzuspielen? Es könnte ein Bug in VLC sein, die gugl Suche brachte folgendes Ergebnis, wobei mir nicht klar ist, ob das in der neuesten Version eingearbeitet ist.

http://trac.videolan.org/vlc/ticket/6298
Zitieren
#4
Hallo Kaiman,

der VLC kann den Stream ja selbst richtig abspielen. Nur beim Konvertieren geht es schief. Dein Link ist gut, die Beschreibung passt sehr gut. Allerdings müßte meine Version den beschriebenen Fix schon haben. Immerhin ist das Ticket schon 9 Monate alt. Werde nachher zu Hause mal die Versionen vergleichen und testen, ob ich das Fix.diff irgendwie importieren kann.

VG
Michael

@Hugo: Dachte ich es mir doch, dass es auch andere gebrauchen können! Geteilter Spaß ist eben doch doppelte Freude!
Zitieren
#5
Hallo,

so ich habe derzeit die Version 2.01 in Betrieb. Die kann es in Mono. Dann habe ich die auf die Version 2.04 upgedated, die läuft sehr unstabil und kracht dauernd weg. Also wieder zurück. Auf einer anderen Maschine hatte ich noch die Version 2.00, die macht es auch nur in Mono.

Das mit dem Fix.diff war falsch gedacht. Das sind Code-Fragmente, die man in den Source-Code einbauen kann. Dazu müßte man vermutlich den ganzen Source-Code erst einmal in eine IDE packen und compilieren.

Also erst mal in Mono Big Grin

VG
Michael
Zitieren
#6
Funny:

mit dieser Zeile bekomme ich einen Stereo output in eine Datei. Leider in zu schneller Geschwindigkeit beim Abspielen Big Grin Kennen wir das nicht irgendwoher ?

Code:
c:\Programme\VideoLan\vlc\vlc.exe http://1721.live.streamtheworld.com/CKRUFMAAC :no-video --sout "#transcode{acodec=s16l,ab=128, channels=2,samplerate=44100}:std{access=file,mux=dummy,dst=E:\\VLCWorkbench\\test.wav}"

VG
Michael
Zitieren
#7
Na, wer sagt denn, das Marmelade keine Kraft gibt!

Code:
c:\Programme\VideoLan\vlc\vlc.exe http://1721.live.streamtheworld.com/CKRUFMAAC :no-video --sout "#transcode{acodec=s16l,channels=2, samplerate=88200}:std{access=file,mux=dummy,dst=E:\\VLCWorkbench\\test.wav}"


Ich habe etwas mit der Samplerate gespielt. Zumindest der Cooledit kann jetzt nach der wahl der Rate beim Öffnen die Datei richtig wiedergeben.Witzig, dass ich beim Öffnen dann 44100 angeben muss ???? So jetzt nur noch die Dateien etwas kleiner bekommen und es schaffen das die Player die Rate erkennen.

VG
Michael
Zitieren
#8
acodec=s161 Standardausgabe zur Soundkarte?

Ich nehme an, daß SBR, eine Funktion zur Höhenanhebung, im Codec nicht richtig implementiert ist. Kleiner bekommen kein Problem, ist ja eh nur 128er mp3.
Zitieren
#9
Hallo Kaiman,

s16l (in Großschrift S16L) scheint ein Standard Codec für WAV zu sein.

Wenn ich die Datei mit dem CoolEdit öffne und dann in einem beliebigen Format speichere habe ich dann auch alle Infos drinn, damit die Player damit klarkommen.

Ich habe jetzt auch noch einen wichtigen Parameter gefunden, der die Dauer der Aufzeichnung angibt: --run-time=20 (20 Sekunden)

Meine Zeile sieht inzwischen so aus:

Code:
c:\Programme\VideoLan\vlc\vlc.exe http://1721.live.streamtheworld.com/CKRUFMAAC :no-video --run-time=20 --sout "#transcode{acodec=s16l,channels=2, samplerate=88200}:std{access=file,mux=mp3,dst=E:\\VLCWorkbench\\test.mp3}"

Eine fertige MP3 kommt allerdings noch nicht raus. Nur dem Namen nach.

Aber das funktioniert schon einmal um es mit dem Task-Scheduler von Windows aufzurufen.

VG
Michael
Zitieren
#10
Bei mir ist die Senderliste etwas unübersichtlich, unter Netzwerkstreams - Netzwerk. Es stehen Sender drin wie Hitradio oder KWAX...die ich eigentlich nur getestet habe und nicht mehr brauche. Ich finde allerdings keine Möglichkeit, diese zu entfernen, beim nächsten öffnen stehen sie wieder drin. Eine Suche im VLC-Verzeichnis nach Begriffen brachte keine Treffer. Hast du eine Idee?
Zitieren
#11
Hallo Kaiman,

ich hoffe, ich habe das richtig verstanden.

Unter

C:\Dokumente und Einstellungen\[UserName]\Anwendungsdaten\vlc

gibt es eine Datei namens "vlc-qt-interface.ini" darin sind die letzten URLs unter [Open Dialog] gespeichert. Dort kannst du die URLs die du nicht mehr möchtest einfach rauslöschen.

VG
Michael
Zitieren
#12
Ach das Benutzerverzeichnis natürlich. Bei mir unter C:\Benutzer\Username\Appdata\Roaming\vlc. In der Ini-Datei unter [OpenDialog]. Endlich ist die Liste schlanker.
Zitieren
#13
Hallo in die Runde,

so, die erste nächtliche Session ging "fast" gut. Aufnahme wurde pünktlich gestartet und auch wie erwartet aufgezeichnet. Leider scheint die Aufnahme nach 74 min gestoppt zu haben, ob wohl sie 22000 Sekunden (6Std 10 min) hätte laufen müssen. So etwas hatte ich schon mal beim Magix Ripper. Wenn die Leitung mal kurz weg war, brach die Aufnahme ab. Der Streamripper machte das besser. Ich habe mal wieder in der Command Line Help des VLC gesucht und den Parameter --ipv4-timeout gefunden.

Code:
c:\Programme\VideoLan\vlc\vlc.exe http://1721.live.streamtheworld.com/CKRUFMAAC :no-video --run-time=22000 --ipv4-timeout=15000 --sout "#transcode{acodec=s16l,channels=2,samplerate=88200}:std{access=file,mux=mp3,dst=E:\\VLCWorkbench\\%1_test%DATE%_%TIME%.mp3}"


Mal sehen ob es hilft oder kennt jemand noch einen anderen Retry ?

VG
Michael
Zitieren
#14
Wenns hakelt versucht man normalerweise an den Puffereinstellungen etwas zu ändern. Vielleicht ist das diese Option?

--sout-mux-caching=<Ganzzahl [-2147483648 .. 2147483647]>

Zwischenspeichern des Muxer bei der Streamausgabe (ms)
Dies erlaubt es Ihnen, den Ausgangszwischenspeicher-Wert für den
Streamausgabe-Muxer festzulegen. Dieser Wert sollte in Millisekunden
angegeben werden.
Zitieren
#15
Hallo in die Runde,

ich habe hier noch einmal eine Command Line die den WDR3 aufzeichnet. Sie speichert das empfangene Format einfach ab ohne es zu konvertieren.

BatchDatei:
Code:
ping 193.99.144.85

c:\Programme\VideoLan\vlc\vlc.exe http://www.wdr.de/wdrlive/media/wdr3_hq.m3u --ttl=1 --sout-keep --sout-audio --run-time=22000 --ipv4-timeout=15000 --sout "#std{access=file,mux=raw,dst=E:\\VLCWorkbench\\%1_test%DATE%_%TIME%.mp3}"

pause

Das Ping dient dazu erst einmal die Verbindeung ins Internet zu testen bzw. vorab zu öffenen. Mein Router scheint ne Sekunde o.ä. dafür zu benötigen, wenn kein PC online war. Der Pause-Befehl, damit man die Ausgabe in Ruhe betrachen kann.

Mit der %1 Umgebungsvariable kann ich der Batchdatei einen Namen für die Ausgabedatei mitgeben der dann noch mit %DATE% und %TIME% erweitert wird, damit bei mehrfachen Aufrufen die Dateien nicht überschrieben werden.

Der Aufruf der Batch z.B.: WDR3.bat JazzKonzert

Einenen kleinen Haken hat's noch: In der Windows DOS-Box liefert %TIME% auch kommagetrennte Zehntelsekunden. Durch das Komma wird der Rest der Namensgebung leider abgeschnitten.

VG
Michael

Add:

Habe das Problem mit dem Komma in der Zeit jetzt so gelöst und gleichzeitig noch meine bevorzugte Dezimalschreibweise bekommen:

Code:
SET UHRZEIT=%time:~0,2%%time:~3,2%%time:~6,2%
SET DATUM=%date:~6,4%%date:~3,2%%date:~0,2%

ping 193.99.144.85

c:\Programme\VideoLan\vlc\vlc.exe http://www.wdr.de/wdrlive/media/wdr3_hq.m3u --ttl=1 --sout-keep --sout-audio --run-time=22000 --ipv4-timeout=15000 --sout "#std{access=file,mux=raw,dst=E:\\VLCWorkbench\\%1_%DATUM%_%UHRZEIT%.mp3}"

pause

Manchmal hilft Gogggeln. Was alles mit DOS möglich ist ......
Zitieren
#16
Hallo Kaiman

Der Befehl scheint sich auf das Puffern des Outputs zu beziehen. Ich brauche aber etwas, dass das Abbrechen der Aufnahme verhindert, wenn der Eingangsstream kurz weg ist o.ä. Aber ich werde das mal ausprobieren. Z.Zt scheint bewusste Station nicht zu streamen. Deshalb sind Tests i.M. nicht möglich. In Kanada schlafen scheinbar alle noch Big Grin

VG
Michael
Zitieren
#17
In der Uhrzeit Variable sind jetzt 3 Parameter drin die mir nichts sagen. Die Bedeutung der Tilde ist mir auch nicht klar. Kannst du das kurz erklären?
Zitieren
#18
Hallo Kaiman,

bis heute war mir diese Art von Syntax auch unbekannt. Habe das aber beim Gogggeln gefunden. Könnte sein, dass es nur unter Windows (XP oder höher) geht.

Code:
Zuweisung einer Variablen in der DOS Umgebung der aktuellen Shell:
SET UHRZEIT=

%TIME% ist wie %DATE% eine immer vorhandene Systemvariable mit aktueller Zeit und Datum bei jeder Abfrage:

Z.B.: ECHO  %TIME% gibt die aktuelle Uhrzeit aus.

Mit der folgender Syntax erhält man zwei Zeichen ab Stelle 0 dieser Variablen:
%time:~0,2%
damit 2 Zeichen ab Stelle 3
%time:~3,2%

usw.

Der Rest ist nur noch das Zusammensetzen der einzelnen Abfragen und das Setzen in die Unmgebung in einer eigenen Variablen
SET UHRZEIT=%time:~0,2%%time:~3,2%%time:~6,2%

auf die  ich dann z.B. so wieder zugreifen  kann:

ECHO UHRZEIT


Der Doppelpunkt und die Tilde müssen so eine Art "TeilString"-Funktion sein.

Interessant wäre in diesem Zusammenhang, wie sich die alten DOS-Befehle under den Windows-Versionen weiterentwickelt haben. Villeicht kennt jemand ein entsprechendes Wiki.


VG
Michael
Zitieren
#19
Alles klar, dann viel Glück beim Aufnehmen :winker:
Zitieren
#20
Hallo in die Runde,

so, ich glaube jtzt hab ich es! Die Streams scheinen jetzt längere Zeit stabil in die Konserve zu wandern. Irgendwo im WEB habe ich einen Hinweis auf den Versuch mit "-R" gefunden und im VLC-Wiki diesen Parameter afür an das Ende des Strings "Confusedout-keep"


Code:
c:\Programme\VideoLan\vlc\vlc.exe http://1721.live.streamtheworld.com/CKRUFMAAC :no-video -R --run-time=%2 --sout-mux-caching=10000 --ipv4-timeout=15000 --sout "#transcode{acodec=s16l,channels=2,samplerate=88200}:std{access=file,mux=raw,dst=E:\\VLCWorkbench\\SENDER_%1_%DATUM%_%UHRZEIT%.mp3}" :sout-keep

Mit %1 gebe ich jetzt beim Aufruf meiner Batch einen Sendungsnamen mit und mit %2 die Dauer in Sekunden.

In dem Aufruf sind sicher noch ein paar überflüssige Angaben, aber die werde ich im Laufe der Zeit bei Ausschlusstests herausfinden. Im Moment läuft es !

VG
Michael
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste