Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

🎥🔊 Video_Conference_App

A lightweight, full-duplex video and audio conferencing application built in C++ using OpenCV for video handling and PortAudio for real-time audio streaming over UDP sockets.

This project demonstrates low-level networking, media capture, encoding/decoding, and multithreaded programming — all without using external frameworks.


📂 Project Structure

Video_Conference_App/
├── server/
│   ├── server.cpp          # Server-side implementation (acts as host)
│   ├── CMakeLists.txt
│
├── client/
│   ├── client.cpp          # Client-side implementation (connects to host)
│   ├── CMakeLists.txt

⚙️ Features

  • 📡 UDP-based packet transmission (low latency)
  • 🧠 Dynamic peer discovery (server auto-detects client IP)
  • 🔊 Real-time full-duplex audio using PortAudio
  • 📹 Real-time video streaming using OpenCV (encoded via JPEG)
  • 🧵 Multithreaded design for concurrency (audio/video/networking)
  • 🔐 Custom packet tagging to separate audio and video

✅ Requirements

Make sure your system has the following dependencies installed:

Dependency Ubuntu/Debian Install Command
OpenCV Follow Steps Given In Here
PortAudio Follow Steps Given In Here
CMake sudo apt install cmake
g++ Compiler sudo apt install g++

🚀 How to Build & Run

Step 1: Clone the Repository

git clone https://github.com/Vikas2171/Video_Conference_App.git
cd Video_Conference_App

Step 2: Build the Server

cd server
mkdir build && cd build
cmake ..
make
./server

The server listens on port 6000 and waits for the client to connect.


Step 3: Build the Client

Open a new terminal:

cd Video_Conference_App/client
mkdir build && cd build
cmake ..
make
./client

The server will automatically detect the client's IP when it receives the first packet, and then begin full-duplex communication.


📝 Notes

  • Both client and server use the default webcam and microphone.
  • Audio is streamed in float32 stereo format at 44100 Hz.
  • Video is sent as JPEG frames (compressed to reduce bandwidth).
  • Server IP is hardcoded in client.cpp — ensure it's reachable from the client.

🔧 Troubleshooting

  • PortAudio not found?
    Make sure you installed portaudio by following the given steps.

  • Video feed not working?
    Ensure your webcam is available and not being used by another application.

  • Audio not playing?
    Check if microphone access is enabled in system sound settings. Use pavucontrol (PulseAudio Volume Control) to verify device permissions.

About

A real-time, full-duplex video and audio conferencing application in C++ using OpenCV and PortAudio over UDP. Built from scratch without external frameworks to demonstrate multimedia streaming, socket programming, and multithreading.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages