Skip to content
Snippets Groups Projects
  • Sybren A. Stüvel's avatar
    a7e74791
    FFmpeg interface improvements · a7e74791
    Sybren A. Stüvel authored
    This patch changes a couple of things in the video output encoding.
    
    {F362527}
    
    - Clearer separation between container and codec. No more "format", as this is
      too ambiguous. As a result, codecs were removed from the container list.
    - Added FFmpeg speed presets, so the user can choosen from the range "Very
      slow" to "Ultra fast". By default no preset is used.
    - Added Constant Rate Factor (CRF) mode, which allows changing the bit-rate
      depending on the desired quality and the input. This generally produces the
      best quality videos, at the expense of not knowing the exact bit-rate and
      file size.
    - Added optional maximum of non-B-frames between B-frames (`max_b_frames`).
    - Presets were adjusted for these changes, and new presets added. One of the
      new presets is [recommended](https://trac.ffmpeg.org/wiki/Encode/VFX#H.264)
      for reviewing videos, as it allows players to scrub through it easily. Might
      be nice in weeklies. This preset also requires control over the
      `max_b_frames` setting.
    
    GUI-only changes:
    - Renamed "MPEG" in the output file format menu with "FFmpeg", as this is more
      accurate. After all, FFmpeg is used when this option is chosen, which can
      also output non-MPEG files.
    - Certain parts of the GUI are disabled when not in use:
        - bit rate options are not used when a constant rate factor is given.
        - audio bitrate & volume are not used when no audio is exported.
    
    Note that I did not touch `BKE_ffmpeg_preset_set()`. There are currently two
    preset systems for FFmpeg (`BKE_ffmpeg_preset_set()` and the Python preset
    system). Before we do more work on `BKE_ffmpeg_preset_set()`, I think it's a
    good idea to determine whether we want to keep it at all.
    
    After this patch has been accepted, I'd be happy to go through the code and
    remove any then-obsolete bits, such as the handling of "XVID" as a container
    format.
    
    Reviewers: sergey, mont29, brecht
    
    Subscribers: mpan3, Blendify, brecht, fsiddi
    
    Tags: #bf_blender
    
    Differential Revision: https://developer.blender.org/D2242
    a7e74791
    History
    FFmpeg interface improvements
    Sybren A. Stüvel authored
    This patch changes a couple of things in the video output encoding.
    
    {F362527}
    
    - Clearer separation between container and codec. No more "format", as this is
      too ambiguous. As a result, codecs were removed from the container list.
    - Added FFmpeg speed presets, so the user can choosen from the range "Very
      slow" to "Ultra fast". By default no preset is used.
    - Added Constant Rate Factor (CRF) mode, which allows changing the bit-rate
      depending on the desired quality and the input. This generally produces the
      best quality videos, at the expense of not knowing the exact bit-rate and
      file size.
    - Added optional maximum of non-B-frames between B-frames (`max_b_frames`).
    - Presets were adjusted for these changes, and new presets added. One of the
      new presets is [recommended](https://trac.ffmpeg.org/wiki/Encode/VFX#H.264)
      for reviewing videos, as it allows players to scrub through it easily. Might
      be nice in weeklies. This preset also requires control over the
      `max_b_frames` setting.
    
    GUI-only changes:
    - Renamed "MPEG" in the output file format menu with "FFmpeg", as this is more
      accurate. After all, FFmpeg is used when this option is chosen, which can
      also output non-MPEG files.
    - Certain parts of the GUI are disabled when not in use:
        - bit rate options are not used when a constant rate factor is given.
        - audio bitrate & volume are not used when no audio is exported.
    
    Note that I did not touch `BKE_ffmpeg_preset_set()`. There are currently two
    preset systems for FFmpeg (`BKE_ffmpeg_preset_set()` and the Python preset
    system). Before we do more work on `BKE_ffmpeg_preset_set()`, I think it's a
    good idea to determine whether we want to keep it at all.
    
    After this patch has been accepted, I'd be happy to go through the code and
    remove any then-obsolete bits, such as the handling of "XVID" as a container
    format.
    
    Reviewers: sergey, mont29, brecht
    
    Subscribers: mpan3, Blendify, brecht, fsiddi
    
    Tags: #bf_blender
    
    Differential Revision: https://developer.blender.org/D2242