как с одного пользователя отправлять два потока видео на сервер?
У меня есть не большой код на питоне дге один сервер делиться на две и он один клиент который отправляет видео и текст и мне нужно что бы отправка видео и текста было одно временно что бы два процесса не зависели друг от друга ...
Вот код сервера
import cv2
import imutils
import socket
import numpy as np
import time
import base64
from multiprocessing import Process
from threading import Thread
class class_func1(Thread):
def __init__(self):
super().__init__()
def run(self):
BUFF_SIZE = 65536
LOCALHOST = socket.gethostbyname(socket.gethostname())
PORT = 2022
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((LOCALHOST, PORT))
server.listen()
print("Сервер запущен!")
while True:
user, addr = server.accept()
packet, _ = user.recvfrom(BUFF_SIZE)
data = base64.b64decode(packet, ' /')
npdata = np.frombuffer(data, dtype=np.uint8)
frame = cv2.imdecode(npdata, 1)
cv2.imshow("Test 1 server", frame)
key = cv2.waitKey(1) & 0xFF
if key == ord('q'):
server.close()
break
class class_func2(Thread):
def __init__(self):
super().__init__()
def run(self):
LOCALHOST = socket.gethostbyname(socket.gethostname())
PORT = 2023
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((LOCALHOST, PORT))
server.listen()
print("Сервер запущен!")
while True:
user, add = server.accept()
data = user.recv(1024).decode("UTF-8")
print("date: ", data)
user.send(data.encode("UTF-8"))
if __name__ == '__main__':
p1 = class_func1()
p2 = class_func2()
p1.start()
p2.start()
p1.join()
p2.join()
Вот код клиента
import cv2, imutils, socket
import numpy as np
import time
import base64
import socket
from multiprocessing import Process
def func_1():
BUFF_SIZE = 65536
LOCALHOST = socket.gethostbyname(socket.gethostname())
PORT = 2022
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((LOCALHOST, PORT))
vid = cv2.VideoCapture(0) # replace 'rocket.mp4' with 0 for webcam
fps,st,frames_to_count,cnt = (0,0,20,0)
while True:
WIDTH = 400
while(vid.isOpened()):
_, frame = vid.read()
frame = imutils.resize(frame, width=WIDTH)
encoded, buffer = cv2.imencode('.jpg', frame, [cv2.IMWRITE_JPEG_QUALITY, 80])
message = base64.b64encode(buffer)
client.send(message)
cv2.imshow("Test 1 client", frame)
key = cv2.waitKey(1) & 0xFF
if key == ord('q'):
client.close()
break
def func_2():
LOCALHOST = socket.gethostbyname(socket.gethostname())
PORT = 2023
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((LOCALHOST, PORT))
while True:
client.send("llo".encode("UTF-8"))
data = client.recv(1024).decode("UTF-8")
print("data: ", data)
if __name__ == '__main__':
p1 = Process(target=func_1)
p1.start()
p2 = Process(target=func_2)
p2.start()
p1.join()
p2.join()