Daniel Thoma: Bild ständig aktualisieren

Beitrag lesen

Hallo Stefano,

1.) Wir sprechen hier von einer Java-Applikation, welche die Bilder erstellt...

Es wird ja nicht gesagt, was die tut, aber 2-8 Bilder / Sekunde erzeugen und wegschreiben sollte erst mal gehen. (Kommt natürlich auf die Bilder an, aber Java sollte da dann auch nicht unbeding das Problem sein, jedenfalls ist die Aussage in dieser Pauschalität schwachsinn)

2.) Du willst die Angelegenheit per HTTP lösen. Dieses *Anwendungsprotokoll* verwendet jedoch das *Netzwerkprotokoll* TCP, und TCP ist durch den Three-Way-Handshake bekanntermaßen relativ langsam.

Das ist Bullshit. Der Handshake passiert beim Verbindungsauf- und -abbau. Ansonsten erreicht man mit TCP sehr guten Durchsatz weswegen die meisten Protokolle, die dazu verwendet werden, große Datenmengen zu übertragen, auf TCP basieren (HTTP, FTP, ...). UDP ist interessant, wenn man sehr kleine Datenmengen übertragen will (z.B. DNS Anfragen) oder man die Übertragungssicherung schon in einer höheren Protokollebene implementieren muss oder will um mehr Einfluss zu haben. Letzteres könnte evtl. für Streaming interessant sein, wenn man vermeiden will, dass verlorene Pakete nochmals geschickt werden o.ä.

Die Java-Applikation sollte das Bild über einen eigenen UDP-Stream zur Verfügung stellen. Wunderbar wäre es, wenn das Programm hierfür einen Object-Stream verwendet. Dann kannst Du die Images oder BufferedImages oder StoredImages serialisiert als Objekt senden.

Du willst also nicht eine Codierung für Video oder Bilddaten (mpeg, jpeg, ...) verwenden, sondern Du willst tatsächlich Java-Objekte serialisieren mit allem, was da so dran hängt? Und statt ein bewährtes Protokoll wie TCP zu verwenden, um diese Daten dann zu übertragen, willst Du das selber mit UDP implementieren?

Zur Frage selbst:
Eine optimale Lösung wäre vermutlich, direkt aus der Javaanwendung heraus einen Videostream zu erzeugen (mittels passender Bibliothek und evtl. Streamingserversoftware. Ich kenne mich da allerdings nicht aus). Diesen Stream könnte man dann direkt bereitstellen und/oder mit einem Flashplayer auf der Webseite darstellen.

Als Bastellösung könnte man vermutlich einfach immer die 100 aktuellsten Bilder o.ä. bereithalten und von einem Flashclient abrufen lassen. Der bekommt dann zum Bild immer die Information, wie lang er das anzeigen soll und wenn es noch keines gibt, wann er erneut nachfragen kann.
Zu groß sollten die Bilder allerdings nicht sein, sonst können die nicht mehr schnell genug übertragen und gerendert werden. Außerdem sollte man das natürlich möglichst über eine Verbindung abwickeln, wenn man HTTP verwendet, sollte man also darauf achten, dass das auch passiert.

Grüße

Daniel