| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- from socket import *
- import threading
- import time
- import cv2
- import struct
- import pickle
- import zlib
- class VideoServer(threading.Thread):
- def __init__(self, ADDR, SPD, FX):
- threading.Thread.__init__(self)
- self.setDaemon(True)
- self.cap = cv2.VideoCapture(
- 'C:/Users/Caner/Desktop/ichat0.2/Video_Socket/132.mp4')
- self.spd = SPD
- self.fx = FX
- self.sock = socket(AF_INET, SOCK_STREAM)
- self.sock.bind(ADDR)
- self.sock.listen(1)
- pass
- def __del__(self):
- self.sock.close()
- self.cap.release()
- pass
- def run(self):
- # 添加用户
- while True:
- print('Waiting For Video Client Connection ...')
- client, addr = self.sock.accept() # 会阻塞
- print('New video User ', addr)
- while self.cap.isOpened():
- time.sleep(self.spd)
- res, frame = self.cap.read()
- if res:
- sframe = cv2.resize(frame, (0, 0), fx=self.fx, fy=self.fx)
- data = pickle.dumps(sframe)
- zdata = zlib.compress(data, zlib.Z_BEST_COMPRESSION)
- try:
- client.sendall(struct.pack("L", len(zdata)) + zdata)
- except:
- print('video client exit')
- client.close()
- break
|