Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Video in Delphi abspielen und Bilder auslesen (https://www.delphipraxis.net/110722-video-delphi-abspielen-und-bilder-auslesen.html)

Nathan E 23. Mär 2008 12:51


Video in Delphi abspielen und Bilder auslesen
 
Hallo Leute - ich sitze schon seit geraumer Zeit an einem Delphi - Programm mit dem man mithilfe eines kurzen video´s ein Objekt (wie bspw. einen geworfenen Ball) verfolgen kann. Das Programm vergleicht die Einzelbilder per Differenzbildung, entfernt einzelne Pixel und lässt Gruppen von Pixeln wieder anwachsen. Aus den übrig gebliebenen Pixeln berechne ich dann den Schwerpunkt - also die Position des Objektes.

Mein Problem besteht jetzt darin von Einzelbildern auf ein Videoformat umzusteigen (z.B. avi).
Ich versuche es im moment mit der Mediaplayerkomponente. Das sieht gerade in etwa so aus:
Delphi-Quellcode:
 mediaplayer1.FileName:='Pfad des Videos';
 mediaplayer1.Open;
 MediaPlayer1.DisplayRect:=Panel1.ClientRect;
 MediaPlayer1.Play;
Im Objektinspektor habe ich Panel1 als Display zugewiesen. Der Ton des Videos wird zwar abgespielt, das Bild fehlt aber.
Ich benutze Delphi7 - eine Fehlermeldung bekomme ich auch nicht.
Hat jemand einen Tipp für mich? Ich komm einfach nicht weiter.

Dani 23. Mär 2008 17:21

Re: Video in Delphi abspielen und Bilder auslesen
 
Hallo und *räusper* herzlich willkommen in der DP :party:

Zu deiner Frage:
  • Welche Eigenschaften des Mediaplayers ausser "Display" hast du geändert? Welchen Wert hat die Eigenschaft DeviceType?
  • Wie sind die Videodaten codiert und wie der Ton? AVI ist ja nur ein Containerformat.
  • Sind die entsprechenden Decoder auf deinem System installiert?

Nathan E 23. Mär 2008 17:49

Re: Video in Delphi abspielen und Bilder auslesen
 
Außer Display habe ich keine Änderungen vorgenommen bis auf den Recordknopf. Den habe ich deaktiviert und auf unsichtbar geschaltet.
Devicetype steht auf automatisch. Als ich mal AVIVideo probiert habe kam auch der Ton nichtmehr aber auch keine Fehlermeldung.

Laut Eigenschaften der Datei ist das Audioformat MPEG Layer-3 die Videokomprimierung DivX.

Ich muss auch nicht zwingend eine avi verwenden. Wenn es erfahrungsgemäß Formate gibt die sich einfacher händeln und auswerten lassen nehm ich auch gern die. Für Vorschläge bin ich offen.

Die Decoder müsste ich eigentlich haben - zumindest ließ sich bisher alles reibunglos in Media und VLC Player abspielen.

Dani 24. Mär 2008 13:45

Re: Video in Delphi abspielen und Bilder auslesen
 
Bei DivX6-Videos habe ich genau das gleiche Problem: kein Bild, obwohl der Codec installiert ist. Alles Andere wird korrekt abgespielt (z.B. Xvid oder DivX4). Ist der Grund für den Umstieg auf ein Videoformat die Dateigröße?

Nathan E 24. Mär 2008 13:49

Re: Video in Delphi abspielen und Bilder auslesen
 
Im Grunde genommen ist mir die Dateigröße egal. Ich habe zunächst nur avi versucht weil ich in einigen Themen gelesen hab dass es ganz gut funktionieren soll und ich auch gerade eins zur Hand hatte. Priorität hat nur die Verwertbarkeit der Bilder.

Nathan E 25. Mär 2008 20:23

Re: Video in Delphi abspielen und Bilder auslesen
 
Ok ich hab jetzt ein wmv verwendet und es funktioniert.
jetzt muss ich nurnoch meinen quelltext den ich vorher mit dem Pixels befehl durchgeführt habe auf scanlines umschreiben.
Delphi-Quellcode:
for x:=1 to {2560} image1.Width do
 for y:=1 to {454} image1.Height do
 begin
f1:=image1.Canvas.Pixels[x,y];
  f2:=image2.Canvas.Pixels[x,y];
  diff:= (g_f(f2) - g_f(f1));
  //farbwerte der bilder voneinander subtrahieren -> differenzen sind neue farbwerte -> schwarzer ball - weiße oberfläche
  if diff >0
  then image4.Canvas.Pixels[x,y]:=rgb(0,diff,0) else image2.canvas.Pixels[x,y]:=clwhite ;

Nathan E 27. Mär 2008 19:21

Re: Video in Delphi abspielen und Bilder auslesen
 
Ok es ist ein neues Problem aufgetreten - wie komme ich an das Bild, dass im Panel angezeigt wird?
Ich möchte einfach versuchen jedes Bild oder zumindest 2-4 Bilder pro sekunde aus dem Panel auszuwerten um an die Koordinaten des Schwerpunktes zu errechnen.

Um mein Ergebnis zu verbessern suche ich auch gerade nach einer Möglichkeit die Pixel zu fluten - also vielen zusammenhängenden Pixeln der gleichen Farbe wie in Paint eine neue Farbe zuzuweisen. Ich erhoffe mir damit einfach eine weitestgehende Auslöschung des Bildrauschens, habe aber noch keine Idee wie ich es realisieren könnte.

Wäre für Hinweise und Ratschläge dankbar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:13 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