Danke für den Tipp mit dieser Procedure Get Devices, ich denk mal so ist es die bessere Lösung, aber daran liegts nicht.
Aber ich hab vergessen die Klassen Filtergraph, Filter und SampleGrabber zu initialisieren. Daran wird es wohl liegen, da ich ja auf etwas zugreife was noch gar nicht im Speicher vorhanden ist.
Hab ich nun gemacht, aber die Methode Create möchte immer noch einen Parameter vom Typ TComponent übergeben habe.
Ich denk ja mal da muss ich das VideoWindow übergeben, oder lieg ich da falsch?
Habs jedenfalls mal versucht:
Delphi-Quellcode:
procedure TCapSource.StartCapture(Lbindex:integer; VideoWindow:TVideoWindow);
begin
Filtergraph:=TFiltergraph.Create(VideoWindow);
Filter:=TFilter.Create(VideoWindow);
SampleGrabber:=TSampleGrabber.Create(VideoWindow);
Filtergraph.ClearGraph;
Filtergraph.Active:=False;
Filter.BaseFilter.Moniker := Capenum.GetMoniker(Lbindex);
FilterGraph.Active := True;
with Filtergraph as ICaptureGraphBuilder2 do
RenderStream (@PIN_CATEGORY_PREVIEW, nil, Filter as IBaseFilter,
SampleGrabber as IBaseFilter, VideoWindow as IBaseFilter);
FilterGraph.Play;
end;
Aber nun bekomme ich an der Stelle
with Filtergraph as ICaptureGraphBuilder2 ...
eine
Exception, die sagt Schnittstelle nicht unterstützt.