views:

342

answers:

3

I want to create a C++ cross-platform (Windows and MacOS X) application that sends the screen as a video stream to a server.

The application is needed in the context of lecture capture. The end result will be a Flash based web page that plays back the lecture (presenter video and audio + slides/desktop).

I am currently exploring a few options:

  • Bundle the VLC (the Video Player) binary with my app and use its desktop streaming features.
  • Use the Qt Phonon library, but it doesn't seem to be powerful enough.
  • Send individual screenshots plus a timestamp to the server instead of a video stream. The server then would have to create the video stream.
  • Implement it in Java and use Xuggler (BigBlueButton uses it for their Desktop Sharing feature)
  • ...?

I would greatly appreciate your insights/comments on how to approach this problem.

+3  A: 

I think VNC is a great starting point for a software solution. Cross platform and well tested. I can think of a couple commercial projects that are derived from VNC - Co-pilot from Fog Creek springs to mind.

But concider tapping in to the projector hardware to capture slides instead of installing software on every computer brought in by lecturers. I.e. a splitter and then a computer to capture the slide video signal as well as the presenter video signal.

Where I worked lecturers brought in a plethora of laptops for their presentations and rather disliked the idear of installing anything moments before their presentation.

I'd go for a hardware solution - a Mac mini with Boinx.

Niels Castle
VNC seems nice. On Mac I could use the built-in VNC server which is really great.
StackedCrooked
As commented above, you can use a tool like http://www.unixuser.org/~euske/python/vnc2flv/ to directly extract flash video from vnc.
Suppressingfire
A: 

There are a bunch of screen streaming and recording software available, On the Windows platform you can use Windows media encoder to do this and even broadcast a live mms:// stream

Capturing the screen is not hard to do ( unless the content on the screen is overlay video or fullscreen 3d graphics ). Streaming it live is complicated, encoding and recording it to disk is quite straightforward with most multimedia frameworks ( Directshow, gstreamer )

rep_movsd
A: 

My solution was to write a simple GUI application in Qt that invokes a VLC process in the background. This works really well.

StackedCrooked