![]() |
MJPEG in Videodatei speichern
Nachdem ich (mit etwas Hilfe) eine Komponente zum Empfang eines
![]() Hintergrund: Ich habe drei IP-Outdoor-Überwachungskameras, die rund um die Uhr auf Bewegungen reagieren und dann ein Video aufnehmen. (Das läuft mittels einer Software eines Drittherstellers auf meinem Server) Da die Software allerdings (durch die Bewegungserkennung) relativ hohe CPU-Auslastungen, und damit auch Strom verbraucht, und 99% aller "Bewegungen" sowieso nur herumfliegende Blätter sind, möchte ich die Software ablösen. Ich möchte also eine Software schreiben, die ebenfalls auf meinem Server als Dienst läuft. Sie soll die MJPEG-Streams empfangen und als Videos abspeichern. Die Videos sollen jeweils nur X Minuten lang sein, danach soll ein neues Video anfangen. (z.B. 30 Minuten pro Video) Außerdem sollen alle Videos älter als X Minuten/Tage automatisch gelöscht oder überschrieben werden. Angenommen ich möchte alle Videos der letzten 48 Stunden sehen können: MaxDeleteTime: 2880 (48 Stunden = 2880 Minuten) MaxVideoLength: 30 (30 Minuten) Macht dann eine Anzahl von 96 Videodateien. Kennt jemand eine Komponente / Klasse, mit der man einfach aus vielen JPEG-Frames ein Video speichern kann? |
AW: MJPEG in Videodatei speichern
Ich würde fast vermuten, dass man den Datenstrom so wie er kommt fast unverändert in einen RIFF-AVI Container werfen könnte. Was dessen Header noch braucht müsste sich den Specs entnehmen lassen. Aber was anderes: MJPEG komprimiert vergleichsweise schwach (ganz grob etwa 1:20, MPEG1 liegt dagegen schon bei rund 1:50 im Durchschnitt (beides laut Wikipedia)).
Nehmen wir mal 640x480 mit 24bpp an, dann hat ein Frame 921.600 Byte Raw-Data. Dividiert durch 20 noch 46.080 Byte. Bei 15fps sind das 691.200 B/s, bzw. 2.488.320.000 B/h. 1,16 GB für 30min Video! Von einer Cam! Für 48h Aufnahme von 3 Cams sind also schlappe 333 GB im Mittel zu veranschlagen, gerade wenn viele Pflanzen im Bild sind eher merkbar darüber. Und das ganze auch noch bei geringer Auflösung und dem was ich als unterst sinnvolle Framerate ansehen würde. Ich würde daher stark dazu tendieren, die Streams durch einen XviD Codec zu jagen bevor ich sie irgendwo ablege. |
AW: MJPEG in Videodatei speichern
Ja, das kommt noch dazu... Gibt es da was brauchbares fertig? :-)
btw.: So ein Frame hat ca. 35 - 37kb |
AW: MJPEG in Videodatei speichern
Das einzige was ich für Delphi kenne, wäre das DSPack. Damit kommt man nach etwas Gewöhnung ganz gut an die im System installierten Codecs heran. Leider liegt mein Projekt damit einige Jahre zurück, und existiert nicht mehr als Source. Daher kann ich leider nicht spontan konkreter werden :? (Man hat dort einer Methode im Prinzip Einzelbilder gefüttert, und je nach Einstellungen kam hinten ein Stream im jeweiligen Format heraus. Ob man gleich den nackten MJPEG Stream hinein gießen kann weiss ich leider nicht - wäre ja schick.)
|
AW: MJPEG in Videodatei speichern
Naja, den nackten MJPEG-Stream hineinpacken möchte ich auch gar nicht... (ich möchte z.B. erst eine Uhrzeit usw. auf das JPEG zeichnen)
Aber danke schon mal, ich werde mir das mal ansehen =) |
AW: MJPEG in Videodatei speichern
Hallo erstmal an alle im Forum, da dies mein erster Post ist.
Ich will mich gleich mal fur die Hilfe hier im Thread bedanken. Es hat zwar richtig lange gedauert bis es geklappt hat, aber die Hauptsache ist, dass es funktioniert hat. Gruss Heinz |
AW: MJPEG in Videodatei speichern
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz