[Libav-user] formats that support variable frame rate

John Stebbins stebbins at jetheaddev.com
Mon Jan 23 19:31:57 EET 2017

What I know about muxers is:

MP4,MOV - yes
MPG     - yes
AVI     - No, but there are hacks to use a very short "frame duration" (very high framerate) plus repeat frames to
simulate VFR in the wild
FLV     - ?
DV      - No
MKV     - Yes
OGG     - Codec specific. In the ogg spec "granule positions" (timestamps) are defined by the corresponding codec spec.
But in general, No.
RM      - ?
SWF     - ?
WEBM    - Yes

Encoders care about the framerate for the purposes of rate control.  I.e. to reach a specified bitrate or quality
metric, they need to factor in the framerate.  Some encoders do not have a rate control model that can accommodate
variable framerate (e.g. theora). So if you try to feed such an encoder variable framerate video, you will not get the
expected bitrate or quality output. h.264 does support variable frame rate and the encoder needs to be told what the
minimum allowed frame duration will be.  This information is recorded in the h.264 elementary stream along with a flag
indicating that the stream is variable framerate.

The 1/fps trick you mention is essentially the AVI hack I pointed out above although something larger than 1/fps (with
frame dropping where necessary) is probably a better choice.  Note that the OGG format also has a very efficient (1
byte) repeat frame that can be used in such cases.  Not all formats have an efficient way to represent repeat frames,
and this trick will work poorly on such formats.

On 01/22/2017 10:00 PM, YIRAN LI wrote:
> Hi guys,
> Could anyone help to sort out among following formats, which ones support variable frame rate so that video frames in
> the file can have variable duration? 
>   * MP4, MOV
>   * MPG
>   * AVI
>   * FLV
>   * DV
>   * MKV
>   * OGG
>   * RM
>   * SWF
>   * WEBM
> Is variable frame rate only a muxer thing so that I don't need to worry about encoder can't encode incoming frames at
> different intervals? If a muxer can't handle frames with variable duration then I must set a fps, and frame duration
> must be 1/fps?
> Thanks for help
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/libav-user

John      GnuPG fingerprint: D0EC B3DB C372 D1F1 0B01  83F0 49F1 D7B2 60D4 D0F7

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20170123/64957ea5/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20170123/64957ea5/attachment.sig>

More information about the Libav-user mailing list