2016-06-06 11 views
-1

Angenommen, ich habe eine Streaming-Video-URL rtsp: // was auch immer, und ich möchte diesen Video-Stream als eine Reihe von Dateien ungefähr in der gleichen Größe oder Dauer in meinem Dateisystem speichern. Idealerweise möchte ich die Dateien mit einem Start- und Stoppzeitstempel als Teil des Dateinamens speichern, und jede Datei sollte so beschaffen sein, dass sie eigenständig als Videodatei angezeigt werden kann, wenn sie jemand sehen möchte. Ich verstehe, dass ffmpeg eine Segmentbefehlsoption hat, die es mir erlaubt, nach Zeit zu segmentieren und in einer Reihe von Dateien wie outfile% 3d.dat oder was auch immer zu speichern. Aber nehmen wir an, ich möchte dies fortwährend tun und die Dateien zyklisch durchgehen (alte alt werden lassen), wenn die Gesamtgröße aller gespeicherten Dateien einen bestimmten Wert überschreitet. Angenommen, ich möchte die letzten 500 GB Video von dieser Streaming-URL speichern und dies Tag für Tag kontinuierlich in die ferne Zukunft tun. Was passiert mit dem Ausgabedateinamen, nachdem outfile999.dat gespeichert wurde? Beginnt die Zählung bei 0 wieder? Oder stoppt ffmpeg einfach oder stürzt ab? Gibt es einen ffmpeg-Befehl, der alte Dateien segmentieren und auslagern kann, oder müsste ich sonst ein anderes Programm gleichzeitig ausführen oder müsste ich mich dafür in ffmpeg einklinken? Ich bin ziemlich neu zu ffmpeg, so dass irgendwelche Vorschläge, die Sie ffmpeg Experten haben könnte, wie dies zu tun wäre willkommen. Ich begrüße auch Vorschläge für andere Kommandozeilen-Linux-Tools, die für diese Anwendung möglicherweise besser sind.Verwenden Sie ffmpeg, um Streaming-Video zu segmentieren

UPDATE: So stellt sich heraus, dass ffmpeg einen Segmentierer eingebaut hat, und ich kann die Dateien so segmentieren, dass die Dateinamen das Datum datetime als Teil des Dateinamens haben. Ich habe einen Befehl wie folgt verwendet:

ffmpeg -i rtsp://camera_feed_url_here -c copy -f segment -segment_list out.list -segment_time 900 \ -segment_atclocktime 1 -strftime 1 "%Y-%m-%d_%H-%M-%S.mkv" 

Das sind die guten Nachrichten. Die schlechte Nachricht ist, dass, wenn ich diesen Befehl ausführen, nach ca. 1 Minute, um es nur diesen Fehler wirft und stoppt:

rtsp: // camera_feed_url_here: Ungültige Daten gefunden, wenn die Eingabe der Verarbeitung

Kein anderer Fehler oder Diagnose mesages sind ausgedruckt. Selbst wenn ich mit -loglevel debugge, scheint es nur mit dieser Fehlermeldung zu sterben.

Als ich ffmpeg gebaut, verwendet diese:

./configure --enable-demux='rtsp,rtp,sdp,flac,gif,image2,image2pipe,matrosk' --enable-network --enable-protocols --enable-decoder=h264 

Irgendwelche Ideen, was ich falsch mache und wie kann ich diesen Fehler machen weggehen?

Antwort

0

Nun, es stellt sich heraus, dass ich die falsche RTSP-URL verwendet habe. Eigentlich funktioniert der obige Befehl für ffmpeg mit Segmentierung gut. Eine andere Option, die auch funktioniert (mit der richtigen URL) ist openRTSP. Ich verklagte diesen openRTSP Befehl und das funktioniert auch in Ordnung:

/path/to/openRTSP -4 -w 1920 -h 1080 -f 25 -b 1000000 -V -t -P 60 -u username password -F outfiles rtsp://ipaddress_here/Streaming/Channels/1 

Die oben wird eine neue Datei alle 60 Sekunden speichern und nennen es Outfiles-xxxx.mp4 wobei xxxx ein Indikator für die Zeitscheibe der Datei ist. Mit der Option -u können Sie den Benutzernamen und das Passwort für eine passwortgeschützte RTSP-Quelle eingeben.

Verwandte Themen