Create Live Streaming Video Chat App without voice using cv2 module of Python
Server Program-
#!/usr/bin/python3
import socket
import cv2
import pickle
import struct
#TCP Socket Creation
tcp_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcp_sock.bind((“0.0.0.0”, 2323))
#Listening To Connections
tcp_sock.listen()
print(“Accepting Connections…”)
while True:
s, addr = tcp_sock.accept()
print(f”Connected to {addr}!!!”)
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
ret, frame= cap.read()
#Serialise/flattening Data
data = pickle.dumps(photo)
#Bytes Conversion
packet = struct.pack(“Q”, len(data))+data
s.sendall(packet)
cv2.imshow(“Server Side Streaming…”,frame)
if cv2.waitKey(10) == 13:
cv2.destroyAllWindows()
cap.release()
break
tcp_sock.close()
Client Program-
#!/usr/bin/python3
import cv2
import socket
import pickle
import struct
#TCP Socket Creation
try:
skt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print(“Socket successfully created Now Show …”)
except socket.error as err:
print(“Socket creation failed with error {}”.formatat(err))
port = 1234
server_ip = “192.168.56.1”
skt.connect((server_ip,port))
data = b””
payload_size = struct.calcsize(“Q”)
try:
while True:
while len(data) < payload_size:
packet = skt.recv(4*1024)
if not packet: break
data += packet
packed_msg_size = data[:payload_size]
data = data[payload_size:]
msg_size = struct.unpack(“Q”,packed_msg_size)[0]
while len(data) < msg_size:
data+= skt.recv(4*1024)
img_data = data[:msg_size]
data = data[msg_size:]
frame= pickle.loads(img_data)
cv2.imshow(“Recieving video”, frame)
if cv2.waitKey(10) == 13:
cv2.destroyAllWindows()
break
skt.close()
except:
cv2.destroyAllWindows()
skt.close()
Comments
Post a Comment