Kann ich irgendwie einen Videostream von meinem Bildschirm erstellen?
So das dann andere sich das angucken können? Also muss mit AutoIt sein. Währe nett wenn ihr eine Idee habt
Danke im vorraus
Kann ich irgendwie einen Videostream von meinem Bildschirm erstellen?
So das dann andere sich das angucken können? Also muss mit AutoIt sein. Währe nett wenn ihr eine Idee habt
Danke im vorraus
Mach es doch so
Du Startest ein Server (Per TCP oder UDP ist Egal)
Sobald sich ein Client mit deinem Server verbindet, Macht der Server einen Screenshot, Speichert ihn in einer Temp-Datei und Sendet ihn so Oft an den Clienten, Bis er die Verbindung geschlossen hat
Prinzip: Mini-TeamViewer
Sollte so eigentlich Gehen, PS: "Ich würde TCP für die Übertragungen wählen, da die Meißten DateiÜberTCP-Senden UDF's auf TCP Basieren!)
Nur wird das sicher kein film sondern immer nur ein einzelbild ca. jede sekunde mal
Für ein richtiges video wird autoit wahrscheinlich nicht ausreichen
mfg
Nur AutoIt wird garantiert nicht ausreichen. Du musst schon eine dll verwenden oder eine bessere Programmiersprache verwenden.
Ja, gegen eine DLL hab ich nichts
Weiß da niemand mehr was?
Ich habe das hier gefunden, ist aber für eine Kamera. Kannst du ja vielleicht umbauen.
Edit: Du musst noch $WS_CHILD und $WS_VISIBLE deklarieren, sonst funktioniert es nicht.
Das Problem ist nicht AutoIt, sondern die Bandbreite des Senders! Selbst auf einem langsamen Rechner sind 15-20 Screenshots die Minute kein Ding, aber wenn man mal nachrechnet wirds eng....
20x1680x1050x32Bit = rund 1GBit/Sekunde , da braucht man ne FETTE Leitung. Bissl komprimieren geht ja immer, aber das löst das Problem nicht. Die Datenmenge ist einfach zu hoch, daher nutzen die meisten Remote-Desktop-Programme eine niedrigere Auflösung und Farbtiefe.
20x1024x768x16Bit = 200 MBit/Sekunde, sieht schon besser aus....aber immer noch zu viel.
Daher verwendet man keine Screenshots sondern streamt "echtes" Video und überträgt nur das, was sich im Bild gerade geändert hat. Aber wer sagt denn, daß das nicht auch mit AutoIt und den Screenshots funktioniert^^
Andy
Genau so hab ich mir das Vorgestellt, nur wie?
aber wie filtert man die dinge raus die sich verändert haben
denn ich brauche das auch
//Edit:Vieleicht ginge das wenn man Pixel für Pixel abrattert (also die Farben mit PixelGetColor) und dann die position und die neue farbe des pixels rüberschikt. Aber wäre das nicht viel größer ??
//Edit2:Oder man schneidet die dinge raus die im 1.Bild schon waren und lässt nur noch die neuen dinge stehen und legt das dann übereinander.Aber da bräuchte man ne Funktion PixelDel oder so was
vieleicht weiß einer Rat
Ich hab es jetzt mal so Probiert, also übers Netzwerk ging es, ahb es aber noch mit niemanden übers internet probiert
Auserdem wird nicht nur das Aktualieseier was Neu ist sonder halbt immer alles neu gemacht
#include <INet.au3>
$hWnd = GUICreate("PC-Cooperation", @DesktopWidth / 2, @DesktopHeight / 2)
$hPic = GUICtrlCreatePic("", 0, 0, @DesktopWidth / 2, @DesktopHeight / 2)
GUISetState(@SW_SHOW)
$PIC = @ScriptDir & "\Temp.jpeg"
TCPStartup()
$MainSocket = TCPListen(_GetIP(), 31758)
;~ InputBox ("IP","Die IP ist:",@IPAddress1)
Do
$ConnectedSocket = TCPAccept($MainSocket)
Until $ConnectedSocket <> -1
While 1
$recv = _Recv()
If $recv = "Send" Then
FileDelete($PIC)
$Open = FileOpen($PIC, 18)
TCPSend($ConnectedSocket, "1")
While 1
$recv = _Recv()
If $recv = "ENDE" Then
ExitLoop
Else
FileWrite($Open, $recv)
EndIf
WEnd
FileClose($Open)
TCPSend($ConnectedSocket, "1")
GUICtrlSetImage($hPic, $PIC)
EndIf
Sleep(10)
WEnd
Func _Recv()
Local $recv
Do
$recv = TCPRecv($ConnectedSocket, 1024)
Until $recv <> ""
Return $recv
EndFunc ;==>_Recv
#include <ScreenCapture.au3>
#include <Inet.au3>
TCPStartup()
Do
$ConnectedSocket = TCPConnect(InputBox ("IP","Gib die IP des Servers ein",_GetIP()), 31758)
Until $ConnectedSocket <> -1
_ScreenCapture_SetJPGQuality(50)
$PIC = @ScriptDir & "\Temp\Temp.jpeg"
While 1
$hBmp = _ScreenCapture_Capture("")
_ScreenCapture_SaveImage($PIC, $hBmp)
$Open = FileOpen ($PIC,16)
TCPSend($ConnectedSocket, "Send")
_Recv()
While 1
$Read = FileRead ($Open,1024)
If @error Then ExitLoop
TCPSend($ConnectedSocket,$Read)
If @error Then ExitLoop
WEnd
Sleep (100)
TCPSend ($ConnectedSocket,"ENDE")
_Recv()
FileClose ($Open)
FileDelete($PIC)
WEnd
Func _Recv()
Local $Recv
Do
$Recv = TCPRecv ($ConnectedSocket,1024)
Until $Recv <> ""
Return $Recv
EndFunc