Ich hoffe das hält niemand für spamen aber ich dokumentiere hier wenigstens meine Erkenntnisse.
Es scheint so zu sein, als könne man die AviWriter_2 komponente nicht aus einem Thread benutzen.
Zumindestens bin ich durch probieren zu dem schluss gekommen.
Delphi-Quellcode:
unit Unit3;
interface
uses
AviWriter_2, Classes, Graphics, SysUtils;
procedure startThread;
type
TThStream =
class(TThread)
private
protected
procedure Execute;
override;
end;
var
THrunning : boolean;
ThStream : TThStream;
implementation
procedure TThStream.Execute;
var
aviwriter3 : TAviWriter_2;
i : integer;
bm : TBitmap;
begin
THRunning := true;
aviwriter3 := TAviWriter_2.Create(
nil);
AviWriter3.SetCompressionQuality(8000);
AviWriter3.SetCompression('
XVID');
AviWriter3.filename := '
mymove2.avi';
with AviWriter3
do
begin
Width := 400;
Height := 300;
FrameTime := 500;
Stretch := true;
OnTheFlyCompression:=true;
end;
AviWriter3.InitVideo;
for i := 1
to 10
do
begin
bm := TBitmap.Create;
try
bm.LoadFromFile('
jpg\' + inttostr(i) + '
.bmp');
AviWriter3.AddFrame(bm);
finally
bm.Free;
end;
end;
AviWriter3.FinalizeVideo;
AviWriter3.WriteAvi;
end;
procedure startThread;
begin
ThStream := TThStream.Create(False);
ThStream.FreeOnTerminate := True;
end;
end.
Damit bin ich mit der Komponente endgültig in einer Sackgasse gelandet und sie ist für mich unbrauchbar.
Einzige alternative scheint momentan DSPack zu sein und sich da einzulesen ist Stress pur.
Hoffe jemand mit Erfahrung gibt noch kommentare dazu.
lg
Arnulf