F37 Kommandozeile - Beispiele

  • Wie "bastle" ich mir eine Kommandozeile?


    Teil 7


    Desktopaufzeichnung


    a) Einfache Aufnahmen (Bild und Ton)

    Die Aufzeichnung vom Desktop mit Bild und Ton ist in der Kommandozeile mit zwei VLC-Instanzen möglich. Anschliessend werden die getrennten Bild- und Tonaufzeichnung zu einer Aufzeichnung zusammengeführt. Man benötigt also drei Schritte (Kommandozeilen-Scripte) bis zum fertigen Ergebnis.


    Siehe Kommandozeile - Aufruf und Parameterübergabe - Teil 5

    - https://www.vlc-forum.de/thread/1867-f30-kommandozeile-aufruf-und-parameterübergabe/ #5



    b) Einfache Aufnahme des Desktop mit Bild und Ton in einer VLC-Instanz und in einem Vorgang mit zusätzlicher Installation eines "DirectShow Screen Capture Filters".


    Beispiel für ein "DirectShow Screen Capture Filter":

    - https://sourceforge.net/projects/screencapturer/files/

    Basiert auf: - https://github.com/rdp/screen-…der-to-video-windows-free


    Download "Screen Capture Recorder" (v0.12.10.exe):

    - https://sourceforge.net/projec…r%20v0.12.10.exe/download

    https://sourceforge.net/projects/screencapturer/files/Setup%20Screen%20Capturer%20Recorder%20v0.12.10.exe/download


    Die Java-Installation wird für die Desktopaufzeichnung mit dem VLC-Player nicht benötigt!

    Nachteil: Der Bildschirm wird um 180° gedreht und gespiegelt aufgenommen.

    Vorteil: Im Menü / Werkzeuge / Effekte und Filter des VLC-Players kann man diese Änderungen rückgängig machen.


    Script-Beispiel Desktopaufzeichnung (Bild und Ton) für 64-Bit Version des VLC-Players:

    Voraussetzung für die Funktion des Kommandozeilensriptes ist die erfolgreiche Installation des "Screen Capture Recorders"!

    Die notwendigen Effekte und Filter für die Desktopaufzeichnung (Bild drehen und spiegeln) sind im Script enthalten.

    Code
    @echo off
    START "" "C:\Program Files\VideoLAN\VLC\vlc.exe" dshow:// :dshow-vdev=screen-capture-recorder :dshow-adev=virtual-audio-capturer :dshow-aspect-ratio=16\:9 :sout=#transcode{vcodec=h264,vb=3500,vfilter=rotate{angle=180},vfilter=transform{type=vflip},acodec=mpga,ab=128,channels=2,samplerate=44100}:file{dst=D:\\Video\\Desktop.ts} :no-sout-all :sout-keep


    Erläuterung der einzelnen Parameter:

    --qt-start-minimized = minimierte Benutzeroberfläche (GUI) des VLC-Players

    :dshow-aspect-ratio=16\:9 = setzt das Bildseitenverhältnis 16:9 für DirectShow (Voreinstellung = 4:3)

    :dshow-vdev=screen-capture-recorder = Auswahl Bildquelle = DirectShow Screen Capture Filter

    :dshow-adev="virtual-audio-capturer" = Auswahl Tonquelle = DirectShow Screen Capture Filter

    ...vfilter=rotate{angle=180}... = Bild um 180° drehen

    ...vfilter=transform{type=vflip}... = Bild vertikal spiegeln



    Beenden der Aufzeichnung per Script:

    In der Taskleiste (rechts unten) lässt sich die Aufzeichnung über das Kontextmenü (rechte Maustaste) im VLC-Symbol (Kegel) anhalten und beenden.


    Im Anhang füge ich das Script für 64-Bit Versionen (getestet mit Version 3.0.10) des VLC-Players zum Herunterladen hinzu.

    Bitte nach dem Speichern die Dateiendung .txt entfernen.




  • Wie "bastle" ich mir eine Kommandozeile?


    Teil 8



    Bild und Ton getrennt streamen



    a) In diesem Beispiel soll der Ton lokal und das Bild als UDP-Stream wiedergegeben werden.


    Das Script ist für eine 64-Bit Version des VLC-Players geeignet.

    Als Quellsignal wird ein "Http Live Stream" (HLS) verwendet.


    Code
    @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{delay=1200},dst=es{access-video=udp,mux-video=ts,dst-video=224.1.1.1:1234}} --no-sout-display-video :sout-keep


    Erläuterungen der einzelnen Parameter

    --sout=#duplicate = verdoppelt den Stream für die getrennte Bearbeitung von Bild und Ton

    dst=display{delay=1200} = 1,2 Sekunden Verzögerung für lokale Tonausgabe (manuelle Synchronisation mit der Bildausgabe über udp)

    dst=es{access-video=udp = Ausgabe von ElementarStream per UDP (hier für Bild bzw. Video)

    --no-sout-display-video = lokale Bildwiedergabe wird unterdrückt


    Für die Wiedergabe des als Multicast-Stream verbreiteten Bildsignals benötigt man eine zweite VLC-Instanz.

    Die Wiedergabe kann auf dem gleichen PC oder einem anderen PC im lokalen Netzwerk erfolgen, wenn der Netzwerkswitch Multicast (IGMP) unterstützt.


    Code
    @echo off
    start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" --network-caching=300 "udp://@224.1.1.1:1234" :no-sout-all :sout-keep




    b) In diesem Beispiel soll das Bild lokal und der Ton als http-Stream wiedergegeben werden.


    Das Script ist für eine 64-Bit Version des VLC-Players geeignet.

    Als Quellsignal wird ein lokal (Laufwerk "D:\Video\Musikvideo.mp4") gespeichertes Video verwendet.


    Code
    @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


    Erläuterungen der einzelnen Parameter

    file:/// = Zugriff auf lokale Inhalte

    --sout=#duplicate = verdoppelt den Stream für die getrennte Bearbeitung von Bild und Ton

    dst=display{delay=300} = 0,3 Sekunden Verzögerung für die lokale Bildausgabe (manuelle Synchronisation mit Tonausgabe über http)

    dst=es{access-audio=http = Ausgabe von ElementarStream per http (hier für Ton bzw. Audio)

    --no-sout-display-audio = lokale Tonausgabe wird unterdrückt


    In einer zweiten VLC-Instanz auf dem Server kann man die Netzwerkadresse http://127.0.0.1:8080 für die Tonwiedergabe einsetzen.

    Auf einem zweiten Computer im lokalen Netzwerk setzt man die IP-Adresse des Streaming-Servers ein z.B. http://IP-Adresse-Server:8080/.

  • Wie "bastle" ich mir eine Kommandozeile?


    Teil 9



    Videoschnappschüsse automatisch erstellen



    a) Automatisch Videoschnappschüsse erstellen


    Das Script ist für eine 64-Bit Version des VLC-Players geeignet.

    Als Quellsignal wird ein lokal gespeichertes Video verwendet, wobei die Tonausgabe deaktiviert wird.

    Die Schnappschüsse werden automatisiert, während der Wiedergabe erstellt und lokal im PC gespeichert.

    Am Ende der Video-Wiedergabe wird der Prozess bzw. der VLC-Player automatisch geschlossen.

    Code
    @echo off
    start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" file:///D:/Video/Aufzeichnung.mp4 -I dummy --no-audio --zoom=0.1 --video-filter=scene --scene-format=png --scene-ratio=50 --scene-prefix=Bild --scene-path=D:\\Video\\images\\ vlc://quit


    Erläuterung der einzelnen Parameter:

    -I dummy = keine grafische Benutzeroberfläche

    --no-audio = keine Tonausgabe

    --zoom=0.1 = Verkleinerung der Videofenstergröße

    --video-filter=scene = internes Filter für die Erstellung der Schappschüsse

    --scene-format=png = Auswahl Bildformat (*.png) der Schappschüsse

    --scene-ratio=50 = Nach 50 Bildern wird ein Schappschuss erstellt

    --scene-prefix=Bild = Datei-"Vorname"

    --scene-path= = Speicherort der Schnappschüsse


    Das Script wurde mit mit dem VLC-Player 3.0.10 (64Bit) unter Windows 10 erfolgreich getestet.

    Mit dem Notepad-Editor kann man das Kommandozeilenscript individuell anpassen.




    b) Automatisch Videoschnappschüsse in gleicher Datei speichern


    Das Kommandozeilenscript ist für eine 64-Bit Version des VLC-Players geeignet.

    Als Quellsignal wird ein TV-Livestream im rtsp-Format als Beispiel verwendet.

    Jeder Snapshot erhält den gleichen Dateinamen "image.jpeg" und wird jeweils vom aktuellen Snapshot überschrieben.

    Code
    @echo off
    start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" "rtsp://212.200.255.151/rtv1" -I dummy --dummy-quiet --zoom=0.1 --video-filter=scene --scene-format=jpeg --scene-ratio=50 --scene-prefix=image --scene-replace --scene-path=C:\\Temp\\images\\ vlc://quit



    Erläuterung der einzelnen Parameter:

    -I dummy = keine grafische Benutzeroberfläche

    --dummy-quiet = Unterdrückt die Anzeige des Kommandozeilenfensters

    --video-filter=scene = internes Filter für die Erstellung der Schappschüsse

    --scene-prefix=image = Dateiname (image.*)

    --scene-ratio=50 = Anzahl der Bilder bzw. Snapshot die gespeichert werden (Bsp.: 50 bedeutet, ein Snapshot nach 50 Bildern wird gespeichert).

    --scene-format=jpeg = Dateiendung (*.jpeg)

    --scene-replace = Jeder neue Snapshot überschreibt den alten Dateinamen.

    --scene-path=C:\\Temp\\images\\ = Aufnahmeverzeichnis