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.
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
- 📡 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
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++ |
git clone https://github.com/Vikas2171/Video_Conference_App.git
cd Video_Conference_Appcd server
mkdir build && cd build
cmake ..
make
./serverThe server listens on port
6000and waits for the client to connect.
Open a new terminal:
cd Video_Conference_App/client
mkdir build && cd build
cmake ..
make
./clientThe server will automatically detect the client's IP when it receives the first packet, and then begin full-duplex communication.
- Both client and server use the default webcam and microphone.
- Audio is streamed in
float32 stereoformat at44100 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.
-
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. Usepavucontrol(PulseAudio Volume Control) to verify device permissions.