Video Conferencing in ASP.NET, flash, silverlight - asp.net

I need to implement video conferencing in a ASP.Net application.
We have cases that contains 3 users. Per case we need to set up a Video Conferencing possibility.
Are there any services or libraries to use for this functionality?
EDIT:
TokBox was a good service to use, however I need a solution to maintain on own servers now. Are there existing services that let me do this?

See here: http://www.red5chat.com/.
By far your easiest solution at this point will be to embed Flash into your ASP.NET pages. You can use Red5 as your media server backend if you want a free and pretty good solution. (You can also pay for back-end media server solutions like Wowza or Flash Media Server.)
You can in theory do this with Silverlight (see http://silverlightvideochat.codeplex.com/), but it's not nearly as sophisticated as the Flash solutions, i.e., the video codec isn't nearly as good, there's no AEC, noise reduction, etc.
As for HTML5, Google has open-sourced WebRTC, and it's working its way through the standards process. But it's currently supported by ~0% of the browsers out there. (It was released into the Chrome dev channel in mid January: http://www.webrtc.org/blog/webrtcnowavailableinthechromedevchannel.)
But the short answer, again, is "Use Flash on the client and Red5 on the server."
EDIT: With a little bit more client-side coding and Adobe's RTMFP solution, you can create a peer-to-peer Flash-based solution that doesn't use a server. It won't scale to more than 2-4 users per "room", but it'll have very low latency, and won't require you to standup and support a server. See here to get started.
Also, the production channel of Google's Chrome now supports WebRTC (and so does Opera). You can see a demo of it here. Firefox also supports a version of it, but the two aren't yet compatible, though achieving interoperability is a high priority for both dev teams. Neither IE nor Safari has yet announced support.
Tokbox also has a reasonably simple API that will allow you to use WebRTC when it's available (it produces higher quality audio/video than Flash), and degrade to Flash when it's not. It's free for 1:1 sessions or for less than 25,000 group minutes per month.

Related

Development Effort: Web vs. App

what does the relation between a Web frontend and a smartphone App with identical feature sets look like regarding the development effort? Are there any specific differences regarding the development effort between Apps of different smartphone platforms (iOS, symbian OS, Android, etc.) ignoring training time? A general estimation would completely satisfy me. ;)
Thanks in advance,
Flinsch.
I hesitate to call this an estimate, or even an informed guess, but perhaps by putting down some ideas I might help your thinking.
Ignoring any particular platform specifics I see the fundamental difference of Web v Native is that in the Web case you have some extra work to do:
a). You have presentation separated from the backend, with probably HTTP in between. So there are services to write and issues concerned with notifications and/or polling to deal with.
b). You're likely using a browser to do the presentation so you will be using some JavaScript kind of library, and these are still hard to drive.
So, if you are targeting a single device my guess is that writing native code is likely to be 50% quicker than web-based code - assuming that you really are targetting identical function.
What seems to happend is that we compromise Web Apps, reducing functionality somewhat and hence the overhead is reduced.
Also there's another factor, the UI portions of the Web App are in principle portable, hence in fact the Web App development may be a reasonable investment even if it does take more effort.
I suspect that portability may well end up being a dominant consideration.
specific differences? There are plenty, but each with their own tradeoff:
UI: Web applications have CSS, (HTML, XHTML, HTML5) specifications that is supported by major browsers (although have have their issues). For Smartphone apps, each UI has to be designed and implemented according to the language the apps can be built on. You can effectively create apps like Winamp (having skins). For web applications, this is relatively a quick effort compared to writing UI's for each different smartphone OS models out there.
Language of use/Portability: In Web applications, an application sits in a server, so every request is sent to the server and response is returned from it. This allows that 1) Web applications can be written in any language of choice, as the end user never sees the server nor needs to configure it, 2) It allows the developer to write in a language that he/she is comfortable in. In smartphone apps, for the developer to run his apps to all the smartphone OS'es, he/she has to learn the programming language for the OS, and learn to port their code to work there (if porting is possible). That never exists in Web applications.
Hardware limitations: For smartapps, the developer must be aware of the cellphone capabilities and limitations. Facebook (e.g.) can essentially grow their memory, and add new servers and cluster their environment as the demand grows. You can't do that with smartphone apps. You will have to limit your implementation to run in a capability that your desired smartphone can accommodate.
There are more (feel free to add) but all these are part of the development effort that a software developer has to look at if they want to go a a field of choice.

How do I integrate VoIP in my asp.net website?

How can I integrate Voice over IP into my asp.net website so that user's can speak to each other through the site?
Thanks!
Without extra software (plugins) I don't believe you can at the moment with any mainstream browser (you probably would not want your computer microphone available to your browser as default for security reasons also, although plugins tend to get around this by asking for permission to access the microphone and camera).
Note that it is a non-trivial exercise to make this work reliably due to the need to work around NATS and firewalls - Skype and the new Google Voice chat feature for example dedicate a lot of their effort to achieving this reliably. If you decide to use a plugin it would be worth checking it handles this well (along with general voice quality). See the link below for some background: http://en.wikipedia.org/wiki/Session_Traversal_Utilities_for_NAT.

Is WML and WMLScript dead?

Is WML and WMLScripts are used anymore ? I remember writing WML apps with classic-asp on server-side and we used interact with phone functionality from client using WMLScript and WTAI and do some cool things like, adding phone numbers to address book, trigger a call from WMLScript and much more. I still miss those things. I really want to know if modern web-browsers on phone have replaced WML with rich HTML support.
I also found that one of the most active WML and WAP forum Openwave Developers of our time is now discontinued which is no less than a shock to me. The forum also provided a nice WAP development SDK for testing WAP gateway simulation and WAP-pages on openwave browser simulator. All of these is now not seem to be available.
BEFORE DOWN VOTING EXPLAIN WHY, IF IS JUST BECAUSE OF IGNORANCE THEN STAY AWAY.
It is not dead yet.
It is used by some POS systems such as POSWEB, I have been developing on it for years in conjunction to ASP.NET to generate dynamic WML cards or downloadable catalogs, receipts, etc.
APPI Tecnologia's POSWEB Solution
Also another similar platforms do exist such as VERIWEB which are intended for the same purpose. Also I heard about similar ported WML/WMLScript being used in compact network enabled devices such as food / groceries dispensers, traveling card machines, etc.
This implementations supports mostly of the WML/WMLScript standard however it usually integrates additional functionality (depending on the target device), such as Smart Card processing, Simetric and assimetric cryptography, flat and indexed files creation and so on.
WML is still alive and in use many modern browsers doses not supporting WML for example andoid browsers like Firefox, Chrome but Opera still support WML for mobile and for web browsers also.
WML is more friendly to old phones but xHTML MP is the future in mobile WAP sites.
I would say, it's becoming less and less common out there in the wild.
You might find the odd device coming through that only does WML, but the effort to support those few might not be your goal in which case starting at html should be OK.
The users of those older phones typically already accept that their phone isn't the best and can't do as much as other phones.
Check out 0.facebook.com! There's been some resurgence of WML interest among some companies, mine included after Facebook Zero. The idea is that much of the technology still used in the developing world utilizes old technologies like WML, and coding up modern pages in WML will increase access in the developing world.

How can I keep up to date on the latest web development standards?

First off, I know that this question begs the other question - should the latest web development standards be followed and further will they remain relevant?
That aside, I am focused on GUI development, usability, etc. Front-end web development that utilizes XHTML, CSS, JavaScript, etc.
I know there are many gurus and thought leaders out there but with my projects I simply do not always have time to follow them all and keep up with the latest development standards. However, this is obviously very important.
So how can I keep myself up to date on the latest web development standards while maintaining productivity? Are there any specific groups or organizations to monitor for this? Best practices that one might follow?
The web is moving forward at a tremendeous speed nowadays. The big
drivers are Google, Yahoo and Facebook. Look what they are using and
how they stay productive.
As of today you must know how AJAX works, if you have been in the
web business for say the last decade and not encountered AJAX yet, it
should at least become a "aha this is how it should have worked from
the beginning" feeling for you.
Secondly, browser compatibility. First there was Mosaic, then Netscape
ruled the world for several years. Then we had the browser war
and Netscape lost it,
mainly due to bad strategy.
For several years (2000-2005) IE was the first choice browser, where
NS 4.7 was the defacto standard for compatibility with Mac, Linux
etc. These years were terrible (Tables in tables in tabels and 1x1.gif
etc...) but then Firefox arrived, Opera gained attention and now we
have Firefox, Chrome, Opera and Safarai as fully worthy alternatives
to IE.
To stay compatible with most browsers today, use JQuery
especially watch the full presentation "The DOM
is a mess" by John Resig the author of JQuery (google it yourself, I
wont promote any specific video site). But there are alternatives as well, Dojo, YUI etc.
On the server side, things are happening as well, especially in the
field of new exiting langauges. Check out commonjs,
node js, Couch DB
When millions of simultanous AJAX requests are flowing through the
network from millions of users of real-time interactive
web applications, you cant really work with gigabyte loaded weblogic or
websphere server solutions, you must use lightweight server systems
that scale easily to multiple servers.
One common factor in both client and server side is that JavaScript is gaining more and more acceptance. You should learn how to write good JavaScript code, although don't take Crockfords words too literally.
One nice thing with the web is that most knowledge is still as valid today as it was say 10 years ago, the difference is that the workflow today has become so much more productive.

What are effective options for embedding video in an ASP.NET web site?

A quick glance at the present-day internet would seem to indicate that Adobe Flash is the obvious choice for embedding video in a web page. Is this accurate, or are they other effective choices? Does the choice of ASP.NET as a platform influence this decision?
Flash is certainly the most ubiquitous and portable solution. 98% of browsers have Flash installed. Other alternatives are Quicktime, Windows Media Player, or even Silverlight (Microsoft's Flash competitor, which can be used to embed several video formats).
I would recommend using Flash (and it's FLV video file format) for embedding your video unless you have very specific requirements as far as video quality or DRM.
Flash is usually the product of choice: Everyone has it, and using the JW FLV Player makes it relatively easy on your side.
As for other Video Formats, there are WMV and QuickTime, but the players are rather "heavy", not everyone might have them and they feel so 1990ish...
Real Player... Don't let me even start ranting about that pile of ...
The only other alternative of Flash that I would personally consider is Silverlight, which allows streaming WMV Videos. I found the production of WMV much better and easier than FLV because all Windows FLV Encoders I tried are not really good and stable, whereas pretty much every tool can natively output WMV. The problem with Silverlight is that no one has that Browser Plugin (yet?). There is also a player from JW.
One consideration would be whether video playback is via progressive download or streaming. If it's progressive download, then I would say use Flash because you get a wider audience reach.
For streaming wmv, it is out of the box functionality provided by Windows Media Services
For streaming flash, you will have to install a streaming server on your Windows box. Some options are:
Adobe Flash Media Server (Commercial)
Wowza Media Server (Free/Commercial)
Red5 Flash Server (Open Source)
If you have access to Microsoft Expression Encoder 2, you can use that to encode a video file and generate a Silverlight video player. Then if you have IIS 7, you can use Adaptive or Smooth Streaming also checkout Smooth HD for a really cool example.
You can also do streaming from the free Microsoft Silverlight Streaming Service. It's connected to a Windows Live account.
A consideration is that the client will need to have Silverlight installed, just like Flash, but Flash has been around longer.
<object width="660" height="525"><param name="movie" value="http://www.youtube.com/v/WAQUskZuXhQ&hl=en&fs=1&color1=0x006699&color2=0x54abd6&border=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/WAQUskZuXhQ&hl=en&fs=1&color1=0x006699&color2=0x54abd6&border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="660" height="525"></embed></object>
I have worked for a company that developed a system for distributing media content to dedicated "players". It was web based and used ASP.NET technology and have tried almost every possible media format you can think of and your choice really comes down to asking yourself:
does it needs to play directly out of the box, or can I make sure that the components required to play the videos can be installed beforehand?
If your answer is that it needs to play out of the box then really your only option is flash (I know that it is not installed by default, but most will already have it installed)
If it is not a big issue that extra components are needed then you can go with formats that are supported by windows media player
The reason why windows media player falls into the second option is because for some browsers and some formats extra components must be installed.
We had the luxury that the "players" were provided by us, so we could go for the second option, however even we tried to convert as much as possible back to flash because it handles way better than windows media player
"Does the choice of ASP.NET as a platform influence this decision?"
Probably not.

Resources