"Always On" Impromptu Video Conferencing Solution?
TristanBrotherton asks: "We have several geographically disperse offices all over the world. I thought it would be cool to make virtual windows in each office, linking a display panel with a mic and camera to the same set up in each other office. You could place these systems in public areas and in meeting rooms which would allow impromptu video conferencing, and 'hey bob nice shirt!' taunts to improve communication between our staff. I know you can get IP cameras, but I am looking for a simple all in one solution that can auto-connect, negotiate the best bit-rate, and remain real-time. Cisco charge tons of money for this stuff, but surely there must be a way to make a reliable system myself. Cringely thinks this might be built into apples iTv. Rather than wait on that, I am asking Slashdot what they would use to build such a real-time conferencing system, has anyone else attempted a project like this?"
This does not have to be expensive, and it does not have to eat up the entirety of your pipes. The hardest part is going to be the 'conference bridge' (MCU) that everyone will call (a pair of offices can be point-to-point, many-to-many requires a bridge).
Software: Ekiga on Ubuntu
Protocol: SIP? H.323? Whichever you can find a cheap MCU for (H.323 OpenMCU sorta works, don't know about SIP)
PC Hardware: Cheap ass, last generation PCs with TV-in cards
AV hardware: Cheap ass, last generation DV cameras with integrated mics and (preferably) wide angle lenses. You'll also need a tripod ( 1/8" inch headphone jack converter.
Hardware config: wire up the DV cam (audio and video) to the TV-in and MIC jacks on the PC.
Software config: Configure a user to auto-login, add an Ekiga call to your session startup (call the MCU, not a site - don't know how to do fullscreen via CLI).
Errata: You probably have firewalls. Firewalls screw with videoconferencing in many ways. Besides needing to poke the necessary port holes, they will timeout sessions after a certain number of hours. PIX's are notorious for this. Additionally, your MCU and clients will need to have their session timeouts set. You may just want to cron call restarts every 12 hours or something. If you use OpenMCU, remember it will ONLY work with the crap-tastic H.261 video codec.
Alternatively you may want to look at the open source ACCESSGRID project (warning: requires multicast - hope you have good network staff) or Microsoft's ConferenceXP ('free' for the time being). Good Luck.
Streaming systems are not usually designed for video conferencing and will buffer quite a bit, this adds a noticeable latency if your doing video conferencing. I tried this with real server years ago and found it had almost 30 seconds lag. I haven't measured the lag with VLC although I suspect it will still be in the seconds when you want milliseconds for videoconferencing.
Dlink's DVC-1000 is what you need. I work with deaf people and they use these to communicate via ASL. It is good enough for them to read their sign's. They cost about $200 and work on residential broadband with a TV, no computer required. They also have a microphone.
Cheap storage VM.
We've used VLC to do similar things. Salient facts:
* VLC has about a 1-2 sec. internal latency. That's just enough to severely disturb the flow of a back-and-forth conversation. (Recall the many slips of the news agencies when they started reporting over sat phone links). H323 conferencing units like Tandberg, Polycom, operate with about 0.5s of latency, which is just about the maximum a typical human conversation can tolerate naturally.
* Multicast works very well, just remember to set your TTL high enough to traverse all of the routers. Assuming all of those routers are set to pass on multicast. Unicast works pretty well too, or even unicast-to-multicast bridges and vice-versa (just remember the additional latency if you transcode too) Also, if you're using mpeg4 over a WAN, however, remember to check "Strict rate control", or else you'll get some pretty high bursts of bandwidth utilization over your set average.
* In a converence room where you're not using a headset, you need AEC (acoustic echo cancellation). This prevents your microphones from picking up the sound of the remote end from your speakers and sending their audio right back at them. Skype manages to do this in software, but VLC and surprisingly many other VoIP softphones do not (at least the last few versions of SJphone, X-lite, Netmeeting I tested did not). If you can't find any software AEC, you need to spend money on some decent AEC hardware that will sit between your computer, mic, and speakers, preferably one with noise reduction as well.
For all these reasons, plus documentation and maintenance we ended up shelling out the big bucks for Tandberg units instead. I've never been happy with the Tandberg video quality, though, even at high bitrates (2Mbps h263 or 768kbps h264). So we still use VLC for transmitting computer graphics (esp. 3D and animations) that go along with a presentation.
For your purposes, it sounds like video Skype or the Apple thing would give you the best results for little more than the cost of a computer. Anything more sophisticated and then you'd probably want to look at some good H323 software/hardware to give you much more flexibility with MCUs, easier configuration etc. Just mind that different manufacturers' H323 products don't interoperate as well as they should, so test first.
You can get a couple of VBricks. The MPEG4 models are what you want. They have a videoconferencing mode which is low delay.
We use them specifically to do what you're describing to do some surgical training. One box in the OR, another in a conference room attached to a projector. They even support a really nice echo canceling microphone, which normalizes audio levels no matter how far the people are from the mic.
The vbricks also have scripting, support SNMP puts and contact relays. So there are a number of different ways you could have non-technical people control the conference, if you didn't want it running 24/7.
You could buy the model with the internal hard drive, and have a big red button to start/stop recording the whole conference.
Best of all, they run a hardened RTOS. No patching the OS, updating virus software or whatever. It'll take under an hour to setup, including opening the box, and you won't have to worry about the things ever again.