Creating a Video chat application in our laptop using python opencv

B Manoj
2 min readJun 12, 2021

Here I would like to share how to create your own video chatting based on python in your own laptop (Where server and client program resides).

This is the code for server side.

import socket, cv2, pickle, struct, imutils

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((“127.0.0.1”,2323)) // Created a socket
s.listen(5)
print(“server is listening at port number 2323 …..”)
client_session, addr = s.accept() // Accept the connections
while True:
if (client_session):
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
ret, img = cap.read()
frame = imutils.resize(img,width=320) // format all the packets into one single size.
a = pickle.dumps(frame)
msg = struct.pack(“Q”, len(a))+a
client_session.sendall(msg)
cv2.imshow(“Sending video”, img)
if cv2.waitKey(10) == 65:
break

cv2.destroyAllWindows()
cap.release()

Now, let’s see the client side code.

import socket,cv2, pickle,struct

client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

client_socket.connect((“127.0.0.1”,2323)) // Socket tries to connect this server on this port number
data = b””
payload_size = struct.calcsize(“Q”)
while True:
while len(data) < payload_size:
packet = client_socket.recv(4*1024) # 4K
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 += client_socket.recv(4*1024)
frame_data = data[:msg_size]
data = data[msg_size:]
frame = pickle.loads(frame_data)
cv2.imshow(“RECEIVING VIDEO”,frame)
if cv2.waitKey(10) == 13:
break

cv2.destroyAllWindows()

After executing both of them, you can see the below output:

So from my laptop, I can create a server and client, where server sends the data and client receives it.

--

--