Skip to main content

Command Palette

Search for a command to run...

Video Streaming using Socket Programming and OpenCV

Published
3 min read
Video Streaming using Socket Programming and OpenCV

What is Socket?

Sockets allow communication between two different processes on the same or different machines. To be more precise, it's a way to talk to other computers using standard Unix file descriptors. In Unix, every I/O action is done by writing or reading a file descriptor. A file descriptor is just an integer associated with an open file and it can be a network connection, a text file, a terminal, or something else.

To a programmer, a socket looks and behaves much like a low-level file descriptor. This is because commands such as read() and write() work with sockets in the same way they do with files and pipes.

What is Network Socket?

  • A software structure within a network mode.
  • Serves as an endpoint to send and receive data.
  • Its properties are defined by network API.
  • Exists only during the process of application.
  • Externally identified by its socket address.

What are Socket Addresses?

  • A combination of protocol type, IP address and Port number for data communication.
  • A remote process establishes a socket in its protocol stack.
  • The remote process then uses a networking API to connect to the application.
  • It presents its own socket address for use.

Implementation of Socket.

In standard Internet Protocols like TCP and UDP: Socket Address is a combination of = (IP address, Port Number), Much like Telephone and extension.

Several Types of Internet Sockets:-

Datagram Sockets:-

  • Connectionless Sockets User Datagram Protocol (UDP).
  • Each packet sent or received is individually addressed.
  • Order and reliability are not guaranteed.

Stream Sockets:-

  • Connection-Oriented Sockets Transmission Control Protocol (TCP).
  • Packets are sequenced with a unique flow of error-free data.
  • Order and reliability are guaranteed.

Raw Sockets:-

  • Allow direct sending and receiving of IP packets.
  • Without any protocol-specific transport layer formatting
  • When transmitting packets automatic addition of a header is optional
  • Mostly used in security-related application
  • Raw sockets are typically available in network equipment

Video Streaming Application:-

Python Server Module:

  • Socket Creation: clientsocket= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  • Socket Connect: clientsocket.connect((host_ip, port))
  • Socket Send: clientsocket.sendall() image.png

Python Client Module:

  • Socket Creation: s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  • Socket Bind: s.bind((host_ip, port))
  • Socket Accept: conn, addr = s.accept()
  • Socket Listen: s.listen(10)
  • Socket Receive: data += conn.recv(4096) image.png image.png

Video Data Transmission:-

At server side:-

  • With Open CV get video frames of the webcam.
  • With “pickle” serialize frame to byte data.
  • Pack each frame data using the struct module.
  • Send data to client and display frame.

At client Side:-

  • Receive packets and append them to data.
  • Unpack the data using the struct module.
  • Load the frame using the pickle.
  • Display the frame at the client side.

Output:-

image.png I would like to thanks Mr Vimal Daga sir for providing us with such knowledge to complete this task.

Thank You.

A

Great article. Thank you!

More from this blog

codereek

50 posts