Hello,
Since it's my first post, I'll try to avoid one of the most common pitfalls and
state that:
Yes, I've (intensely) searched through as many forums / sites I could find.
My task:
To record a steady 25fps movie, with audio of a Java Application encoded in
Xvid.
For the recording and encoding I am succesfully using JMF.
What's the problem then?
The recording of (eg. Taking snapshots of the program) is far too slow.
In my current best solution I use a custom RepaintManager to only take
snapshots of the "dirty" regions of the screen.
But the process is too slow when I go to resolutions beyond 800x600 and the
entire program becomes "dirty".
My solutions:
- Take entire snapshot of program
- Java.AWT.Robot, constant time, time is dependant on resolution.
- paintComponent(Graphics g) using BufferedImage, depending on
complexity of component, faster than Robot, no problem of increased resolution
on simple applications
- printComponent(Graphics g) using BufferdImage, sometimes faster than
paint, depends on component complexity
- paint/printComponent(Graphics g) using VolatileImage, extremely fast
(0-1ms), as expected as you are copying from another volatileimage
(backbuffer). Drawback: going from VolatileImage to BufferedImage is slow (3x
as slow as Java.AWT.Robot)
- Custom RepaintManager
- Take snapshot of dirty region using Java.AWT.Robot, drawback that
it's too slow if a full repaint is called
+ You get inconsistencies if using a scrollpanel.
The Questions:
Can I directly hook into the VolatileImage / BufferedImage of the
BackBufferStrategy, a feature which was to be implemented according to this
post: http://forums.java.net/jive/message.jspa?messageID=41182#41182 , dating
back to 2003. (Haven't found anything in the BackbufferStrategy API)
Is there a fast(er) way to transform a VI into a BI besides VI.getSnapshot() or
BI.getGraphics.drawImage(VI)?
Can I adapt the RepaintManager to use the paint/print function and still only
print a small part of the program? print and paint seem to ignore the
Graphics.setClip()
Are there any other solutions to this problem?
Any help would be greatly appreciated because I am at the end of my latin.
TAGS:
Screen capture, Screen recording, Screenshot, java.awt.Robot, paint,
paintComponent, print, printComponent, BufferedImage, VolatileImage,
RepaintManager
[Message sent by forum member 'methius' (methius)]
http://forums.java.net/jive/thread.jspa?messageID=342669
===========================================================================
To unsubscribe, send email to [email protected] and include in the body
of the message "signoff JAVA2D-INTEREST". For general help, send email to
[email protected] and include in the body of the message "help".