![]() |
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:
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.
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; Peter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 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-2025 by Thomas Breitkreuz