Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   VMR9 Allocator/Presenter unter Firemonkey (https://www.delphipraxis.net/206754-vmr9-allocator-presenter-unter-firemonkey.html)

Peter666 26. Jan 2021 12:58

VMR9 Allocator/Presenter unter Firemonkey
 
Hi,

beim Lesen der FMX.Media.Win ist mir aufgefallen, dass die Kameraklasse zwar einen VMR9 Allocator/Presenter nutzt, damit man die Bilddaten als Bitmap erhält, aber die TWindowsMedia Klasse nicht. Also dachte ich mir probierst du doch mal den Allocator/Presenter in einem normalen Videographen zu verwenden.

Delphi-Quellcode:
function GetPin(const Filter: IBaseFilter; out Pin: IPin; Dir:
  TPinDirection = PINDIR_INPUT): Boolean;
var
  EPins: IEnumPins;
  pPin: IPin;
  f: Int64;
  d: TPinDirection;
begin
  result := false;
  Pin := nil;
  if not assigned(Filter) then
    exit;
  if SUCCEEDED(Filter.EnumPins(EPins)) then
    while EPins.Next(1, pPin, @f) = S_OK do
      if SUCCEEDED(pPin.QueryDirection(d)) and (d = Dir) then
      begin
        Pin := pPin;
        result := true;
        break;
      end;
end;

procedure TForm3.LoadFromFile(const AFilename: String);
var
  Filter: IBaseFilter;
  Pin: IPin;
begin
  if FAILED(CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC_SERVER,
    IID_IGraphBuilder, FGraphBuilder)) then
    exit;
   FGraphBuilder.QueryInterface(IID_IMediaControl, FMediaControl);

  FVMRRenderer := TVMRRenderer.Create;
  FVMRRenderer.SampleBufferReady := VMRRendererSampleReady;
  if SUCCEEDED(FGraphBuilder.AddSourceFilter(PChar(AFileName),'Source', Filter)) and
  (FVMRRenderer.AddToGraph(FGraphBuilder)) and
  (GetPin(Filter, Pin, PINDIR_OUTPUT)) and SUCCEEDED(FGraphBuilder.Render(Pin)) then
    FMediaControl.Run;
end;
Das oben stehende mein Testcode und erstaunlicherweise geht der nicht. Sobald MediaControl.Run ausgeführt wird gibt es irgendwo eine Exception. Hat sich damit jemand schon mal beschäftigt? Ich hatte bis jetzt Alcinoe von Github als Player und da gehen nur iOS und Android.

Peter


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