Live Streaming Video Chat App

SUMMER 2021 — Task 03

Team : Summer_6_14
-Mohammed Adnan
-Prattipati Sri Raviteja
-Mohammed Awais Ahmed
-Saami Abdul Samad

Task 03

Description 📄

🧿 Create Live Streaming Video Chat App without voice using cv2 module of Python.

GitHub Repo: https://github.com/Ravenblaze128/Summerprogram-lw/tree/main/Task3

The Computer Vision (Cv2) module of Python is employed.

Socket programming to connect the two ends of the network to connect to each other.

we have used There are two key nodes here:

  • The Sender(Server)
  • The Receiver(Client)

The Sender:

Importing the Libraries:

import socket
import cv2
import pickle
import struct
import imutils

Creating the Socket:

server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host_name = socket.gethostname()
host_ip = socket.gethostbyname(host_name)
print('HOST IP:',host_ip)
port = 10050
socket_address = (host_ip,port)

Output: Host IP: <IP Address>

Binding & Listening the Socket

server_socket.bind(socket_address)server_socket.listen(5)
print("Listening @",socket_address)

Output: Listening @ <Host IP>, <Port>

Running and Streaming the Video:

while True:
client_socket,addr = server_socket.accept()
print('Connection from:',addr)
if client_socket:
vid = cv2.VideoCapture(0)

while(vid.isOpened()):
img,frame = vid.read()
a = pickle.dumps(frame)
message = struct.pack("Q",len(a))+a
client_socket.sendall(message)

cv2.imshow('Sending...',frame)
key = cv2.waitKey(10)
if key ==13:
client_socket.close()

The Receiver :

Importing the same libraries as the Server-Side

import socket
import cv2
import pickle
import struct
import imutils

Connecting to the Socket:

client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host_ip = '<Host IP>'
port = <Port_No>

Streaming the Server Side Video:

while True:
while len(data) < payload_size:
packet = client_socket.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 += client_socket.recv(4*1024)
frame_data = data[:msg_size]
data = data[msg_size:]
frame = pickle.loads(frame_data)
cv2.imshow("Receiving...",frame)
key = cv2.waitKey(10)
if key == 13:
break
client_socket.close()

The Output:

Thank You!!