Skip to main content

Creating an embedded screencast recorder in your desktop application

Posted by fabriziogiudici on October 24, 2008 at 4:48 AM PDT

A couple of beta users of blueMarine have submitted an issue several weeks ago, about some strange behaviour of the photo thumbnails. As usual, I asked them to send the log files, a thing that they did promptly. I thing I've figured out what the problem is and have a solution, but I can't reproduce on my computer - which is indeed strange, according to my hypothesis. So I still wonder whether I've actually understood what's happening, and I realize that a log file is not enough. I'd really like to see a screencast of the thing.

But I don't feel comfortable in asking for installing a specific application for producing screencasts to beta users, that are already donating some of their time to the project, also considering that most of them are not free on Windows and would require messing with evaluation licenses and so on. So I thought that it would be cool to create a plugin that can be integrated in my application and do the recording by itself. After discussing this with the other NetBeans Dream Team members, Wade Chandler pointed me to this pretty neat piece of software: not only it does all I need, but it does it smartly (by plugging into the AWT thread it is able to spot which parts of the screen are being updated and keeps as low as possible the number of bit going into the video stream) and is even able to produce a regular Quicktime in 100% Java code. BTW, I strongly suggest you to add Jeremy's blog in your feed since it's a very cool one about Java and the Desktop (and I don't understand how I missed it so far).

I've prepared a NetBeans RCP plugin for it, now I just need to solve a couple of issues specific of my application (for instance, I have several fade-in/out effects that involve the full screen and appear to create a load too high on the computer - it makes sense to disable them if you're debugging the application). I'll post it as soon as it is ready and working.