Sign in to follow this  

Rendering to an AVI?

This topic is 4597 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi, I am sure that i remember a discussion about this a while ago, but can't locate it in a search.... Is it possible to render directX to an AVI, as well as or instead of the screen? If so, would it also be possible to render at speeds slower than the final playback speed? or would it just be some sort of real time capture? a samplegrabber on the whole primary surface or something?!? Thanks Si

Share this post


Link to post
Share on other sites
Rendering movies can really suck the performance right out of any graphics application, since it's so resource demanding. Where you can get away with snapping a screenshot every now and then, taking one *every* frame really pulls it down. I recommend that you try out FRAPS - it's actually pretty good when it comes to recording in-game movies.

Share this post


Link to post
Share on other sites
Thanks, both links are very interesting.

It occurred to me that to produce a good quality video (rather than suffering a huge fps drop during recording), you could enable your app to run slow, allowing time for each frame to be rendered, codec'd and saved, before rendering the next.....

Then when the avi is replayed, it runs at normal speed.

I guess this is sorta stop frame animation meets directX!!!!

Share this post


Link to post
Share on other sites
If you do want to capture video at full rate, I'd recommend implementing a demo recording/playback system first. You'd play the game once, recording user input and stuff via the demo system, until you've got what you want. Then you play back the demo and record the result. That way, you can avoid trying to play the game at 1FPS...

Share this post


Link to post
Share on other sites
Quote:
Original post by superpig
If you do want to capture video at full rate, I'd recommend implementing a demo recording/playback system first. You'd play the game once, recording user input and stuff via the demo system, until you've got what you want. Then you play back the demo and record the result. That way, you can avoid trying to play the game at 1FPS...

I've used a similar "fixed time step" system to render the D3D movie that I'm gonna release to you guys sometime soon [smile]

The final movie is about 45 seconds (900 frames) but took about 2hrs 30mins to render [rolleyes]. Then again, I did run it through the REFRAST with maximum quality settings [grin]

Jack

Share this post


Link to post
Share on other sites
Quote:
Original post by jollyjeffers
The final movie is about 45 seconds (900 frames) but took about 2hrs 30mins to render [rolleyes]. Then again, I did run it through the REFRAST with maximum quality settings [grin]

[lol] That is pretty bad. To bad you didn't have one of these bad boys:



They are good furniture, too.

Share this post


Link to post
Share on other sites
Quote:
Original post by circlesoft
Quote:
Original post by jollyjeffers
The final movie is about 45 seconds (900 frames) but took about 2hrs 30mins to render [rolleyes]. Then again, I did run it through the REFRAST with maximum quality settings [grin]

[lol] That is pretty bad.

Yup - I checked my setup again this morning, seems that I had the DX runtimes set to debug, maximum validation and maximum output, running on the REFRAST with 9-sample AA and a debug build of my C++ code... [rolleyes]

Quote:
Original post by circlesoft
To bad you didn't have one of these bad boys:



They are good furniture, too.

I want one! But I'm not sure about the colour - may not go with my other furniture/decoration...

Quote:
jeffers is the emoticon king!

[lol]

Jack

Share this post


Link to post
Share on other sites
Jack,

What was your method for performing the capture in your fixed time frame system?

How do I go about copying the screen/backbuffer to the avi?

Thanks

Si

Share this post


Link to post
Share on other sites
Quote:
Original post by sipickles
What was your method for performing the capture in your fixed time frame system?

I just used a IDirect3DDevice9::GetFrontBufferData( ) call after each Present(). When rendering, I take a multiple of the current frame index as the "time" rather than use anything like GetTickCount() or QueryPerformanceCounter()... simple, but it does what I want.

Quote:
Original post by sipickles
How do I go about copying the screen/backbuffer to the avi?

I cheated [smile] I set it off rendering the animation and outputted each frame to disk (Frame-0001.bmp, Frame-0002.bmp ... Frame-0900.bmp) and then fed it into either Jasc Animation Shop or VirtualDub and got it to compress them down to an AVI.

I've heard that "Video For Windows" allows for quite an easy way to despatch frames to an AVI on the fly.

Jack

Share this post


Link to post
Share on other sites

This topic is 4597 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this