AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia MJPEG in Videodatei speichern
Thema durchsuchen
Ansicht
Themen-Optionen

MJPEG in Videodatei speichern

Ein Thema von Morphie · begonnen am 2. Okt 2013 · letzter Beitrag vom 8. Okt 2013
Antwort Antwort
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#1

MJPEG in Videodatei speichern

  Alt 2. Okt 2013, 12:15
Nachdem ich (mit etwas Hilfe) eine Komponente zum Empfang eines MJPEG-Streams geschrieben habe, möchte ich als 2. Schritt diesen Stream in eine Videodatei abspeichern.

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?
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: MJPEG in Videodatei speichern

  Alt 2. Okt 2013, 13:48
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#3

AW: MJPEG in Videodatei speichern

  Alt 2. Okt 2013, 13:53
Ja, das kommt noch dazu... Gibt es da was brauchbares fertig?
btw.: So ein Frame hat ca. 35 - 37kb
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: MJPEG in Videodatei speichern

  Alt 2. Okt 2013, 14:09
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.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#5

AW: MJPEG in Videodatei speichern

  Alt 2. Okt 2013, 14:12
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 =)
  Mit Zitat antworten Zitat
Benutzerbild von Delphinos
Delphinos

Registriert seit: 8. Okt 2013
2 Beiträge
 
#6

AW: MJPEG in Videodatei speichern

  Alt 8. Okt 2013, 16:42
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: MJPEG in Videodatei speichern

  Alt 8. Okt 2013, 17:14
Ja, das kommt noch dazu... Gibt es da was brauchbares fertig?
btw.: So ein Frame hat ca. 35 - 37kb
Das DV-Format ist im Prinzip nichts anderes
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz