Screenshots Live Übertragen
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1
Screenshots Live Übertragen
Hi, Leute
Ich möchte einen Livestream des Bildschirms (Server) an einen anderen (im Netzwerk angeschlossenen (Client)) Computer senden, der dann das ganze Live auf den eigenen Bildschirm streamt. Gibt es dafür irgendwelche Codes? Ich brauche eine effiziente Methode, da ich nur begrenzt CPU Leistung dafür verschenken möchte. Mit einem Netzwerk Datendurchsatz von 108 MBit/s dürfte es eigentlich kein Problem darstellen.
Das Ganze möchte ich auch noch mit dem Audiostream machen und einer Webcam. Ist aber erst mal nebensächlich
//Edit: Habe schon die SuFu benutzt, aber nichts gefunden, dass sich einfach in ein Programm einbinden lässt
Ich möchte einen Livestream des Bildschirms (Server) an einen anderen (im Netzwerk angeschlossenen (Client)) Computer senden, der dann das ganze Live auf den eigenen Bildschirm streamt. Gibt es dafür irgendwelche Codes? Ich brauche eine effiziente Methode, da ich nur begrenzt CPU Leistung dafür verschenken möchte. Mit einem Netzwerk Datendurchsatz von 108 MBit/s dürfte es eigentlich kein Problem darstellen.
Das Ganze möchte ich auch noch mit dem Audiostream machen und einer Webcam. Ist aber erst mal nebensächlich
//Edit: Habe schon die SuFu benutzt, aber nichts gefunden, dass sich einfach in ein Programm einbinden lässt
Zuletzt geändert von PureBasic4.0 am 24.02.2007 16:51, insgesamt 6-mal geändert.
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1
Hier, dingens... Darky hat mal ne Lib geschrieben, die den Zugriff auf eine Cam ermöglicht (siehe Forum). Ich glaube, seine Lib ist sogar PB 4.0 kompatibel (hoffe, ich verspreche dir grad nix falsches).
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1
hat jemand noch irgendeinen code oder ne lib, die man benutzen könnte?
Habe mal den Code aus dem Archiv ausprobiert (MakeDesktopScreenshot()) und diesen über's netzwerk an localhost versendet. Beide (Server und Client) mit Delay(1000/24) Befehlen, aber die CPU-Auslastung sieht so aus (Türkis=Server, Grün=Client):

--> 100% Benötigte Systemleistung. Möchte aber, dass man den PC ganz normal nutzen kann (z.B.: für anspruchsvolle Spiele)
Möchte aber, dass möglichst wenig Leistung verbraucht wird. Ich muss leider die Screenshots zwischenzeitig (24 Bilder/Sekunde) auf der Festplatte speichern, weil ich das mit MakeDesktopScreenshot() gemachte Bild nicht über den Arbeitsspeicher auslesen und mit SendNetworkData() versenden kann (oder gibt es dafür einen Code?). Das Speichern der Daten auf der Festplatte braucht wahrscheinlich die ganze Leistung, deswegen benötige ich vorerst einen Code zum Speichern und Versenden von Bildern in/aus dem Arbeitsspeicher. Habe das Ganze auch schon mal über SetClipboardImage(#Image) versucht, aber wie soll man das dann über's Netzwerk versenden können?
Habe mal den Code aus dem Archiv ausprobiert (MakeDesktopScreenshot()) und diesen über's netzwerk an localhost versendet. Beide (Server und Client) mit Delay(1000/24) Befehlen, aber die CPU-Auslastung sieht so aus (Türkis=Server, Grün=Client):

--> 100% Benötigte Systemleistung. Möchte aber, dass man den PC ganz normal nutzen kann (z.B.: für anspruchsvolle Spiele)
Möchte aber, dass möglichst wenig Leistung verbraucht wird. Ich muss leider die Screenshots zwischenzeitig (24 Bilder/Sekunde) auf der Festplatte speichern, weil ich das mit MakeDesktopScreenshot() gemachte Bild nicht über den Arbeitsspeicher auslesen und mit SendNetworkData() versenden kann (oder gibt es dafür einen Code?). Das Speichern der Daten auf der Festplatte braucht wahrscheinlich die ganze Leistung, deswegen benötige ich vorerst einen Code zum Speichern und Versenden von Bildern in/aus dem Arbeitsspeicher. Habe das Ganze auch schon mal über SetClipboardImage(#Image) versucht, aber wie soll man das dann über's Netzwerk versenden können?
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Du musst Dir zunächst mal ein geeignetes Protokoll mit Datenreduktion
überlegen.
Zum Bsp. nur die Bildzeilen senden die sich geändert haben und
die schnelle BriefLZ Kompression verwenden.
Das Protokoll könnte dann zum Bsp. so aussehen:
<Long: UnpackSize><Data Container>
Der entpackte DatenContainer könnte dann folgendermaßen aussehen:
<Word:ZeilenNummer><RGB-Array>
Diese Zeilen überschreiben dann das aktuelle Bild.
Evtl. würde ich die Daten nicht mit dem lahmen SendNetworkData()
übertragen, sondern mit ( mir fällt die Bezeichung grad nicht ein )
Network Pipes? machen ...
überlegen.
Zum Bsp. nur die Bildzeilen senden die sich geändert haben und
die schnelle BriefLZ Kompression verwenden.
Das Protokoll könnte dann zum Bsp. so aussehen:
<Long: UnpackSize><Data Container>
Der entpackte DatenContainer könnte dann folgendermaßen aussehen:
<Word:ZeilenNummer><RGB-Array>
Diese Zeilen überschreiben dann das aktuelle Bild.
Evtl. würde ich die Daten nicht mit dem lahmen SendNetworkData()
übertragen, sondern mit ( mir fällt die Bezeichung grad nicht ein )
Network Pipes? machen ...
"Papa, ich laufe schneller - dann ist es nicht so weit."