Also ich bin gerade dabei einn Prog zum capturen von des Bildes einer Webcam zu schreiben.
Ich Stell das Bild in einem VideoWindow dar und möchte dieses nun speichern, dazu hab ich bis jetzt folgenden Code:
Delphi-Quellcode:
procedure TCapSource.SaveVideo(VideoWindow:TVideoWindow);
var
multiplexer: IBaseFilter;
Writer: IFileSinkFilter;
i: integer;
mypath:widestring;
begin
mypath:='D:\test.avi';
FilterGraph.Active := true;
with FilterGraph as IcaptureGraphBuilder2 do
begin
SetOutputFileName(MEDIASUBTYPE_Avi, PWideChar(mypath), multiplexer, Writer);
if Filter.FilterGraph <> nil then
RenderStream(@PIN_CATEGORY_CAPTURE, nil, Filter as IBaseFilter,
nil, multiplexer as IBaseFilter);
end;
end;
So dann die datei erscheint auch in dem Verzeichnis,aber wenn ich das Prog stoppe, dann verschwindet sie wieder.
Liegt ja , falls in dem Code kein Fehler sein sollte und ich recht habe
, daran, dass die Aufnahme nicht wieder gestoppt wird. Nur hab ich noch keine Möglichkeit gefunden das zu machen. Weil ich möchte ja, dass das Bild in dem VideoWindow weiter angezeigt wird. und nicht das die Filter getrennt werden.
Hier noch mal die Variablen in der Klasse:
Delphi-Quellcode:
var capenum:TSysDevEnum;
FilterGraph:TFilterGraph;
Filter:Tfilter;
SampleGrabber:TSampleGrabber;