Sunday, March 14, 2010

Your First Step to the Silverlight Voice/Video Chatting Client/Server

Introduction

Comparing with the Adobe Flash Player, Microsoft has provided the first step to support the live voice/video chatting through the web By Supports dealing with the Microphone and the Camera in Silverlight 4, Yes it was a great step but still not enough, there is more of a problem is still unresolved, and as a programmer you have to rely on yourself to make your own programming solutions if you decided to go forward to work on Silverlight 4 techniques to create your live voice/video chatting software, it can be summarized as the following:

1 - There is no any Managed Library for Coding / Decoding the Video/Audio compression to send it via the Internet, comparing with Adobe technologies it has supported and dealing with the H.263 and H.264 to compress the audio and Video on high resolution, unfortunately it's still not available in Silverlight 4.

2 - There is no any support for the real time transport protocols, such as RTP and therefore you just have two options, either through the transport protocol TCP or UDP, or to program your own real time transport protocol. Comparing with Adobe, it supports transport through a custom protocol for this purpose in The RTMP.

3 - There is no any real streaming server For Live Video/Audio streaming directly from the Silverlight to the Media Server and from the media server to the Silverlight clients, so you only have two solutions, you have to either use Microsoft Windows Media Server or use the Smooth Streaming through IIS, will thus be obliged to renounce the Silverlight, because it does not support dealing with these servers and the only solution also is that you should create your own server, Comparing with Adobe, they have a great product it's The Flash Media Server that's deal perfectly with the flash player.
Background

In general, all Voice/Video Chatting Systems must go through these phases:

1 - Connect with a camera and/or microphone and returns the output as Binary Data, and then convert it to Bytes to make it easier to deal for the next step.

2 - The data will be returned as a Raw Format therefore its size would be too large so we need first to code it into a compressed format for example coding the captured image into JPEG format as well as the voice data can turn into a Wave Format or compress it into any well-known audio compression format such as G.711 ,GSM,MP3 or any other format standard. Also we can integrate the video and voice together using a special standard such as H.263 or H.264. this step is the most important thing would be doing, it simply will determine the bandwidth requirements of your chatting system.

3 - Send the compressed data using one of both transport protocols TCP or UDP or RTP/UDP transport protocol and this step is also important as it depends on the importance of data quality that is transferred on the one hand and the importance of transfer in Real Time on the other hand. the goal of any system is the transfer of data in the real time and in the best quality as possible.

4 - Receiving the sent data through the Server has specific functions depending on what you want from the application, as an example in the chatting software, The received data on the server side will send it back to the connected clients in the chat room. Usually if the software is working on the internet and if the clients are behind a NAT the Server should be on a Public IP. Fortunately the Socket in the Silverlight are support this process without any problem as you will see in this article.

5 – The Client will receive the data as a compressed format so we need to Decode it and then display it on an output device.

Read more: Codeproject

Posted via email from jasper22's posterous