AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi IMediaDet::GetBitmapBits liefert falsches Frame...

IMediaDet::GetBitmapBits liefert falsches Frame...

Ein Thema von Sunlight7 · begonnen am 12. Sep 2009 · letzter Beitrag vom 12. Sep 2009
Antwort Antwort
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#1

IMediaDet::GetBitmapBits liefert falsches Frame...

  Alt 12. Sep 2009, 12:45
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 raus kommt.

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

Grüße, Sun
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
862 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

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

  Alt 12. Sep 2009, 16:57
Hi,

auch wenn es blöd klingt, die Frames sind im 24-bit RGB Format?
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#3

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

  Alt 12. Sep 2009, 17:49
Nein nicht immer, DivX & Indeo Codecs mit 24 Bit, HuffYUV & YUY2 sind 16 Bit, macht aber kein Unterschied, der Fehler is überall anzutreffen.
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf