Ich bastel gerade mit der WebCam und der Übertragung via TCPClient an den TCPServer von
INDY. Ich bekomme auch ein Bild, wenn ich das Video mit einem Button starte und stoppe es über einen anderen Button. Allerdings ist das stoppen immer etwas heikel, denn ich schicke zum beenden des Streams dem Clienten eine Nachricht, der trennt sich dann. Dann beendet sich der Server und die Buttons nehmen wieder den Anfangszustand an (Start ist aktiv, Stop ist inaktiv). Aber was ist, wenn das Internet mal stutzt? Dann beendet sich der Server, bevor der Client die Nachricht erhalten hat und es gibt eine
Exception. Ich habe mir auch überlegt, die Verbindung vom Server aus sauber zu trennen:
Delphi-Quellcode:
procedure TfrmCam.CamStop;
var
Clients: TList;
i: Integer;
begin
BtnStop.Enabled := false;
Clients := CamServer.Contexts.LockList;
try
for i := 0 to Clients.Count - 1 do
TIdContext(Clients[i]).Connection.Disconnect;
finally
CamServer.Contexts.UnlockList;
end;
CamServer.Active := false;
RVideo.Picture := BImage.Picture; {Das VideoFenster bekommt eine WebCam als Icon aus einem anderen Image, damit es nciht so langweilig aussieht :)}
BtnStart.Enabled := true; // Buttons anpassen.
Aber hier gibt es auch eine
Exception. Da steht dann, das die Software einen Verbindungsabbruch verursacht (SocketFehler #10053).