The FXScript Reference

For Final Cut Pro created by Joe Maller

fps

fps

Fps returns the current frame rate of the source clip. This value does not take interlacing into account, and always returns 30 for NTSC video and 25 for PAL video. Note that these are integer values even though the actual NTSC frame rate is 29.97.

Even though interlaced clips show an fps of 30, they're calculated at a frame rate of 60, since each field is treated as a frame. Dividing the field-corrected number of frames by fps will yield the length of a clip in seconds.

Related Links:
filter

Additional Notes

Correcting FPS

Here's a single-line snippet which will return the true interlace-corrected FPS value:

float trueFPS = fps * (fieldprocessing+1);

fps refers to sequence (FCE HD 3.5)

From some tests I made mixing PAL clips into NTSC sequences (and viceversa), it appears that fps, returns a value relative to the sequence including the clip, independent of the clip frame rate.
Instead, GetTimeCode returns the frameRate and dropFrame of the clip.

So a filter applied to a PAL clip in an NTSC sequence gets fps=30, but GetTimeCode returns frameRate=25 and dropFrame=0.

And a filter applied to a NTSC clip in a PAL sequence gets fps=25, but GetTimeCode returns frameRate=29 and dropFrame=1.

(fps returns 30 in place of 29.97 and GetTimeCode's frameRate returns 29 instead of 29.97... but this is known)


fps and GetTimeCode (FCE HD 3.5)

An old comments on GetTimeCode "Usage overrides clip attributes" Joe Maller, Nov. 2, 2002, states something opposite to my previous comment: there GetTimeCode returns the sequence frame rate while in my experience it returns the clip frame rate.

Are FCP 3.02 and FCE 3.5 behaving differently ? Or did I miss something ?