The constraints only apply to a subset of formats, and they should only apply to formats that are already constrained by a specification. E.g., the MPEG-2 DVD format output only allows parameters that fit the DVD specification. In your case, I believe that VC-1 (the video codec underlying Windows Media 9 video) has constraints for frame rates at specific sizes. On the other hand, there are many unconstrained formats: Many different codecs used inside of QuickTime and AVI containers are unconstrained, as are all of the image-sequence formats.
In most cases the constraints are not new. The export formats have always imposed restrictions. The change is that the output properties are now validated against the capabilities of the format before frames are fed into the exporter. That gives us the power to avoid bad situations and also to alert you (at the bottom of the Output Module dialog) when the output properties will be modified to fit the constraints.
If you have a case where you get output in After Effects CS4 that is acceptable, but the same workflow in After Effects CS5 is not, please file a bug report.
Regarding your specific case: You can set the frame rate for a render in the Render Settings dialog box, so what is being fed to the output module is a set of frames at the frame rate that it expects for that format. You don't have to set the composition up with the custom frame rate just for this output purpose (though in general you want to design and work at your output frame rate when possible).
Unfortunately you have hit a known bug with the exporter constraints. The framerate values for WMV should be unconstrained, but are functionally constrained to a preset group of values: 1, 5, 6, 7.5, 8, 10, 12, 12.5, 15, 24, 25, 29.97, 30, 50, 59.94, 60
There is a workaround: create an Output Module template (Edit > Templates > Output Module) with your desired settings, and use that template to render your comp. This bypasses some of the checks that are done to validate the format constraint and slips the frame rate past the problem that causes this bug. (Since a template isn't associated with a specific comp, there is no associated frame rate for it to check against.)
FWIW - FLV also suffers the same problem, though with a different set of preset values: 1, 5, 8, 10, 12, 12.5, 15, 24, 25, 29.97, 30. Same workaround.
-=After Effects QE
There are some codecs that don't care a bit about frame size or frame rate. There are others that base their compression schemes on a specific set of parameters involving the size of the frame (multiples of 16 pixels for example) and frame rates (read up on GOP compression). If you try and use a different value the codec will either default to a standard that doesn't match your project or fail completely.
These standards are used to cram 200 GB of video date into 20 MB for playback through a specific device, codec, or player. I never deliver a project to a client, network or agency that doesn't conform to their exact specifications for frame rate, interlacing, frame size, and compression codec. I've got a spreadsheet with about 60 lines on it just detailing the standards for various cable and tv networks. The same thing goes for web distribution. Figure out what the standard is then deliver that. It never hurts to ask. I do it all the time.
I tried the Ouput Module Template workaround with no success. I have managed to confuse After Effects into working by changing the Output Module Format to other types and back to WMV, but I haven't found a method that's repeatable. More often than not this method results in an error pop-up of "After Effects error: zero denominator in ratio multiply. (17::17)" when the video output is re-enabled.
Our current workflow solution is to render to AVI, then import and re-render to WMV in a previous version of After Effects.
Hopefully this will get patched at some point. Thanks for the replies.
Sorry for the slow reply. Was out of the office for the week.
Can you provide more details about your exact workflow? What are the dimensions and frame rates that you are trying to feed into WMV? Do you set these properties in the main comp, are you nesting comps, or do you change the values in the Render Settings?
I'm a little confused by this part of your post:
> ... when the video output is re-enabled.
When are you disabling video output? Can you provide the exact steps that lead to the error?
Regardless of your workflow, you might try trashing the After Effects preferences. (And by "trashing", I of course mean moving the preferences files to a temporary location so you can put them back if that doesn't help.) The export format constraint logic stores some of it's data in the preferences, and if it got bungled in some way that could be causing the Template workaround not to work.
Here's the simplest project setup we use (as we have the same problem with complicated nested comps and simple one-layer comps): Single comp, dimensions of 640x320 at 20fps. We output this comp as an uncompressed AVI at 640x320 at 20fps and a WMV9 VBR 90% quality resized in the output module to 160x80 at 20fps.
The WMV we end up with is at 30fps. It doesn't make a difference if it's resized in the Output Module, nested and scaled down in a comp, or built straight in a scaled down comp, all three output at the wrong framerate, with or without an Output Module template.
Resetting the preferences file made no difference, sadly.
As for "... when the video output is re-enabled", I was changing formats in the Output Module, and once clicked on AIFF by accident. When changing back to a video format, I had to re-enable the video output, which led to the error. I can't seem to reproduce it, now, though.
Thanks for the additional info. After some further experimentation I found the snafu in my previous recommendation: when you create the Output Module template, you need to enable Audio Output.
You can disable audio after the template is applied to the Output Module, but leaving it enabled in the template appears to be key in fooling the Output Module into bypassing the constraint logic. (This makes sense to me based on what I know about the behind-the-scenes voodoo that happens here. The short explanation is that After Effects will initialize the audio parameters even if you're not using them, which includes engaging the constraint logic, so if the template lacks Audio Output you'll still get the problem.)
For my own curiosity- why do you use 20fps? It's an uncommon frame rate. I can see using it to reduce file size for proofs and such but it looks like you're using that for your main comps as well, so I'm curious about the reason.
Works like a charm! Thank you very much. You've safeguarded my sanity for a little while longer.
In answer to why 20fps, some of the models of outdoor displays we produce run at that frame rate, so it's useful to be able to create proofs that match the source.
Again, thank you for your help.