Recently I have been tasked with researching options for video conferencing platforms that one can integrate with a software product. I will share it how I see it and I would love to hear what you have to say.
High expectations
We used to sit down at our desk, plug in or adjust the external web camera, turn Skype on and start chatting on our hard-line cable or DSL connection. Dropped frames and pixelation came with it and we did not complain much because video chatting was sci-fi and quirks were expected.
Then we got used to the idea that web cameras come with our laptops, neatly positioned in the frame above the screen. We would again turn on Skype and hope that our home wi-fi connection wouldn’t choke with the overflowing data.
Today we like to complain how Apple’s Facetime does not work on 3G network. But we say, “Well, I guess I will have to connect my iPhone to one of the multitude of wi-fi connections around me and expend two clicks of my effort before I can start the video chat”. From pretty much anywhere. Having one camera on a mobile device didn’t seem to do the trick for us so one more was added.
When video chatting with just one person at a time wasn’t enough, Vidyo, Skype and ooVoo started offering multi-person conversations. And then they took it to mobile.
This is the environment in which we are developing right now.
Having video chatting so widespread by leaders like Skype, businesses started not only using such services daily but also incorporating them into their processes and services. A need has arisen to seamlessly integrate video chatting into existing and new software.
Who is out there?
Flash Media Server was the most popular and accesible solution for a long time. Adobe released a specification for RMTP protocol that other people used to create their media servers like Wowza and Red5. Vidyo came to the scene is 2005 and created waves with their patented Adaptive Video Layering Architecture. GTalk joined the scene recently supporting XMPP protocol and Skype SDK is currently in a closed beta.
While there are many other good video conferencing services, the ones above are what developers have to work with.
How does mobile come into play?
Since mobile is such a big part of video chatting today, imho it is critical that anyone offering SDKs has a solution for it. While there is a RTMP implementation for iOS, I haven’t worked with it so I can’t speak to its quality. That used to be a big hurdle for Flash Media Server and its siblings. For that reason, Wowza added support for RTSP/RTP and MPEG-TS protocols so you can stream content to iOS and other platforms. Vidyo has an API for iOS and Android. That makes Vidyo, Wowza and potentially FMS the best candidates to focus on. When Skype goes public with their SDK they might join the list.
Who has the best quality?
Vidyo, simply put. Quality is what they are all about. They architected their solution from the start for Internet conditions, meaning they built the system with the expectation of questionable network connection quality. Vidyo also helps power GTalk’s video conferencing which speaks highly about their capabilities.
That does not mean that Flash based solutions are a throwaway, far from it. But a side by side comparison puts Vidyo solution ahead by a critical difference. Let me explain. Let’s say that in a RMTP (Flash) conversation that lasts two minutes you have the video freeze-up for one second. That amount of loss is acceptable and expected. Chances are you will not loose a critical piece of information in a regular conversation. But let’s say that you are not in a regular conversation. Let’s say you are talking to your doctor or communicating via sign language or just moving a lot in front of the camera. Let’s say your business depends on the quality of video chat. That’s where Vidyo comes through. In my testing I haven’t had any video freeze-ups at all – ever. That makes the rhythm of the conversation much more human. It makes the experience feel like an in-person conversation because there is no reminders such as lag or a freeze that there is a technology between you.
Pricing
Wowza licence will run you ~$1,000. They also offer a developers edition free. FMS will run you between ~$1,000 and $4,500 depending on the edition. Both of them you have to host yourself or my personal preference, have an account with a service that hosts it for you. Influxis has been my choice for years. Not having to worry about scaling and maintaining hardware goes a very long way. Vidyo’s pricing is cut up into smaller pieces based on your needs and you can inquire with them about your case. They are pricier than the previous two.
Documentation
Sole reason for not considering GTalk and XMPP further is the state of documentation for it. While I have found some materials, it seems that there is no big effort to make it easier for developers to jump into it. Please prove me wrong. FMS has a huge body of documentation and a big development community behind it. Wowza is well documented and has a formidable community behind it, enough to have good chances of someone else having the same problem as you are. Vidyo’s documentation is impecable but I can’t speak to the community size. That doesn’t matter much because with Vidyo you have to get support which is fantastic if you can afford it.
Summary
Today, I would consider these three players: Vidyo, Wowza and FMS, in that order. Now I would love to hear about your experience with developing video conferencing apps!


Have you tried products such as clickmeeting.com ?
No I haven’t Sebastian.
Love the article, I’ve been searching in this mobile video streaming realm a while and nobody seems to know much about it.
Are you positive Vidyo has an API/SDK for the iOS? I’ve been trying to reach them with no luck.
Thanks! I’m sure. To be precise, they will be releasing it publicly this summer. I’ve had a chance to see working examples and get a confirmation from Vidyo directly.
That’s awesome – do you have any advice for who to contact at Vidyo? I really want to get my hands on that SDK but the one sales lady I’ve talked to doesn’t even understand what SDK means.