Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Schneller Webcam Stream? (https://www.delphipraxis.net/151482-schneller-webcam-stream.html)

Zacherl 19. Mai 2010 20:23


Schneller Webcam Stream?
 
Hey,

ich möchte einen möglichst ruckelfreien Webcamstream erzeugen. Momentan verschicke ich periodisch einzelne JPEG Bilder. Je nach Internet Anbindung bleibt allerdings eine Verzögerung von bis zu 2 Sekunden zwischen zwei Einzelbildern bestehen.
Gibt es da eine geschickte Lösung, um das Problem zu umgehen?

Viele Grüße
Zacherl

Bernhard Geyer 19. Mai 2010 20:28

Re: Schneller Webcam Stream?
 
Zum Browser mit aktuellen HTML-Techniken? Denkbar ungeeignet. Hier wäre vermutlich ein Stream zu einer Flash-Instanz besser.

Namenloser 19. Mai 2010 20:32

Re: Schneller Webcam Stream?
 
Puh, also ich glaube, das ist eine Wissenschaft für sich. Im Grunde brauchst du dafür ja einen Videocodec.

Ein erster Schritt wäre schon mal, das Bild z.B. in 8*8 Pixel große Felder zu zerteilen und jeweils prüfen, ob sich im Vergleich zum vorherigen Bild etwas verändert hat (mit Toleranz natürlich). Wenn nicht, wird dieser Block einfach schwarz, wodurch es sich durch JPEG effizienter komprimieren lassen sollte (8 Pixel ist hier optimal, weil das JPEG-Raster auch 8 Pixel groß ist). Oder man trickst irgendwie so, dass man die entsprechenden Blöcke komplett rauslöscht. Dann shickt man vor oder nach jedem Bild noch eine Bitmap mit, in der vermerkt ist, welche Pixel geändert wurden.

Der nächste Schritt wäre dann noch Bewegungserkennung, Stichwort Prädiktive Kodierung.

Aber wie gesagt, einfach ist das sicher nicht. Vielleicht gibt es ja auch freie Videostream-Codecs, die du verwenden kannst?

Zacherl 19. Mai 2010 20:36

Re: Schneller Webcam Stream?
 
Also der Stream soll von meinem Serverprogramm zu meinem Clientprogramm geschickt werden.

@NamenLozer:
Puh das klingt alles ziemlich aufwändig. Gibt es eventuell eine Methode MPEG2 oder sowas für meine Zwecke zu verwenden?

igel457 19. Mai 2010 20:39

Re: Schneller Webcam Stream?
 
Das einfachste, das mir einfällt, ist mit ffserver einen Videostream aufzusetzen. Verwendest du OGG Theora oder H264 könntest du diesen Stream eventuell mittels HTML5 "<video>" direkt im Browser wiedergeben.

Zacherl 19. Mai 2010 20:48

Re: Schneller Webcam Stream?
 
Ich möchte den Stream wie gesagt gerne in meinem Clientprogramm anzeigen, ohne auf einen Browser zurückgreifen zu müssen. Fremdkomponenten sind okay aber externe Programme würde ich gerne vermeiden.

himitsu 19. Mai 2010 20:54

Re: Schneller Webcam Stream?
 
Zitat:

Zitat von Zacherl
aber externe Programme würde ich gerne vermeiden.

Wie gesagt, im Grunde mußt du estmal die Datenmenge verringern, je weninger Daten, desto schneller bekommst du sie rüber.

Nur die Veränderungen zu übertragen wäre da schon ein großer Fortschritt
und auch die Video-Codecs machen im Prinzip auch nichts anderes.

igel457 19. Mai 2010 20:56

Re: Schneller Webcam Stream?
 
Zitat:

Zitat von Zacherl
Ich möchte den Stream wie gesagt gerne in meinem Clientprogramm anzeigen, ohne auf einen Browser zurückgreifen zu müssen. Fremdkomponenten sind okay aber externe Programme würde ich gerne vermeiden.

Naja, dann kannst du zum Beispiel Acinerella oder gleich FFMpeg nehmen um den Videostream zu dekodieren.

Zacherl 19. Mai 2010 20:59

Re: Schneller Webcam Stream?
 
Für Desktop Screenshots habe ich mal das Differenzbild Verfahren verwendet, wo die gleichbleibenden Teile einfach schwarz übertragen werden. Die Schwierigkeit ist halt die Toleranz, die NamenLozer erwähnte.
Ich habe absolut keine Idee, wie ich so eine Prüfung mit Toleranz überhaupt und dann noch einigermaßen ressourcenschonend implementieren könnte. Neuronale Netze erscheinen mir dafür etwas zu groß dimensioniert oder?

@igel457:
Das Acinerella schaue ich mir mal an. Die Codierung muss natürlich auch unterstüzt werden.

blackfin 19. Mai 2010 20:59

Re: Schneller Webcam Stream?
 
Das Problem ist weniger der Client als der Server, der den Stream auch "artgerecht" als RTP/RTMP oder RSP verschicken kann.
Dafür gibt es mehrere Lösungen, den RED5 Server, ffmpeg oder den Wowza-Server.
Mit letzterem habe ich neulich erst rumexperimentiert und es ging ziemlich gut, damit einen H264 RTMP-Stream auf ein iPhone direkt zu streamen.

Stream-Fähige Clients gibts genügend, aber wie gesagt, das A und O ist der Server. Ohne Stream-Codierung kannst du es eigentlich vergessen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:28 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz