This section is intended for users who want to convert the framerate of the
input file to a different output framerate. It also handles the case
when the input file is of variable framerate.
: Frames-per-second / framerate. The number of frames which will be displayed during 1 second.
frc : Frame rate code. This is directly related to fps. When dealing with fractional framerates, it is more convenient and accurate to give transcode a code. The most commonly used codes are
1 : 23.976 (24000/1001.0)
3 : 25
4 : 29.970 (30000/1001.0)
Its worth noting that none of these filters intent to change the
runtime of the movie; if one -- for example -- goes from 29.9 to
23.9 the movie will not be shorter or anything, every frame will be
displayed for a longer time period. Because there will be fewer
frames in the resulting movie and the display time of each frame is
longer, the movie will have the same running.
For convenience, a table relating fps and display time
frc | fps | Display time (sec) | Milliseconds
1 | 23.97 | 1 / (24000/1001) | 41.71
3 | 25.00 | 1 / (25000/1000) | 40.00
4 | 29.97 | 1 / (30000/1001) | 33.37
When converting from fps1 to fps2 it must be clear that the audio
stream will not be touched at all. Since the resulting movie has the
same display length, the audio in the new file must be equal to the
audio in the old file. You currently cannot use transcode to slow
down or speed up a movie.
Meaningful fields of application
Changing the framerate of a movie can be neccessary to improve the
quality, shrink the size or to prepare a movie for a specific output
- A lot of digital (photo) cameras have the ability to record -- more or less -- small video clips. These clips are often not suiteable for watching on TV because of the framerate. My device records MJPG clips at 20 fps. To convert them to (S)VCD, the framerate needs to get converted to 29.9 (NTSC) or 25 (PAL). Note that converting the framerate does not make the clip smoother, it merely preserves the jerkyness it already had.
- Telecine removal. Telecine is a process to prepare films (movies) shot at 24 fps for (NTSC) television at 29.9 fps. The opposite is called inverse telecine or ivtc. For a really well done in-depth explanation about telecine see the file EADME.Inverse.Telecine.txt by Thanassis Tsiodras in the /docs/ directory of transcode. By doing ivtc, the movie will look less jerky and therefore smoother.
- Preparing NTSC or film sources for PAL or the other way round.
There are several ways (as always) in transcode to do framerate
conversions (in lexicographical order)
Filter(s) | Smartness | Versatility | Intented Use
29to23 | none | little | 29.9 -> 23.9
32drop | high | little | 29.9 -> 23.9
ivtc+decimate | very high | none | 29.9 -> 23.9
modfps | fair | high | any -> any
fps | none | high | any -> any
tc_video | none | little | 23.9 -> 29.9
- The filter takes no options. It basically skipps every 5th frame. It interpolates the other 4 frames out of the 5 it recieves. Since it skipps every 5th frame it can also be used for converting 25 fps to 20 fps.
- The filter takes no options. It does a simple inverse telecine. Its algorithm works best when used in RGB mode. It tries to find interlaced frames and adjusts its pattern.
- These two filters working hand in hand. The first filter (ivtc) inverts the telecine and the second one (decimate) drops 1 frame out of 4 so that the output will be at 23.9 fps. These two filters are really smart and do their job very well. The ivtc filter can deal with a changing telecine pattern and adjusts its algorithm to fit it. The decimate filter searches for two similar frames out of five and drops one of which look similar.
- This filter tries to reach the desired framerate by cloning and dropping of frames. In its default mode it will buffer the last 5 frames, and drop the frame with the least difference with the frame that follows it, or clone the frame with the most difference. Additionally, it can blend frames or mingle frame fields when cloning. Additionally it has a fast mode, but results look poor.
- This filter is basically the same as the fast mode of `modfps' its just doing its work a slightly different way.
- This filter increases the framerate by doing telecine. It takes no options. It makes 5 frames out of 4 by clever dealing with the fields ( == "lines") of a frame.
Framerate related transcode options
Transcode has two options dealing with framerates, `-f'and
`--export_fps'. Both options take one to two arguments. The first
argument is the framerate as a floating point number, the second
argument is the frameratecode. The frc always overwrites the
supplied fps value, so one can write `-f 0,1 ... --export_fps 0,4'.
Transcode tries to do the right thing with these options, the
following table shows the interdependencies. Import is `-f' and
Export is `--export_fps'
Import | Export | Result
omitted | omitted | import will be probed, export set to import
given | omitted | export set to import
omitted | given | import will be probed, export used as given
given | given | Both will used as given
The audio is always read at the export rate.
There is another option related to framerates which is --export_frc.
This option is only there because of backward-compatibility. It does
the same like the second argument to --export_fps.
Variable Framerate Input
Some video sources are not of constant framerate. This is mostly
true for Anime and some DVD Releases of TV series. Use this command
line (XXX: Write much more here :)
transcode -i vobs/ \
-x vob,vob \
-f 0,4 \
--export_frc 1 \
-J ivtc \
-J decimate \
-B 3,9,16 \
--print_status 10 \
-J 32detect=verbose=1:force_mode=5:chromathres=2:chromadi=9 \
-y xvid \
(C) 2003 (v0.1) Tilmann Bitterberg <transcode at tibit.org>