Webcam Stream speichern

  • Hallo,

    hab eine Frage. Ich will den Stream einer Kamera "endlos" speichern. Das Problem ist irgendwann der Speicherplatz.

    Ist es möglich den Stream in eine Datei zu speichern die eine bestimmte Grösse hat z.B. 10GB. Wenn sie voll ist wird sie von vorne wieder überschrieben.

    Hab bisher keine Möglichkeit gefunden.

    Das abspeichern des Videos klappt bereits aber so wie es jetzt ist wird die Festplatte irgendwann zu klein


    mfg

  • Das ist mein Code für das Script:

    "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" "http://192.168.7.100/api/camera/snapshot?width=1280&height=960&fps=10" :sout=#transcode:duplicate{dst=file{dst=D:\20Uhr.mp4,no-overwrite},dst=display} :sout-all :sout-keep --stop-time=10 vlc://quit


    Ich will haben das nach 60 Minuten VLC die Aufnahem abbricht und schliesst aber das "stop-time" wird nicht beachtet. Habs auch schon so probiert...

    "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" "http://192.168.7.100/api/camera/snapshot?width=1280&height=960&fps=10" --stop-time=10 vlc://quit


    Quasi ohne Aufnahme, aber das Kommando wird immer ignoriert. Weiss jemand was der Grund dafür ist. Hab jetzt viel gegoogelt, manche sagen man solls mit run-time versuchen aber das ändert alles nichts


  • Hallo Goose,


    ich habe mir dein Script-Beispiel genommen und zum Test (Windows 10, VLC Version 2.2.6 (32-Bit)) leicht angepasst.


    a) Das Kamera-Eingangssignal habe ich gegen einen TV-Livestream ausgetauscht. Die Anführungszeichen kann man hier auch weglassen.

    b) Als Zeitangabe für die Dauer der Aufzeichnung habe ich den Parameter --run-time=20 verwendet (für 20 Sekunden Aufnahmezeit).

    Dein Ziel 60 Minuten Aufnahmezeit ergeben 3600 Sekunden für die Laufzeitangabe "--run-time=3600".

    c) Ohne die Angabe start im Script würde das Kommandozeilenfenster während der gesamten Aufnahmezeit sichtbar sein.

    d) Die Angabe no-overwrite habe ich raus genommen, da sie keine Wirkung zeigt und für dein Ziel nicht gewünscht ist.

    Will man den Dateinamen nicht überschreiben könnte man die Angabe --no-sout-file-overwrite verwenden.


    Beispiel-Script für die Aufnahme eines Livestreams mit 20 Sekunden Länge

    Code
    1. @echo off
    2. start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" "http://zdf0910-lh.akamaihd.net/i/de09_v1@392871/master.m3u8" :sout=#transcode:duplicate{dst=file{dst=C:\Temp\20Uhr.mp4},dst=display} :sout-keep --run-time=20 vlc://quit


    Dein Script-Beispiel könnte mit den folgenden Angaben funktionieren:

    Code
    1. @echo off
    2. start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" "http://192.168.7.100/api/camera/snapshot?width=1280&height=960&fps=10" :sout=#transcode:duplicate{dst=file{dst=D:\20Uhr.mp4},dst=display} :sout-keep --run-time=3600 vlc://quit


    Hinweise zur Kommandozeile hat Kodela im folgenden Link zusammengefasst.

    Link: F30 Kommandozeile - Aufruf und Parameterübergabe


    MfG

    Thomas

  • Schön dass es jetzt klappt.


    Die Zeitangaben mit run-time=... nimmt der VLC-Player wohl nicht sehr genau. Möglicherweise sind 10 Sekunden als Vorgabe zu wenig.

    Einen Test über 30 oder 60 Minuten habe ich nicht durchgeführt. Du kannst ja gern von deinen Ergebnisse berichten.


    MfG

    Thomas

  • Hallo Goose,


    eine kleine Änderung im Script sollte man noch vornehmen. Konkret kann man die Option transcode mit dem anschließenden Doppelpunkt löschen, da im Script keine Parameter für das Transcodieren des Kamerasignals angegeben sind. Das gekürzte Script sieht dann so aus:

    Code
    1. @echo off
    2. start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" "http://zdf0910-lh.akamaihd.net/i/de09_v1@392871/master.m3u8" :sout=#duplicate{dst=file{dst=C:\Temp\20Uhr.mp4},dst=display} :sout-keep --run-time=20 vlc://quit

    Diese Änderung solltest du auch für dein Script übernehmen.


    MfG

    Thomas

  • Kurzer Erfahrungsbericht:

    Ich hab drei PCs, an einem und das ist der wo ich getestet habe wird das run-time nicht angenommen. Hab keine Ahnung wieso, an den anderen funktionierts. Das heisst auch mein ursprüngliches Sript hat mit run-time... funktioniert, mit stop-time nicht. Nur eben an diesem einen PC gehts gar nicht, VLC Version ist überall die neueste drauf.

    Das transcode hab ich rausgenommen :-)


    Generell ist es so das ich mir 24 Scripte gemacht hab, jedes nimmt eine Std auf. Hat den Hintergrund das die Dateien nicht zu groß werden. Momentan hab ich eine Dateigröße von ca 3-4 GB pro Std., das ist ok und das File kann mit jedem Player problemlos angeschaut werden. Am nächsten Tag laufen die Scripte wieder ab und die Dateien werden überschrieben.

    Gestartet werden die Scripte über die Windows 10 Aufgabenplanung


    Funktioniert wunderbar bis jetzt, dank eurer Hilfe