A few Flash Designers and developers alike have asked me or rather challenged me why I use a 31 fps in almost all my SWF documents. Let me archived this on my site so that I can refer to it future, just in case. And thanks to the person who once did an explanation on the same (sorry that I have forgotten who it was).
So this “Magic Framerate“, the fps of some odd number like 21, 31 and why people have choosen that. Frame rates are stored in 16.16 fixed pointer integer. Add to this, the framerate is converted to a millisecond frame delay value. Thus, the overall accuracy of framerates becomes ridiculously low, unless one uses the streaming sound hack aka the kicker layer (for instance 24 frames/sec); converts to a frame time of 41ms which factually converts back to real frame rate of 24.39 frames/sec. And the fact that frame times are handled relative instead of absolute, this eventually leads to a realy screwed up frame rates.
It is heard that timers were quite inaccurate in previous MacOS releases. There is another issue, the maximum time resolution (DoPlay call frequency) on MacOS browsers is currently between 20 and 40ms. With video, the maximum framerate one can achieve is currently around 27 frames/sec. IE WIN has a time resolution of 10ms, hence we can achieve maximum frame rate of around 100frames/sec. There a few framerates which will show a more consistent behavior on MacOS and Windows, those are the famous 21 and 31, the magic framerates.