Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi IMediaDet::GetBitmapBits liefert falsches Frame... (https://www.delphipraxis.net/140172-imediadet-getbitmapbits-liefert-falsches-frame.html)

Sunlight7 12. Sep 2009 12:45


IMediaDet::GetBitmapBits liefert falsches Frame...
 
Mahlzeit!

Ich nutze den DirectShow MediaDetector um an die Frames von AVIs zu kommen.
Nun gibts da ein Problem, das die Funktion IMediaDet::GetBitmapBits nur zu Beginn des Videos das richtige Frame liefert, dann weicht es 1-2 Frames, bei langen Videos schonmal 2 oder mehr ab.

An die Infos kommt man so ran:
Delphi-Quellcode:
   var StreamLength:Double;
    FFrameRate:Double;
    FFrames:Integer;

   // StreamLength
   If not Succeeded(MediaDet.get_StreamLength(StreamLength)) then
      Raise Exception(EStreamError);

   // FrameRate
   MediaDet.get_FrameRate(FFrameRate);

   FFrames:=Round(StreamLength * FFrameRate);
Interessant ist, das StreamLength (fast) bei allen Videos etwas zu lang ist und meist ein par Frames dazu gedichtet werden und dabei eine Kommastelle :shock: raus kommt. :wiejetzt:

Beispiel:
FPS: 25.0
Frames: 13475
Länge: 8:59.00

DS zeigt an:
FrameRate: 25.0
Frames (gerundet): 13477
Frames: 13477,000000000001
StreamLength: 539,080000000000041

Das Bild holt man so:
Delphi-Quellcode:
   StreamPos:=Frame / FFrameRate;
If not Succeeded(MediaDet.GetBitmapBits(StreamPos, @BufSize, nil, FWidth, FHeight)) then ...
So, nun würd ich gerne wissen, wie sich der Bug umgehen läßt :cyclops:

Grüße, Sun

Alter Mann 12. Sep 2009 16:57

Re: IMediaDet::GetBitmapBits liefert falsches Frame...
 
Hi,

auch wenn es blöd klingt, die Frames sind im 24-bit RGB Format?

Sunlight7 12. Sep 2009 17:49

Re: IMediaDet::GetBitmapBits liefert falsches Frame...
 
Nein nicht immer, DivX & Indeo Codecs mit 24 Bit, HuffYUV & YUY2 sind 16 Bit, macht aber kein Unterschied, der Fehler is überall anzutreffen.


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