Desktop screen sharing with Openfire

A few moons ago, there was a request from some Spark users in igniterealtime for a desktop screen sharing plugin. I did mention at that point that I had done something in the past using Red5 and a screen-capture webcam called VH Screen Capture Driver and that I would dig it out of my archives and put it into a future release of the Red5 plugin.

I have since discovered that this approach has a few drawbacks. It is not bandwidth efficient, will only work on Windows and although the video driver is free, it is not open source. What we needed was for Flash on the desktop to capture the screen as images, send them to a server and re-assemble them back into a video feed which is then published by Red5. Despite my best efforts, I have since not been able to work out how to do this and if anyone has any tips and clues, please tell me. It will be appreciated.

In the meantime I stumbled on Openmeetings in the Openlaszlo community. It is an online meeting collaboration tool developed by Sebastian Wagner with a number of usefull tools like video, white-board and of course screen-sharing. The video sharing is java-based and does not require any software install other than (the java runtime environment) JRE 1.4+. It uses the same java technique (java.awt.Robot class) as Spark to take a screenshot. It goes one step further by pushing the captured screen shots at a regular interval to a web server using the http upload feature. In the spirit of Open Source and re-useability, I have now decided to use Sebatian’s approach and keep the images on the web server and allow multiple clients to view with an auto-refreshing webpage instead of my original intention to convert into a video feed for Red5.

I have added this feature to the latest version (0.0.10) of the Red5 plugin. It includes the server-side image upload support, the viewer webpage and the Openmeeting screen publisher application as a java webstart application. Both publisher and viewer can be accessed from the Spark red5 plugin and JWChat. You select the publisher from the menu to publish your desktop screen and you right click the roster context menu to view the desktop screens of your contacts.

As usual, all feedback is welcome.

Interested in trying it out, can we get some links to download locations?

How about using some of the different VNC flavours as a base? There are numerous open source implementations of VNC (TightVNC, UltraVNC, …).

Maybe you could just use the server and viewer code and just replace the transport (and authentication) by sending XMPP packets?

I don’t know wether this can be a successful approach, but have a look yourself

red5 plugin version 0.0.10 should appear on the beta plugins page soon. I have submitted a copy to Jive to be uploaded. If it does not appear in the next few days, then download from here.

-dele

It sounds like a geat idea and should work. With enough interest, screen sharing could have an XEP and be supported properly in XMPP by Openfire and Spark.

Until then, consider my approach a stop gap.

I did not consider VNC because I wanted a solution that was supported by a web client and that meant java or flash for now.

-dele

Hi Dele,

I did experiment with JMF and the Windows Media Encoder to transfer videos. The Media Encoder runs of course only on Windows and must be installed but it produces good quality and one can use the Media Player to display it which is available on most clients … with a delay of 5-10 seconds so useless for fine p2p communications.

JMF works also fine and Spark uses it for Jingle (at least I think so), so it should be only a small step to use it for video. I’m not sure about the delay.

And I’m still hoping for a “Stream Audio” and “Stream Video” button within Spark so one can play something for the other one without the need of transferring the whole file.

LG

We could really use this.

When will the red5 plugin version 0.0.10 be available ??? I downloaded from the above link but it appears to be 0.0.9.

Where can i get the .10 version ???

regards

bryan Webb

you can download from http://red5.4ng.net/red5.war

-dele

Hi it200,

Thanks for the feedback.

And I’m still hoping for a “Stream Audio” and “Stream Video” button within Spark so one can play something for the other one without the need of transferring the whole file.

You can do that right now with Red5 and Flash (outband of course). The Red5 plugin does record/playback video messages. I am thinking of adding a more generic video publish/subscribe feature, but I am short of ideas. I did however come across an interesting red5 application http://www.tjoon.com/ last week.

i click the download link above and it gives me a zip file. where is the .war that i’m supposed to put in the openfire plugins directory?

your browser has renamed it to red5.zip because my web server does not have a mime type for war. It is actually red5.war. Just rename it back.

-dele

great thanks i’ll try it

Thanks for info.

I downloaded and tried vncjlgpl. Could not figure out how to use it until I found http://www.harpoontech.com/blog/index.php/2007/01/

I however cannot get it working with jre 1.6.

-dele

I start it with

java -cp vncjlgpl.jar gnu.vnc.VNCHost

and it throws…

Got an exception, shutting down server VNCServer for: VNCj - Lightweight Model Test

java.lang.reflect.InvocationTargetException

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

-dele

Thanks very much for that. It did help!!

It throw an exception, but was still running. I didn’t pay attention. I have used the windows VNC viewer and was able to to connect to screen 50. I couldn’t get the flash vnc viewer (FlashVNC) to work. It uses TightVNC, so that may be why.

-dele

Hey Dele,

Nice work. Well I have issues with red5, It uses the domain name instead of the ip address when you intend to share a desktop therefore it doesnt work. Where in the configuration can i change this to allow it use the ip as I got it up and running already this is the only setback I have regarding its use. Thanks

I hate to leave this open without closure, so I have come back to answer my own question

What we needed was for Flash on the desktop to capture the screen as images, send them to a server and re-assemble them back into a video feed which is then published by Red5. Despite my best efforts, I have since not been able to work out how to do this and if anyone has any tips and clues, please tell me. It will be appreciated.

Hi,

I tried to download red5.war from this link, but it seemed no longer there. Do you have other link to download? Also, I checked http://code.google.com/p/red5-screenshare, do you have any howto for integrating this red5 to openfire? I’m not good with java code. Thanks,