![]() |
Webcamstream über Indys an andern Rechner schicken
Also ich hab ne frage und zwar hab oich hier ne webcam ... die soll aber von leuten denen ich ein programm schicke zu sehn sein und zwar über das programm.
so erste frage wie mach ich das mit den indys ?? ich komm da nich so wirklich hinter .... kann mir da vllt jemand helfen ??? meine webcam wird so ausgelesen: ![]() Mfg. Clane |
Re: Webcamstream über Indys an andern Rechner schicken
achja was ich vergessen hab zu schreiben .. ich arbeite mit delphi 7 und indys sind die 9er
|
Re: Webcamstream über Indys an andern Rechner schicken
*push*
|
Re: Webcamstream über Indys an andern Rechner schicken
hi,
du könntest zb. ein Bild speichern, am besten als .jpg, und dann per Indy versenden... Alles was du zum Dateiversand brauchst findest du hier im Forum |
Re: Webcamstream über Indys an andern Rechner schicken
hmm naja diese möglichkeit hab ich auchschon überlegt ... aber ich würds lieber als stream machen !
MfG |
Re: Webcamstream über Indys an andern Rechner schicken
Hi,
hab das ganze schon mehrfach gemacht ! Aber jetzt sag mir mal bitte wo der Unterschied ist das Bild als jpeg in einen FileStream zu schreiben und den zu verschicken oder das Bild in einen MemoryStream zu schreiben zu den zu verschicken ?! Bei den Indys brauchst Du nur : -openWriteBuffer -WriteStream -CloseWritebuffer Die Buffer Befehle sind nicht zwingend erforderlich ! Greetz DataCool |
Re: Webcamstream über Indys an andern Rechner schicken
der unterschied um dens mir geht ist das die bilder nciht aufm pc gespeichtert werden auch nich nur für was weiß ich n paar sekunden
|
Re: Webcamstream über Indys an andern Rechner schicken
Hi,
Du hast nicht verstanden was ich Dir sagen wollte ! - Du hast das Bild als Bmp oder Jpeg(is auch egal)! - Du erzeugst Dir ms := TMemoryStream.create; - Du sagst Bild.savetoStream(ms); - und nun verschickst Du den Stream .....writestream(ms) - FreeAndNil(ms); Wo hast Du da einen Plattenzugriff ? Greetz DataCool |
Re: Webcamstream über Indys an andern Rechner schicken
Das Bild muss ja auch irgendwie zustande gekommen sein, und ich vermute es ist per Socket Verbindung von der Kamera gekommen. Was ich sagen will: die Kamera schickt sehr wahrscheinlich einen MJPG Stream, also viele JPG Bilder in Folge. Ich denke dort könnte man ansetzen, die Daten per Stream weiterleiten und dann erst als Bild darstellen.
Zitat:
arno edit: nicht MPEG Stream sondern MJPG Stream... sorry :roll: |
Re: Webcamstream über Indys an andern Rechner schicken
- Du hast das Bild als Bmp oder Jpeg(is auch egal)!
eben nicht ich hab den livestream von der webcam ... |
Re: Webcamstream über Indys an andern Rechner schicken
Hi,
der LiveStream der Cam ist doch Bmp, und das kann in Ram zu Jpeg umgewandelt werden ! Greetz DataCool |
Re: Webcamstream über Indys an andern Rechner schicken
Na sag ich doch...
Falls es kein MPEG2 oder gar MPEG4 Stream ist, dann ist es mit Sicherheit ein MJPG Stream, also ganz viele JPG Bilder in Folge. Jedes JPG Bild erkennst Du am Header. Zitat:
|
Re: Webcamstream über Indys an andern Rechner schicken
Also ich kenne keine Webcam die Bitmaps verschickt...
Die meisten schicken JPG's. Zitat:
|
Re: Webcamstream über Indys an andern Rechner schicken
Also ich übergebe meine Vidoframes aus der callback heraus in eine Variable, deren Inhalt die ich beim nächsten onread des serversockets verschicke. Das werkelt so allseits hübsch ereignisgesteuert und bleibt synchronisiert, egal wo einmal ein Engpass auftreten sollte. Memorystreams sind da sehr komfortabel an zu wenden.
Eine meiner Webcams liefert die Frames als JPEG ab und die beiden anderen als Bitmaps, die auf dem Kopf stehen. Die Funktion capgetvideoformat stellt die Info über die Videocodierung zur Verfügung. Der Parameter videoformat.bitmapinfoheader.biCompression ist 0 bei Bitmaps und 4 bei jpegs. Wenn man das berücksichtigt, dann kann man jede Cam verwenden. Das bewegt Video Bild kann man dann mit einem Programm oder auch genau so gut mit einem javascript im Browser ansehen. dazu braucht es nichtmal einem player und ist dennoch flackerfrei und ruckelfrei. grüsse, der flossinger |
Re: Webcamstream über Indys an andern Rechner schicken
Hi,
bei mir gehts nichtso ganz... folgendes habe ich: Client:
Delphi-Quellcode:
Server:var ms:TMemorystream; gif:TGifimage; begin gif:=TGifimage.create; gif.LoadFromFile('C:\002.gif'); ms:=Tmemorystream.Create; gif.SaveToStream(ms); if not client.Connected then client.connect; ms.Position:=0; client.Socket.WriteBufferOpen; client.Socket.Write(ms); client.Socket.WriteBufferFlush; client.Socket.WriteBufferClose; FreeAndNil(ms); end;
Delphi-Quellcode:
ich hoffe ihr könnt mir helfen :-)
procedure TForm1.ServerExecute(AContext: TIdContext);
var ms:TMemorystream; gif:TGifimage; begin ms:=Tmemorystream.Create; gif:=TGifimage.Create; AContext.Connection.Socket.ReadStream(ms); gif.LoadFromStream(ms); gif.SaveToFile('C:\xyz.gif'); end; |
Re: Webcamstream über Indys an andern Rechner schicken
Hi!
Das Problem ist, das Du i.d.R. für den Upload nicht genug DSL Bandbreite zur Verfügung hast. Somit mußt Du Dich um einen Codec oder eine andere Art von Komprimierung kümmern. Sonst wirst Du je nach Cam-Auflösung nicht mehr als 3-4 Bilder pro Sekunden übertragen können... Wenn dann der Upload in stocken kommt, mußt Du Frames auslassen, damit es auf der anderen Seite nicht völlig blöde aussieht. Falls Du mal einen MPEG4 Codec im Delphi Source (Keine DLL oder ActiveX) sag bescheidt.. Grüsse Frank PS.: Mein Video-Chat kommt bisher leider auch nur auf 10 Frames/Sekunde. Muss wohl meinen eigenen Codec noch ein bischen optimieren... |
Re: Webcamstream über Indys an andern Rechner schicken
Zitat:
siehe beitrag vor dir |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz