Я создал приложение чата в python с использованием сокетов и хотел реализовать функцию видеовызова. Если я запускаю код для сервера и клиента на одном компьютере, он работает отлично. Но как только я перевожу их на разные машины, видео отстает. Скорость передачи данных слишком низкая. Ниже приведен код сервера и клиентского компьютера соответственно:
server.py
import socket
import cv2
import pickle
HEADER_SIZE = 10
server = socket.socket()
server.bind(("localhost", 1234))
server.listen(5)
client, addr = server.accept()
while True:
full_msg = b''
new_msg = True
while True:
msg = client.recv(4096)
if new_msg:
print(f"New message of length{msg[:HEADER_SIZE]}")
msglen = int(msg[:HEADER_SIZE])
new_msg = False
full_msg += msg
if len(full_msg) - HEADER_SIZE == msglen:
print("Full msg received")
frame = pickle.loads(full_msg[HEADER_SIZE:])
cv2.imshow('server', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
new_msg = True
full_msg = b''
cv2.destroyAllWindows()
break
client.py
import socket
import pickle
import cv2
client = socket.socket()
client.connect(("localhost", 1234))
cap = cv2.VideoCapture(0)
HEADER_SIZE = 10
while True:
ret, frame = cap.read()
data = pickle.dumps(frame)
msg = bytes(f"{len(data):<{HEADER_SIZE}}", "utf-8") + data
client.sendall(msg)
Кто-нибудь знает, как предотвратить эту задержку и сделать видеозвонок? Заранее спасибо.