![]() |
Frame in Video gezielt ansteuern (DSPack)
Hallo,
ich möchte ein kleines Programm schreiben, mit dem ich ein bestimmtes Frame aus einem Video (MPEG, AVI...) extrahieren kann. Ich möchte das ganze mit DSPack machen (läuft auch :) ) Hier auf der Seite hier habe ich folgenden Tipp gefunden: ![]() Zitat:
Delphi-Quellcode:
Wenn ich nun ein beliebiges Video abspiele, und auf Button1 Klicke erscheint aber kein Bild.
rocedure TForm1.Button1Click(Sender: TObject);
begin samplegrabber1.GetBitmap(image1.Picture.Bitmap); end; 1. Wie kriege ich das zum laufen 2. Wie kann ich ein Frame einzelnes Frame ansteuern und wie bekomme ich die Anzahl aller Frames? 3. Wie rechne ich FilterGraph.Duration in Millisekunden/Frames um? Danke im Voraus. |
Re: Einzelnes Frame aus einem Video (DSPack GetBitmap)
Es funktioniert auch bei den Demos nicht!
EDIT-> Es geht aber mit stink normalen MPEG2 Files, es läuft nur nicht mit DivX Avi's. Ist das ein Fehler im DSPack? :gruebel: Für mich bleiben trozdem die Fragen 2 und 3 von Oben. |
Re: Frame in Video gezielt ansteuern (DSPack)
OK.
Ich hab das jezt schon mal teilweise gelöst: Um die Frames zu bekommen macht man das entweder so: 1.
Delphi-Quellcode:
2. (einfacher)
uses directshow9; //In dieser Unit ist IMediaSeeker drin
var duration:int64; frames:int64; begin with (filtergraph1 as imediaseeker) do getduration(duration); duration := duration div 10000; //jetzt haben wir die Millisekunden frames := duration div 1000 * 25; //klappt halt nur mit PAL end;
Delphi-Quellcode:
Mit IMediaSeeker müsste man jetzt auch genauso jedes Frame ansteuern können...
var duration:int64;
frames:int64; begin duration := filtergraph1.duration //jetzt haben wir die Millisekunden frames := duration div 1000 * 25; //klappt halt nur mit PAL end; Ich arbeite daran! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 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 by Thomas Breitkreuz