Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Video calling in desktop application .net

I am working on a wpf application which is suppose to have video calling feature. So I am going for Skype to provide me with the solution.

I am using Skype4COM library to do it. I got all the friends from Skype in my application, I can make call to my friends and even can do video call, but I cant control streaming. Video is being shown in Skype window, I want to show it inside my application like a part of my application.

I don't even know which control should I use to handle the video streaming.

If there is another better way or free way to add video calling in a WPF application. I am ready to change my preferences.

I had previous plans to use Web browser control and go for WebRTC but that does not support IE and believe there is no web browser control from Mozilla and Chrome.

like image 335
Manvinder Avatar asked Feb 19 '14 12:02

Manvinder


1 Answers

Videoconferencing is not trivial to implement. You have to first look at a signalling protocol like SIP or XMPP which would provide infrastructure to maintain a list of 'friends' and whether they are online or offline. The signalling infrastructure would also let you place a call and alert you when you receive a call. And then there is the question of actually flowing video/audio between two endpoints. There is no single solution that you can plug into your app.

You can look at Google's Libjingle or ConferenceXP for a starting point.

To establish a video conference you would need the following information:

  1. Whom can you call? This is your friends list. You would need a mechanism to add friends to your list and ensure that you can only add friends that are willing to communicate with you

  2. How do you establish a communication channel with your friends? For example what is their IP Address, can they support a particular video codec and so on.

  3. Once you have established a way to communicate with your friend, then there is the question of receiving audio and video information and displaying it with correct timing.

For points 1 and 2 you would need what is called a signalling and presence protocol. SIP and XMPP are two very popular open protocol.

For point [3] you would look at a protocol like RTP.

You can google SIP, XMPP and RTP. You would receive a wide variety of literature. Look at the RFC documents for exact information they they can be a bit arcane.

Libjingle is a library written in C++ implements XMPP and RTP ConferenceXP is a RTP implementation in C# with some basic signalling but I think you can get a start with the examples without really getting into details.

like image 168
Saibal Avatar answered Sep 28 '22 01:09

Saibal