Vielleicht liegt es auch nur daran, dass ich seine Sätze nicht genau verstanden habe. Aber wenn ich dem Link im Post folge, dann finde ich auf anhieb ein Beispiel für das Abspielen aus einem Stream heraus:
Delphi-Quellcode:
procedure TForm3.TestCustomStream(Src: TStream; Compress: boolean);
var
D : TStream;
TS : TCustomSrcFilter;
Size: Int64;
begin
if not FilterGraph.Active then FilterGraph.Active := true;
FilterGraph.ClearGraph;
Size := Src.Size;
D := TMemoryStream.Create;
try
D := Src;
TS := TCustomSrcFilter.Create(D, Compress, Size);
try
RenderFilter(TS);
finally
log.Lines.Add('* Rendering Complete!');
end;
finally
D:=nil;
D.Free;
end;
end;
procedure TForm3.RenderFilter(AFilter: TBCBaseFilter);
var
FG : IFilterGraph2;
I : integer;
begin
FilterGraph.QueryInterface(IFilterGraph2, FG);
FG.AddFilter(AFilter, 'Test');
with TPinList.Create(AFilter) do
try
for I := 0 to Count - 1 do
if PinInfo[I].dir = PINDIR_OUTPUT then
CheckDSError(FG.Render(Items[I]));
finally
Free;
end;
SoundLevel.Position := FilterGraph.Volume;
SetNormalSize;
FilterGraph.Play;
end;
Sogar der Aufruf wird gezeigt:
Delphi-Quellcode:
var
t : TMemoryStream;
begin
t:= TMemoryStream.Create;
try
t.LoadFromStream(varYourFileStream);
TestCustomStream(t, false);
finally
t:=nil;
t.Free;
end;
end;