Description
I want to have a video conference system.

  1. That is the client-server model.
  2. The client can send audio/video/document(like ppt.doc.xls..)/application sharing/chat functions.
  3. The client's window can receive 16 videos(from other clients).
  4. The client can work on windows platform.
  5. The server can work on windows or linux(it's better).
  6. The video can support 160*120/320*240/640*480...

I copied this description from
The problem is, when i read such a description i completely get confused that how and where to start.
Suppose this task is assigned me to complete, so please provide me the guide lines where to start.

I know windows API little bit and made small projects during study session, but i don't know how to render video on the Window.

Question is: What i need to know to complete this project??

Thanks..

Dani AI

Generated

A short, practical plan to get unstuck. Break the whole system into small, testable pieces and build them in order. is right to be confused—this is several separate engineering problems glued together. pointed in the right direction: pick a UI layer, a media layer and a networking layer, but start by proving each core piece works on its own before trying to combine them.

First deliverables to implement and validate, in order:

  • Local capture + render: get camera and microphone frames into your app and display/play them reliably on the same machine. Validate timestamps and basic sync.
  • Encode/decode: add a compressor so you can record and play back a compressed stream (file-based first). Measure CPU and latency.
  • Transport + signalling: implement a minimal session-negotiation path and send real-time packets between two machines on LAN. Keep it simple: one video, one audio stream, measure loss and latency.
  • Multi-party & scaling: once two-way works, choose how to support many participants (server-forwarder vs mixing). Use small prototypes to compare bandwidth and CPU tradeoffs.

A concise data-flow view is helpful:
capture -> encode -> packetize (real-time protocol) -> network -> depacketize -> jitter buffer -> decode -> render

Key gaps to address that are often missed: real-time transport (use RTP concepts and RTCP for control), NAT traversal (STUN/TURN), encryption (SRTP), jitter buffering and concealment, and adaptive bitrate/quality. For multi-party, compare SFU (forwarder) vs MCU (mixer) — SFU is usually more CPU-friendly for the server and works well for up to dozens of participants. Also pick codecs with both performance and licensing in mind (hardware accel matters for 640x480+).

Practical tips: iterate fast, profile often, and test across realistic networks (packet loss, NAT). Consider using an existing real-time stack rather than building everything from scratch; WebRTC implements many of the hard bits (NAT, codecs, SRTP, congestion control) — see WebRTC and the RTP spec (RFC 3550) for reference.

Recommended Answers

All 5 Replies

- wxWidgets/QT
- ffmpeg
- boost libs
- skills

i hope it was helpfull

Thanks programmersbook
What i have understand yet.

1. (wxWidgets/QT) in my case GTKMM because i have used already.

2. ffmpeg. for video encoding and decoding

boots libs for what purpose??
And how to get data from LAN??
How to get from video camera attached to PC??

What will be the Data flow diagram??

- http://boost.org - has everything, like sockets, image manipulation, etc..
- sockets?
- OpenCV to capture the webcam

UDP Protocol?

First i will create a window and message loop using GTKMM, after that i will check that the camera is attached with PC or not using OpenCV. Then i will establish a network connection (UDP Protocol? Socket? i dont know what are these, but i am reading about this from wikipedia). Then i will find all IP addresses that are currently active, okay.
After that a window will appear having the list all active IP address with their HostName, user will select any host with witch he want to chat, and send request to that particular host, if request accepted then a window will appear having a video frame on it...

Am i right??
Correct me if i am wrong some where..

Thanks

Now i know what is UDP. And i found one more thing useful.
enet purpose is to provide a relatively thin, simple and robust network communication layer on top of UDP (User Datagram Protocol). The primary feature it provides is optional reliable, in-order delivery of packets.

ENet is NOT intended to be a general purpose high level networking library that handles authentication, lobbying, server discovery, compression, encryption and other high level, often application level or dependent tasks.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.