Developing a Video Chat Application with high quality video streaming
Asked Answered
K

4

20

I am working for a company where we are developing video chat support on an existing application. I have looked at various solutions for this like

  1. Using Managed Direct show for video capture and streaming in C#
  2. Some code samples in code project where we take an image and pass it over the network (I would call it rather a crude solution as this would eat up lot of bandwidth.
  3. Code a compression algorithm from scratch from scratch and use it to compress-decompress video.

Now the challenge is that we are looking to achieve very high quality video streaming and the container application is coded in C#.NET

This is what I have proposed so far. The network logic to stream data is written in C# , the video compression to be written in VC++ and call this VC++ dll using pinvoke or either CLI which way possible.

I am looking for some one more experienced that me in this field who can suggest me if Iam going correct or can this be still improved.

The ultimate goal is high quality video streaming. The codec can be any anything like h.2633, h.264 etc.

Knute answered 22/1, 2009 at 20:38 Comment(2)
twilio.com/docs/api/videoChapple
Twilio's Programmable Video is not for c# yet.Medor
C
24

I've used several ways to get video streaming/conferencing with .net easily, without need to dig into directshow. (ok, dig some, but not deep :)

1) Use of plain Windows Media Encoder components. It is documented with samples in Windows Media Encoder SDK. Good for any high resolution streaming, but delay is too big for realtime chat (0.5-2 seconds at best). Modern Express Encoder SDK another option.

2) Microsoft Research ConferenceXP http://cct.cs.washington.edu/ Full featured conferencing API including application streaming. They too low level Windows Media coded filters and wrapped them into managed code. Works well. Easily customizable. Looks bit abandoned now.

3) Microsoft RTC Client up to version 1.3 - core of windows messenger.

pros: managed samples from Microsoft, good docs, reliable performance, freely redistributable, microsoft compatible (good) SIP stack included. Major conferencing vendors like Emblaze VCON based their solutions on it in some near past, not sure about this days, but I know that Tandberg licensed Microsft's VC-1.

cons: version up to 1.3 support h261-h263 video only. modern version with support of VC-1(h264) codec does not allow direct serverless ip-ip connections. It does at require Microsoft Live Communications server. Newer version SDK does not cover well video conferencing calls.

http://msdn.microsoft.com/en-us/library/ms775892(VS.85).aspx

Please let us know what platform you have chosen. By the way, I've even used ConferenceXP video rtp part with RTC 1.3 voice/SIP features together to improve video quality, so you have wide choice of managed technologies here. Another thing is Live Meeting at which I had no chance to take good look yet.

Cologne answered 26/12, 2009 at 10:13 Comment(1)
Is this information still correct? or there are better libraries/ways to create video chat application.Terbia
M
10

Save yourself the trouble and use VLC. There are some decent .NET wrappers for it (http://forum.videolan.org/viewtopic.php?f=32&t=52021&start=30)

We are using C# and VLC for an IPTV network. We take input off DISH network satellites via Osprey-450 video capture devices on a Windows XP server. From there, we have a .NET server component that we wrote in C# that uses VLC behind the scenes (starting separate processes in .NET to control the vlc.exe instances). The VLC processes transcode and stream the signals over a network (.h264 or MPEG-4, we've successfully done both).

On the client side we have a C# WinForm application that uses an embedded VLC Viewer to view multicast signals. This application is mainly for command & control. The real use of the multicast signals happens when our set top boxes attached to our TV's decode and display the streams.

We thought we were going to have to write our own DirectX encoders too, but don't go to all the trouble. VLC works really well and has enough C# support to be very useful. Feel free to e-mail me if you have specific questions about implementation.

Mooch answered 3/2, 2009 at 23:29 Comment(3)
what was the video quality that you achived? Was it exceptionally good?Knute
Yes. We get very good video quality with this system. That was one of the priorities, actually, when I was handed this task. The .h264 encoding looks really nice, but it is very processor intensive. We use the MPEG-4 encoding for our IPTV system and it looks good.Mooch
You are right for your use case. However in my experience VLC has a rather high latency which makes it unusable for video chatting.Orvieto
M
2

You should check out the Ucentrik SDK. This SDK will enable you to integrate rich-media functionality such as video, audio, chat, remote-desktop sharing and control and video recording in your applications. The video codecs supported are VP8 (Google), Theora, and x.264. Additionally, the rich media traffic is encapsulated within an HTTP protocol to enable it to traverse firewalls that enable normal web traffic. This technology is completely free and you can download the SDK and request an API key so that you can evaluate without investing any time on setting up the infrastructure. In the next few months, we are releasing a server component so that you can download and host the infrastructure your self or your customer. The technology supports 1-to-many connections which means that you can create video conferences if you like. The features are highly modular so that you can integrate just the video or audio or desktop share or a combination of the technologies using the same SDK... You should request for an SDK available here: www.ucentrik.com. Additionally, there are some video's here: http://www.youtube.com/user/ucentrik

good luck.

Malignity answered 30/5, 2011 at 17:12 Comment(0)
E
0

Ucentrik has just released an open-source call-center application that integrates the CTX technology. This call-center application implements the video, audio, desktop/application sharing (with control), text chat functionality available from the CTX API. The application also includes some business logic specifically around providing the ability to route the calls to an agent that is available or have specific skill-set. The project is available at http://vcca.codeplex.com - please note that you will require access to the Ucentrik CTX SDK which is available for request on the Ucentrik website (www.ucentrik.com). Good luck.

Evanescent answered 7/2, 2012 at 2:32 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.