This is a general question concerning technology decisions for a product development. My aim is to develop a web based remote support (desktop sharing application) with audio and video communication.
My ideal solution would be to develop it as web product meaning that the client side always run in the browser. Client technology would be JavaScript (using Google GWT) and for desktop capturing, desktop presenting, audio and video I want to use Java applets.
The server side runs using Java Servlet technology with a database back-end (Hibernate and a SQL based data source). For data streaming my plan is to use RTP/RTSP transport over UDP (for desktop data the internal protocol will be VNC (RFB) but the transport will be RTP itself). For audio and video RTP is used for the transfer.
My basic version (prototype) will work using a relay server meaning that the clients always connects to the server (logon, authentication, session control) and the server always relays the data between peers.
My question is - is my technology decision correct? I mean, I decided to go pure Java because of multi-platform support. Nowadays we have Silverlight which have more advanced desktop support, but it is limited to only one platform (Windows).
I also fear of Java support for audio/video technologies. I have seen JMF (Java Media Foundation) which seems to have support for RTP/RTSP, audio and video capture/display but this package look very outdated. What do you think about it?
For actual screen capture I'd start with AWT Robot class. I know that for high performance desktop capture more low level techniques are necessary like API hooking or mirror driver, but my prototype aims to provide 1 FPS for screen capture so I believe Java Robot will make it.