Laden...

Regelmäßige (Screen)shots von einem (RTSP-)Video machen

Erstellt von user22962 vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.572 Views
U
user22962 Themenstarter:in
7 Beiträge seit 2013
vor 10 Jahren
Regelmäßige (Screen)shots von einem (RTSP-)Video machen

Hallo zusammen...

ich stehe vor folgendem Problem:

Ich lasse mir einen RTSP Stream in einem Videopanel anzeigen. Funktioniert auch alles wunderbar.
Nur möchte ich jetzt noch eine art "Aufnahmefunktion" einbauen.
Es reicht ca 1 Bild pro sekunde.

Ich habe mir gedacht dies über einen Timer laufen zu lassen, der einen Screenshot von diesem object (videopanel) erstellt und diesen mit nummer und Datum speichert.

Jedoch wird der Inhalt im Bild Schwarz angezeigt. Also das Panel ohne den Streaminhalt.

Hat jemand eine Ahnung wie ich das bewerkstelligen könnte?

Hier mein bisheriger Code, mit dem ich den Objektinhalt exportiere:


        public static void ControlToImage(Control control, string path)
        {
            Bitmap bitmap = new Bitmap(control.Width, control.Height);
            control.DrawToBitmap(bitmap, new System.Drawing.Rectangle(new Point(0, 0), control.Size));
            bitmap.Save(path, System.Drawing.Imaging.ImageFormat.Jpeg);
        }

5.658 Beiträge seit 2006
vor 10 Jahren

Hi christopherhahlbeck,

das liegt sicherlich daran, daß das Video direkt auf der Grafikkarte in den Videospeicher geschrieben wird. Da kommst du nicht so ohne weiteres ran, es wird sicherlich auch nicht funktionieren, wenn du den ScreenShot mit der Druck-Taste machst. Aber vielleicht hilft es, wenn du in den Optionen für den Videoplayer die Hardware-Unterstützung deaktivierst?

Christian

Weeks of programming can save you hours of planning

U
user22962 Themenstarter:in
7 Beiträge seit 2013
vor 10 Jahren

Das witzige ist ja,
dass es mit der Drucktaste Funktioniert.

Obwohl mein Code im Prinzip genau das selbe macht.... 😕

4.938 Beiträge seit 2008
vor 10 Jahren

Hallo,

nein, dein Code macht nicht dasselbe (dein Code speichert nur das, was das Control selbst darstellt, aber bei einem Videopanel wird das Video direkt hineinprojiziert).
Aber dein Problem gab es hier schon des öfteren:
[erledigt] DirectX.Capture - Screenshot von Picturebox aufnehmen. (schau dir den Code-Project Link mal an!)

Frame aus Video Datei als JPG Speichern
schwarzes bild bei screenshot von video
Alternative wäre also das Hardware-Overlay abzuschalten (wie MrSparkle schon geschrieben hat).