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 Here
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??


- 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??

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..


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.