Einzelnen Beitrag anzeigen

Benutzerbild von jokerfacehro
jokerfacehro

Registriert seit: 13. Feb 2007
306 Beiträge
 
Delphi 7 Enterprise
 
#1

selbstgebastelter webcam stream

  Alt 5. Feb 2010, 13:31
Hallo,

ich programmiere gerade einen ferngesteuerten webcam client mit Delphi 7 Enterprise.

Dazu nutze ich Directx für die Webcam und IdTCPClient und Server für die Verbindung.


das ding ist eine dreieckstruktur.

ich habe ein client-server-system
und dazu einen webserver.

der server sendet die configuration an den webserver.
der client liest die config vom webserver und arbeitet dem entsprechend alles ab.

und sendet zumbeispiel den webcam stream an den server.



den webserver schalte ich zwischen aufgrund der hohen erreichbarkeit.
so kann ich indirekt den client abschalten etc. ohne dass eine direkte verbindung besteht.


die webcam greife ich über directx ab.

siehe http://www.delphipraxis.net/internal...webcam+directx



per timer grabbe ich einzelne frames und übertrage die per indy an den server.


hier die prozedur des clients zum senden.

Delphi-Quellcode:
procedure TForm1.sendStream(pic:TBitmap);
var MStream:TMemoryStream;
begin

MStream:=TMemoryStream.Create;

try
  pic.SaveToStream(MStream);
  MStream.Position:=0;
  try
    IdTCPClient1.Socket.Write(MStream,0,true);
  except
    end;
finally
  MStream.Free;
  end;
end;

das gebe ich dann einfach beim server aus.

Es funktioniert alles wunderbar.

Mein Problem:
ich will natürlich keine Bitmaps versenden, aufgrund der dateigröße.
deshalb habe ich bereits jpg und png genutzt.

das funktioniert auch.
allerdings ist dementsprechend die cpu auslastung beim client dauerhaft bei über 15%
und springt auch mal auf 40%, (bei Bitmap logischerweise 0-1%)

ich suche deshalb eine praktikable kompression zum übertragen der frames.



Hoffe da hat jemand was parat
"Never touch a running system administrator !"
  Mit Zitat antworten Zitat