Automatisch Videoschnappschüsse per Kommandozeilenparameter erstellen?

  • Ich habe die folgende Platform: Win10 64Bit, VLC 3.0.8 Vetinari, und diverse Filme mit Ton im .MTS Format


    Diese Videofilme zeigen technische Abläufe, welche mit mehreren Kameras gleichzeitig aufgenommen wurden.

    "Synchronisiert" wurde das ganze über den Ton, indem eine "Tröte" im Hintergrund zu festgelegten Zeitabständen einen Ton macht.


    Aus diesen Videos müssen nun Standbilder zur gleichen "echten Zeit" erzeigt werden.


    Dazu sollte es doch gehen, wenn man eine Batch-Datei (heißen die noch so ;-) unter Windows hat, welche VLC startet, die .MTS Datei zum öffnen übergibt und Parameter für die Videoschnappschüsse übergibt. Abgespeichert werden sollen die Bilder dann im gleichen Verzeichnis, in dem die Videodatei liegt.

    Ich würde den jeweils ersten Zeitpunk manuell durch anschauen des Angangs des Videos ermitteln (Schnappschuss 0 nach z Sekunden) und den dann so übergeben wollen, und dann jeweils alle weiteren 60 Sekunden einen Videoschnappschuss machen. (T0+x*60sec) bis zum ende des Videos.


    Hier steht unter Punkt 2 schon etwas in der Art, wie man es manuell machen kann. Um es aber für jedes Video manuell durchzuklicken, sind es zu viele Videos, bzw in Zulunft werden es auch noch mehr werden.

    http://www.preventionspeaks.or…genden-tipps-extrahieren/

    Manuell habe ich es ausprobiert. Es geht, aber das Intervall beginnt immer mit T=0sec zum start des Videos. Ich brauche aber einen Offset, meist so um die 40 Sekunden rum.


    Könnt Ihr mir da ein wenig Helfen, und mich da auf den richtigen Pfad der Parameterübergabe bringen. Leider hab ich mit den Kommandozeilenparametern noch nie gearbeit, aber ich weiß, dass es sehr viele sind.

  • Schon mal der erste Schritt zum Erfolg:

    Wenn man VLC so einstellt, dass es das Video NICHT sofort startet (Strg+P -> alle Einstellungen -> Wiedergabeliste -> Pausiert starten) und dann erstmal den Startpunkt sucht, dann weiß man ja, wo er ist.

    Dann wieder auf STOP gehen und über Strg+N die Datei neu öffnen um im Öffnungs-Dialog unter "Mehr Optionen anzeigen" -> Startzeit den Versatz eingeben.

    Wenn man dann OK sagt, hat man schonmal den Snapshot von T=0 erstellt.

    Läuft das Video dann los, erstellt der Filter die Snapshots zu den gewünschten Zeiten.


    Also manuell geht das :-) Jetzt eben noch mit Kommandozeilenparametern ;-)

  • Hallo DD2MIC,


    ich habe einen möglichen Ansatz gefunden mit der Kommandozeile aller vorgegebener Bildanzahl jeweils einen Schnappschuss zu erstellen.

    Das Kommandozeilen-Script habe ich mit der Version 3.0.10 (64-Bit) des VLC-Players erfolgreich unter Windows 10 getestet.


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


    Mein Beispielvideo befindet sich im Verzeichnis D:/Video/Desktop.mp4. Mit der Batchdatei wird aller 50 Videobilder mit dem Parameter --scene-ratio=50 ein neuer Schappschuss im Verzeichnis D:/Video/Image/ erstellt. Wenn die Bearbeitung abgeschlossen ist wird der VLC-Player mit dem Parameter vlc://quit geschlossen.

    Der zeitliche Versatz bzw. Starzeitpunkt könnte mit dem Parameter --start-time= im Script ergänzt werden.


    Diese Quelle zum Erstellen von Videoschnappschüssen ist nicht mehr aktuell, da der Parameter image-out-... nicht mehr verwendet wird.

    - https://wiki.videolan.org/VLC_HowTo/Make_thumbnails/


    Der Parameter --image-out wird im Grunde durch --scene ersetzt.

    - https://wiki.videolan.org/Documentation:Modules/scene/


    Füge noch den Link zur Kommandozeilenhilfe hinzu.

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


    MfG

    Thomas

  • Ich hab es nun in eine "vlc-snapshots.bat" Datei gebaut:

    - So tut es nun, was es im Moment soll und es können mehrere Instanzen parallel laufen und laufen eben so lange sie brauchen.

    Code
    @echo off
    echo.
    echo Syntax: vlc-snapshots(.bat) "Input-File" "offset(sec)"
    echo.
    echo Input File: %~s1
    echo Output Path: %~dps1
    echo Offset(seconds): %2
    pause
    start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" file:///%~s1 --dummy-quiet --video-filter=scene --scene-format=png --scene-width=640 --scene-height=360 --scene-ratio=3000 --scene-prefix=Snap-%~xn1- --scene-path=%~dps1 --start-time=%2 vlc://quit