In the past, some of my projects have required me to create a movie version of a fullscreen Flash application. The easiest way to do this has been to get a screen capture. However, capturing anything over 1024x768 has resulted in choppy video, which is unacceptable. I understand that there are hardware based solutions for capturing fullscreen video, but I have not been able to find out what these are. My output needs to be scalable up to 1920x1080 and result in an uncompressed AVI file with no choppy-ness.
With a bit of luck your graphic adapter already has a analog video output. You could hook up a dvd recorder and just digitze the video signal on a stand alone hardware box.
That won't give you 1920x1080 though.
If you really need to get captures higher than dvd resolution you need professional (and incredible expensive) video capture equipment.
edit:
Btw - if you want to capture 1920x1080 in true color at 30 frames per second uncompressed you have to somehow store around 237 megabytes per second. Just to give you an idea how much data you have to deal with...
Phillips dvdr3575h and other set-top boxes may be the simplest. However, I don't believe they support the resolution you are looking for.
Various professional products support full HD capture:
http://www.decklink.com/products/hd/
There are others. Capturing the full, uncompressed digital or analog stream is a pretty heavy requirement.
If the Flash application is non-interactive, there are many tools that can get non-realtime capture (but completely smooth and perfect) to either an AVI file or a series of PNGs.
If it is interactive and you absolutely need realtime capture, FRAPS might actually be able to do the job, at least on Vista, where its not usually that difficult to manipulate FRAPS into recording various non-DirectShow applications by using Aero as a graphics layer.
I have a couple of responses to all of these great answers:
- I deal with uncompressed AVI routinely and so I know how much data I'm dealing with
- I create interactive demos for a living, which is what needs to be captured. I've tried several Flash to Video applications, with only moderate success
- 1fps = very interesting, but probably the most time consuming. Nonetheless, I will see how successful this is
- I will also try FRAPS to see how successful that is, thanks for the tip
- Adam, thank you for those links, that is exactly what I was looking for
If you load the movie into the Flash ActiveX control you can invoke the IViewObject::Draw
method (or the OleDraw
helper function) on the control to paint it into a DC of your choosing and loop through each frame in the animation. Extracting the audio will be more difficult, but if you've made the animations in-house that shouldn't be too much trouble.
If you don't need to click around in the movie Flash CS3 supports frame by frame export of Flash movies (including scripted stuff).
Open up your animation in Flash, if you don't have a .fla available making a simple wrapper that loads your swf should work too. Then go File -> Export -> Export movie, and choose Quicktime. Set the various fiddly bits to your liking, and then Flash will step through your animation as fast as it can, saving you both the risk of dropped frames and having to wait for a 1 fps capture.
http://rgb.com/ I've looked at their product before - very high end/expensive but perfect video and it's a hardware solution so it's not processor intensive on the machine you are trying to do the demo on.