[FFmpeg-user] How to change video fps from 29.970 to 25?

Andy Young Andy.Young at bbcspp.com
Tue Sep 2 18:11:56 CEST 2014

>> On Tuesday, September 2, 2014 2:21 AM, Damian Głodny <damian at artnmedia.pl> wrote:

> > Hi, Arno. Thank you for advice, I will check it. I also found some information
>> about converting videos from 29.970 to 23.976:
>> https://documentation.apple.com/en/finalcutpro/usermanual/index.html#chapter=E%26section=2%26tasks=true
>> In document above you can find some techniques to convert your videos. There are
>> methods for conversion from 29.970 to 23.976 called:
>>    - 3:2 Pulldown Removal,
>>    - 2:3:3:2 Pulldown Removal
>>    - Duplicate Frame Removal (bad)
>> Is it possible to use them in FFMPEG?

>Yes but it won't help you. These methods are for undoing telecined material. That is material that was originally 24 fps and was "telecined" into 30 fps. They will not work on your material. There are in >ffmpeg at "pullup" and "fieldmatch." I think you are going in circles.

>ffmpeg cannot do what you want, unless someone adds this "optical flow" stuff, you are out of luck in using ffmpeg directly.

I hope this is not "bad form" to offer an alternative to ffmpeg on this mailing list, but in case it helps

The ffmpeg fork, ffmbc, purports to have an interpolating frame rate filter:

@section framerate

Change the frame rate by interpolating new video output frames from the source

This filter is not designed to function correctly with interlaced media. If
you wish to change the frame rate of interlaced media then you are required
to deinterlace before this filter and re-interlace after this filter.

This filter accepts options in the form of @var{key}=@var{value} pairs
separated by ":".
Alternatively, the @var{fps} option can be specified as a value alone,
optionally followed by a ":" and further ":" separated @var{key}=@var{value}

A description of the accepted options follows.

@table @option

@item fps
Specify the output frames per second. This option can also be specified
as a value alone. The default is @code{50}.

@item interp_start
Specify the start of a range where the output frame will be created as a
linear interpolation of two frames. The range is [@code{0}- at code{255}],
the default is @code{15}.

@item interp_end
Specify the end of a range where the output frame will be created as a
linear interpolation of two frames. The range is [@code{0}- at code{255}],
the default is @code{240}.

@item scene
Specify the level at which a scene change is detected as a value between
0 and 100 to indicate a new scene; a low value reflects a low
probability for the current frame to introduce a new scene, while a higher
value means the current frame is more likely to be one.
The default is @code{7}.

@item flags
Specify flags influencing the filter process.

Available value for @var{flags} is:

@table @option
@item scene_change_detect, scd
Enable scene change detection using the value of the option @var{scene}.
This flag is enabled by default.

The broadcast (ie non free) way would be to look at the Software Alchemist product.

I don't know how much you have to reprocess and what your budget is, but Snell now do an Alchemist On demand which might be suitable:


Andy Young

This e-mail (and any attachments) is confidential and may contain personal views which are not the views of the BBC unless specifically stated.
If you have received it in error, please delete it from your system.
Do not use, copy or disclose the information in any way nor act in reliance on it and notify the sender immediately.
Please note that the BBC monitors e-mails sent or received.
Further communication will signify your consent to this.


More information about the ffmpeg-user mailing list