Okay, etwas geht dennoch nicht
Hier etwas Code:
Client:
Delphi-Quellcode:
procedure TFormMain.FormActivate(Sender: TObject);
var
DeviceList: TStringList;
begin
if fActivated then
Exit;
fActivated := true;
DeviceList := TStringList.Create;
fVideoImage.GetListOfDevices(DeviceList);
if not DeviceList.Count < 1 then
begin
fVideoImage.VideoStart(DeviceList[0]);
Timer1.Enabled := true;
end;
end;
procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
fVideoImage.VideoStop;
end;
procedure TFormMain.FormCreate(Sender: TObject);
begin
TCPClient.Connect;
fActivated := false;
fVideoImage := TVideoImage.Create;
fVideoBitmap := TBitmap.Create;
PaintBox1.Align := alClient;
fVideoImage.SetDisplayCanvas(PaintBox1.Canvas);
fVideoImage.OnNewVideoFrame := OnNewVideoFrame;
end;
procedure TFormMain.SendStream(pic: TBitmap);
var
MStream: TMemoryStream;
begin
MStream := TMemoryStream.Create;
try
pic.SaveToStream(MStream);
MStream.Position := 0;
try
TCPClient.Socket.Write(MStream, 0, true);
except
end;
finally
MStream.Free;
end;
end;
procedure TFormMain.OnNewVideoFrame(Sender: TObject; Width: integer;
Height: integer; DataPtr: pointer);
begin
fVideoImage.GetBitmap(fVideoBitmap);
SendStream(fVideoBitmap);
fVideoImage.VideoStop; //Erstmal fehlerfrei nur ein Einzelbild erhalten.
end;
procedure TFormMain.Timer1Timer(Sender: TObject);
begin
//SendStream(fVideoBitmap);
end;
Server:
Delphi-Quellcode:
procedure TForm1.TCPServerExecute(AContext: TIdContext);
var
Data: string;
FStream: TMemoryStream;
bmp: TBitmap;
begin
FStream := TMemoryStream.Create;
try
AContext.Connection.Socket.ReadStream(FStream);
FStream.Position := 0;
finally
try
FStream.Read(Data, 1000000);
finally
//bmp.LoadFromStream(FStream);
JvImage1.LoadFromStream(FStream);
FStream.Free;
end;
end;
end;
Irgendwo schimmelt der Server immer ab, sobald ein Stream gesendet wird, bleibt das Ding hängen
Also da steht dann: "CamServer.exe funktioniert nicht mehr", eine dieser Windows-Fehlermeldungen, also keine
Exception im Programm oder so. Und ich weiß nicht genau, wie ich die Bitmap die ich bekomme enzeigen lassen soll, oben ist der Code ohne komprimieren, ich will erstmal ein Bild sehen.
Danke