How to customize H.264/H.265 parameters

2020-10-09 01:58:51

Among the millions of DVDFab users worldwide, there are quite a lot high-end users with solid knowledge on audio and video conversion, codecs, some of them are even of geek level. For that part of experienced users, DVDFab 12 offers them the freedom to freely customize the H.264 and H.265 specifications in the Ripper and Video Converter modules, so that they can make their unique conversions to meet their special demands. Check out below to see how to do that:

 

Step 1 — Open the Advanced Settings panel of the Ripper or Video Converter module.

 

 

Step 2 — At the Additional Parameters section, enter your detailed specifications. Be noted there is no need to repeat the specifications already set at the upper part of this window.

 

 

However, to those who’re not very familiar with audio and video conversion, it is not recommended to customize those specs mentioned above.

 

Supported H264 Command Line Parameters:

 

x264 core:161 r3018 db0d417
Syntax: x264 [options] -o outfile infile

Infile can be raw (in which case resolution is required),
  or YUV4MPEG (*.y4m),
  or Avisynth if compiled with support (yes).
  or libav* formats if compiled with lavf support (yes) or ffms support (no).
Outfile type is selected by filename:
 .264 -> Raw bytestream
 .mkv -> Matroska
 .flv -> Flash Video
 .mp4 -> MP4 if compiled with GPAC or L-SMASH support (lsmash)
Output bit depth: 8/10
.
Options:

  -h, --help                  List basic options
      --longhelp              List more options
      --fullhelp              List all options

Example usage:

      Constant quality mode:
            x264 --crf 24 -o

      Two-pass with a bitrate of 1000kbps:
            x264 --pass 1 --bitrate 1000 -o
            x264 --pass 2 --bitrate 1000 -o

      Lossless:
            x264 --qp 0 -o

      Maximum PSNR at the cost of speed and visual quality:
            x264 --preset placebo --tune psnr -o

      Constant bitrate at 1000kbps with a 2 second-buffer:
            x264 --vbv-bufsize 2000 --bitrate 1000 -o

Presets:

      --profile      Force the limits of an H.264 profile
                                  Overrides all settings.
                                  - baseline:
                                    --no-8x8dct --bframes 0 --no-cabac
                                    --cqm flat --weightp 0
                                    No interlaced.
                                    No lossless.
                                  - main:
                                    --no-8x8dct --cqm flat
                                    No lossless.
                                  - high:
                                    No lossless.
                                  - high10:
                                    No lossless.
                                    Support for bit depth 8-10.
                                  - high422:
                                    No lossless.
                                    Support for bit depth 8-10.
                                    Support for 4:2:0/4:2:2 chroma subsampling.
                                  - high444:
                                    Support for bit depth 8-10.
                                    Support for 4:2:0/4:2:2/4:4:4 chroma subsampling.
      --preset       Use a preset to select encoding settings [medium]
                                  Overridden by user settings.
                                  - ultrafast:
                                    --no-8x8dct --aq-mode 0 --b-adapt 0
                                    --bframes 0 --no-cabac --no-deblock
                                    --no-mbtree --me dia --no-mixed-refs
                                    --partitions none --rc-lookahead 0 --ref 1
                                    --scenecut 0 --subme 0 --trellis 0
                                    --no-weightb --weightp 0
                                  - superfast:
                                    --no-mbtree --me dia --no-mixed-refs
                                    --partitions i8x8,i4x4 --rc-lookahead 0
                                    --ref 1 --subme 1 --trellis 0 --weightp 1
                                  - veryfast:
                                    --no-mixed-refs --rc-lookahead 10
                                    --ref 1 --subme 2 --trellis 0 --weightp 1
                                  - faster:
                                    --no-mixed-refs --rc-lookahead 20
                                    --ref 2 --subme 4 --weightp 1
                                  - fast:
                                    --rc-lookahead 30 --ref 2 --subme 6
                                    --weightp 1
                                  - medium:
                                    Default settings apply.
                                  - slow:
                                    --direct auto --rc-lookahead 50 --ref 5
                                    --subme 8 --trellis 2
                                  - slower:
                                    --b-adapt 2 --direct auto --me umh
                                    --partitions all --rc-lookahead 60
                                    --ref 8 --subme 9 --trellis 2
                                  - veryslow:
                                    --b-adapt 2 --bframes 8 --direct auto
                                    --me umh --merange 24 --partitions all
                                    --ref 16 --subme 10 --trellis 2
                                    --rc-lookahead 60
                                  - placebo:
                                    --bframes 16 --b-adapt 2 --direct auto
                                    --slow-firstpass --no-fast-pskip
                                    --me tesa --merange 24 --partitions all
                                    --rc-lookahead 60 --ref 16 --subme 11
                                    --trellis 2
      --tune         Tune the settings for a particular type of source
                              or situation
                                  Overridden by user settings.
                                  Multiple tunings are separated by commas.
                                  Only one psy tuning can be used at a time.
                                  - film (psy tuning):
                                    --deblock -1:-1 --psy-rd :0.15
                                  - animation (psy tuning):
                                    --bframes {+2} --deblock 1:1
                                    --psy-rd 0.4: --aq-strength 0.6
                                    --ref {Double if >1 else 1}
                                  - grain (psy tuning):
                                    --aq-strength 0.5 --no-dct-decimate
                                    --deadzone-inter 6 --deadzone-intra 6
                                    --deblock -2:-2 --ipratio 1.1
                                    --pbratio 1.1 --psy-rd :0.25
                                    --qcomp 0.8
                                  - stillimage (psy tuning):
                                    --aq-strength 1.2 --deblock -3:-3
                                    --psy-rd 2.0:0.7
                                  - psnr (psy tuning):
                                    --aq-mode 0 --no-psy
                                  - ssim (psy tuning):
                                    --aq-mode 2 --no-psy
                                  - fastdecode:
                                    --no-cabac --no-deblock --no-weightb
                                    --weightp 0
                                  - zerolatency:
                                    --bframes 0 --force-cfr --no-mbtree
                                    --sync-lookahead 0 --sliced-threads
                                    --rc-lookahead 0
      --slow-firstpass        Don't force these faster settings with --pass 1:
                                  --no-8x8dct --me dia --partitions none
                                  --ref 1 --subme {2 if >2 else unchanged}
                                  --trellis 0 --fast-pskip

Frame-type options:

  -I, --keyint Maximum GOP size [250]
  -i, --min-keyint  Minimum GOP size [auto]
      --no-scenecut           Disable adaptive I-frame decision
      --scenecut    How aggressively to insert extra I-frames [40]
      --intra-refresh         Use Periodic Intra Refresh instead of IDR frames
  -b, --bframes     Number of B-frames between I and P [3]
      --b-adapt     Adaptive B-frame decision method [1]
                                  Higher values may lower threading efficiency.
                                  - 0: Disabled
                                  - 1: Fast
                                  - 2: Optimal (slow with high --bframes)
      --b-bias      Influences how often B-frames are used [0]
      --b-pyramid    Keep some B-frames as references [normal]
                                  - none: Disabled
                                  - strict: Strictly hierarchical pyramid
                                  - normal: Non-strict (not Blu-ray compatible)
      --open-gop              Use recovery points to close GOPs
                              Only available with b-frames
      --no-cabac              Disable CABAC
  -r, --ref         Number of reference frames [3]
      --no-deblock            Disable loop filter
  -f, --deblock  Loop filter parameters [0:0]
      --slices      Number of slices per frame; forces rectangular
                              slices and is overridden by other slicing options
      --slices-max  Absolute maximum slices per frame; overrides
                              slice-max-size/slice-max-mbs when necessary
      --slice-max-size Limit the size of each slice in bytes
      --slice-max-mbs Limit the size of each slice in macroblocks (max)
      --slice-min-mbs Limit the size of each slice in macroblocks (min)
      --tff                   Enable interlaced mode (top field first)
      --bff                   Enable interlaced mode (bottom field first)
      --constrained-intra     Enable constrained intra prediction.
      --pulldown     Use soft pulldown to change frame rate
                                  - none, 22, 32, 64, double, triple, euro (requires cfr input)
      --fake-interlaced       Flag stream as interlaced but encode progressive.
                              Makes it possible to encode 25p and 30p Blu-Ray
                              streams. Ignored in interlaced mode.
      --frame-packing For stereoscopic videos define frame arrangement
                                  - 0: checkerboard - pixels are alternatively from L and R
                                  - 1: column alternation - L and R are interlaced by column
                                  - 2: row alternation - L and R are interlaced by row
                                  - 3: side by side - L is on the left, R on the right
                                  - 4: top bottom - L is on top, R on bottom
                                  - 5: frame alternation - one view per frame
                                  - 6: mono - 2D frame without any frame packing
                                  - 7: tile format - L is on top-left, R split across

Ratecontrol:

  -q, --qp          Force constant QP (0-81, 0=lossless)
  -B, --bitrate     Set bitrate (kbit/s)
      --crf           Quality-based VBR (-12-51) [23.0]
      --rc-lookahead Number of frames for frametype lookahead [40]
      --vbv-maxrate Max local bitrate (kbit/s) [0]
      --vbv-bufsize Set size of the VBV buffer (kbit) [0]
      --vbv-init      Initial VBV buffer occupancy [0.9]
      --crf-max       With CRF+VBV, limit RF to this value
                                  May cause VBV underflows!
      --qpmin       Set min QP [0]
      --qpmax       Set max QP [81]
      --qpstep      Set max QP step [4]
      --ratetol       Tolerance of ABR ratecontrol and VBV [1.0]
      --ipratio       QP factor between I and P [1.40]
      --pbratio       QP factor between P and B [1.30]
      --chroma-qp-offset  QP difference between chroma and luma [0]
      --aq-mode     AQ method [1]
                                  - 0: Disabled
                                  - 1: Variance AQ (complexity mask)
                                  - 2: Auto-variance AQ
                                  - 3: Auto-variance AQ with bias to dark scenes
      --aq-strength   Reduces blocking and blurring in flat and
                              textured areas. [1.0]

  -p, --pass        Enable multipass ratecontrol
                                  - 1: First pass, creates stats file
                                  - 2: Last pass, does not overwrite stats file
                                  - 3: Nth pass, overwrites stats file
      --stats        Filename for 2 pass stats ["x264_2pass.log"]
      --no-mbtree             Disable mb-tree ratecontrol.
      --qcomp         QP curve compression [0.60]
      --cplxblur      Reduce fluctuations in QP (before curve compression) [20.0]
      --qblur         Reduce fluctuations in QP (after curve compression) [0.5]
      --zones //...  Tweak the bitrate of regions of the video
                              Each zone is of the form
                                  ,,
                                  whereis either
                                      q= (force QP)
                                  or  b= (bitrate multiplier)
      --qpfile       Force frametypes and QPs for some or all frames
                              Format of each line: framenumber frametype QP
                              QP is optional (none lets x264 choose). Frametypes: I,i,K,P,B,b.
                                  K= depending on open-gop setting
                              QPs are restricted by qpmin/qpmax.

Analysis:

  -A, --partitions   Partitions to consider ["p8x8,b8x8,i8x8,i4x4"]
                                  - p8x8, p4x4, b8x8, i8x8, i4x4, none, all
                                  (p4x4 requires p8x8. i8x8 requires --8x8dct.)
      --direct       Direct MV prediction mode ["spatial"]
                                  - none, spatial, temporal, auto
      --no-weightb            Disable weighted prediction for B-frames
      --weightp     Weighted prediction for P-frames [2]
                                  - 0: Disabled
                                  - 1: Weighted refs
                                  - 2: Weighted refs + Duplicates
      --me           Integer pixel motion estimation method ["hex"]
                                  - dia: diamond search, radius 1 (fast)
                                  - hex: hexagonal search, radius 2
                                  - umh: uneven multi-hexagon search
                                  - esa: exhaustive search
                                  - tesa: hadamard exhaustive search (slow)
      --merange     Maximum motion vector search range [16]
      --mvrange     Maximum motion vector length [-1 (auto)]
      --mvrange-thread  Minimum buffer between threads [-1 (auto)]
  -m, --subme       Subpixel motion estimation and mode decision [7]
                                  - 0: fullpel only (not recommended)
                                  - 1: SAD mode decision, one qpel iteration
                                  - 2: SATD mode decision
                                  - 3-5: Progressively more qpel
                                  - 6: RD mode decision for I/P-frames
                                  - 7: RD mode decision for all frames
                                  - 8: RD refinement for I/P-frames
                                  - 9: RD refinement for all frames
                                  - 10: QP-RD - requires trellis=2, aq-mode>0
                                  - 11: Full RD: disable all early terminations
      --psy-rd  Strength of psychovisual optimization ["1.0:0.0"]
                                  #1: RD (requires subme>=6)
                                  #2: Trellis (requires trellis, experimental)
      --no-psy                Disable all visual optimizations that worsen
                              both PSNR and SSIM.
      --no-mixed-refs         Don't decide references on a per partition basis
      --no-chroma-me          Ignore chroma in motion estimation
      --no-8x8dct             Disable adaptive spatial transform size
  -t, --trellis     Trellis RD quantization. [1]
                                  - 0: disabled
                                  - 1: enabled only on the final encode of a MB
                                  - 2: enabled on all mode decisions
      --no-fast-pskip         Disables early SKIP detection on P-frames
      --no-dct-decimate       Disables coefficient thresholding on P-frames
      --nr          Noise reduction [0]

      --deadzone-inter  Set the size of the inter luma quantization deadzone [21]
      --deadzone-intra  Set the size of the intra luma quantization deadzone [11]
                                  Deadzones should be in the range 0 - 32.
      --cqm          Preset quant matrices ["flat"]
                                  - flat, jvt
      --cqmfile      Read custom quant matrices from a JM-compatible file
                                  Overrides any other --cqm* options.
      --cqm4           Set all 4x4 quant matrices
                                  Takes a comma-separated list of 16 integers.
      --cqm8           Set all 8x8 quant matrices
                                  Takes a comma-separated list of 64 integers.
      --cqm4i, --cqm4p, --cqm8i, --cqm8p
                              Set both luma and chroma quant matrices
      --cqm4iy, --cqm4ic, --cqm4py, --cqm4pc
                              Set individual quant matrices

Video Usability Info (Annex E):
The VUI settings are not used by the encoder but are merely suggestions to
the playback equipment. See doc/vui.txt for details. Use at your own risk.

      --overscan     Specify crop overscan setting ["undef"]
                                  - undef, show, crop
      --videoformat  Specify video format ["undef"]
                                  - component, pal, ntsc, secam, mac, undef
      --range        Specify color range ["auto"]
                                  - auto, tv, pc
      --colorprim    Specify color primaries ["undef"]
                                  - undef, bt709, bt470m, bt470bg, smpte170m,
                                    smpte240m, film, bt2020, smpte428,
                                    smpte431, smpte432
      --transfer     Specify transfer characteristics ["undef"]
                                  - undef, bt709, bt470m, bt470bg, smpte170m,
                                    smpte240m, linear, log100, log316,
                                    iec61966-2-4, bt1361e, iec61966-2-1,
                                    bt2020-10, bt2020-12, smpte2084, smpte428,
                                    arib-std-b67
      --colormatrix  Specify color matrix setting ["???"]
                                  - undef, bt709, fcc, bt470bg, smpte170m,
                                    smpte240m, GBR, YCgCo, bt2020nc, bt2020c,
                                    smpte2085, chroma-derived-nc,
                                    chroma-derived-c, ICtCp
      --chromaloc   Specify chroma sample location (0 to 5) [0]
      --alternative-transfer Specify an alternative transfer
                              characteristics ["undef"]
                                  - same values as --transfer
      --nal-hrd      Signal HRD information (requires vbv-bufsize)
                                  - none, vbr, cbr (cbr not allowed in .mp4)
      --filler                Force hard-CBR and generate filler (implied by
                              --nal-hrd cbr)
      --pic-struct            Force pic_struct in Picture Timing SEI
      --crop-rect    Add 'left,top,right,bottom' to the bitstream-level
                              cropping rectangle

Input/Output:

  -o, --output       Specify output file
      --muxer        Specify output container format ["auto"]
                                  - auto, raw, mkv, flv, mp4
      --demuxer      Specify input container format ["auto"]
                                  - auto, raw, y4m, avs, lavf
      --input-fmt    Specify input file format (requires lavf support)
      --input-csp    Specify input colorspace format for raw input
                              - valid csps for `raw' demuxer:
                                i400, i420, yv12, nv12, nv21, i422, yv16, nv16, 
                                yuyv, uyvy, i444, yv24, bgr, bgra, rgb
                              - valid csps for `lavf' demuxer:
                                yuv420p, yuyv422, rgb24, bgr24, yuv422p, 
                                yuv444p, yuv410p, yuv411p, gray, monow, monob, 
                                pal8, yuvj420p, yuvj422p, yuvj444p, uyvy422, 
                                uyyvyy411, bgr8, bgr4, bgr4_byte, rgb8, rgb4, 
                                rgb4_byte, nv12, nv21, argb, rgba, abgr, bgra, 
                                gray16be, gray16le, yuv440p, yuvj440p, 
                                yuva420p, rgb48be, rgb48le, rgb565be, rgb565le, 
                                rgb555be, rgb555le, bgr565be, bgr565le, 
                                bgr555be, bgr555le, vaapi_moco, vaapi_idct, 
                                vaapi_vld, yuv420p16le, yuv420p16be, 
                                yuv422p16le, yuv422p16be, yuv444p16le, 
                                yuv444p16be, dxva2_vld, rgb444le, rgb444be, 
                                bgr444le, bgr444be, ya8, bgr48be, bgr48le, 
                                yuv420p9be, yuv420p9le, yuv420p10be, 
                                yuv420p10le, yuv422p10be, yuv422p10le, 
                                yuv444p9be, yuv444p9le, yuv444p10be, 
                                yuv444p10le, yuv422p9be, yuv422p9le, gbrp, 
                                gbrp9be, gbrp9le, gbrp10be, gbrp10le, gbrp16be, 
                                gbrp16le, yuva422p, yuva444p, yuva420p9be, 
                                yuva420p9le, yuva422p9be, yuva422p9le, 
                                yuva444p9be, yuva444p9le, yuva420p10be, 
                                yuva420p10le, yuva422p10be, yuva422p10le, 
                                yuva444p10be, yuva444p10le, yuva420p16be, 
                                yuva420p16le, yuva422p16be, yuva422p16le, 
                                yuva444p16be, yuva444p16le, vdpau, xyz12le, 
                                xyz12be, nv16, nv20le, nv20be, rgba64be, 
                                rgba64le, bgra64be, bgra64le, yvyu422, ya16be, 
                                ya16le, gbrap, gbrap16be, gbrap16le, qsv, mmal, 
                                d3d11va_vld, cuda, 0rgb, rgb0, 0bgr, bgr0, 
                                yuv420p12be, yuv420p12le, yuv420p14be, 
                                yuv420p14le, yuv422p12be, yuv422p12le, 
                                yuv422p14be, yuv422p14le, yuv444p12be, 
                                yuv444p12le, yuv444p14be, yuv444p14le, 
                                gbrp12be, gbrp12le, gbrp14be, gbrp14le, 
                                yuvj411p, bayer_bggr8, bayer_rggb8, 
                                bayer_gbrg8, bayer_grbg8, bayer_bggr16le, 
                                bayer_bggr16be, bayer_rggb16le, bayer_rggb16be, 
                                bayer_gbrg16le, bayer_gbrg16be, bayer_grbg16le, 
                                bayer_grbg16be, xvmc, yuv440p10le, yuv440p10be, 
                                yuv440p12le, yuv440p12be, ayuv64le, ayuv64be, 
                                videotoolbox_vld, p010le, p010be, gbrap12be, 
                                gbrap12le, gbrap10be, gbrap10le, mediacodec, 
                                gray12be, gray12le, gray10be, gray10le, p016le, 
                                p016be, d3d11, gray9be, gray9le, gbrpf32be, 
                                gbrpf32le, gbrapf32be, gbrapf32le, drm_prime, 
                                opencl, gray14be, gray14le, grayf32be, 
                                grayf32le, yuva422p12be, yuva422p12le, 
                                yuva444p12be, yuva444p12le, nv24, nv42
      --output-csp   Specify output colorspace ["i420"]
                                  - i400, i420, i422, i444, rgb
      --input-depth Specify input bit depth for raw input
      --output-depth Specify output bit depth
      --input-range  Specify input color range ["auto"]
                                  - auto, tv, pc
      --input-res   Specify input resolution (width x height)
      --index        Filename for input index file
      --sar width:height      Specify Sample Aspect Ratio
      --fps  Specify framerate
      --seek        First frame to encode
      --frames      Maximum number of frames to encode
      --level        Specify level (as defined by Annex A)
      --bluray-compat         Enable compatibility hacks for Blu-ray support
      --avcintra-class Use compatibility hacks for AVC-Intra class
                                  - 50, 100, 200
      --avcintra-flavor AVC-Intra flavor ["panasonic"]
                                  - panasonic, sony
      --stitchable            Don't optimize headers based on video content
                              Ensures ability to recombine a segmented encode

  -v, --verbose               Print stats for each frame
      --no-progress           Don't show the progress indicator while encoding
      --quiet                 Quiet Mode
      --log-level    Specify the maximum level of logging ["info"]
                                  - none, error, warning, info, debug
      --psnr                  Enable PSNR computation
      --ssim                  Enable SSIM computation
      --threads     Force a specific number of threads
      --lookahead-threads Force a specific number of lookahead threads
      --sliced-threads        Low-latency but lower-efficiency threading
      --thread-input          Run Avisynth in its own thread
      --sync-lookahead Number of buffer frames for threaded lookahead
      --non-deterministic     Slightly improve quality of SMP, at the cost of repeatability
      --cpu-independent       Ensure exact reproducibility across different cpus,
                                  as opposed to letting them select different algorithms
      --asm         Override CPU detection
      --no-asm                Disable all CPU optimizations
      --opencl                Enable use of OpenCL
      --opencl-clbin Specify path of compiled OpenCL kernel cache
      --opencl-device Specify OpenCL device ordinal
      --dump-yuv     Save reconstructed frames
      --sps-id      Set SPS and PPS id numbers [0]
      --aud                   Use access unit delimiters
      --force-cfr             Force constant framerate timestamp generation
      --tcfile-in    Force timestamp generation with timecode file
      --tcfile-out   Output timecode v2 file from input timestamps
      --timebase    Specify timebase numerator and denominator
                     Specify timebase numerator for input timecode file
                              or specify timebase denominator for other input
      --dts-compress          Eliminate initial delay with container DTS hack

Filtering:

      --vf, --video-filter //... Apply video filtering to the input file

      Filter options may be specified in := format.

      Available filters:
      crop:left,top,right,bottom
            removes pixels from the edges of the frame
      resize:[width,height][,sar][,fittobox][,csp][,method]
            resizes frames based on the given criteria:
            - resolution only: resizes and adapts sar to avoid stretching
            - sar only: sets the sar and resizes to avoid stretching
            - resolution and sar: resizes to given resolution and sets the sar
            - fittobox: resizes the video based on the desired constraints
               - width, height, both
            - fittobox and sar: same as above except with specified sar
            - csp: convert to the given csp. syntax: [name][:depth]
               - valid csp names [keep current]: i400, i420, yv12, nv12, nv21, i422, yv16, nv16, yuyv, uyvy, i444, yv24, bgr, bgra, rgb
               - depth: 8 or 16 bits per pixel [keep current]
            note: not all depths are supported by all csps.
            - method: use resizer method ["bicubic"]
               - fastbilinear, bilinear, bicubic, experimental, point,
               - area, bicublin, gauss, sinc, lanczos, spline
      select_every:step,offset1[,...]
            apply a selection pattern to input frames
            step: the number of frames in the pattern
            offsets: the offset into the step to select a frame
            see: http://avisynth.nl/index.php/Select#SelectEvery

 

Supported H265 Command Line Parameters: 

 


Syntax: x265 [options] infile [-o] outfile
    infile can be YUV or Y4M
    outfile is raw HEVC bitstream

Executable Options:
-h/--help                        Show this help text and exit
-V/--version                     Show version info and exit

Output Options:
-o/--output           Bitstream output file name
-D/--output-depth 8|10|12        Output bit depth (also internal bit depth). Default 8
   --log-level          Logging level: none error warning info debug full. Default full
   --no-progress                 Disable CLI progress reports
   --csv              Comma separated log file, if csv-log-level > 0 frame level statistics, else one line per run
   --csv-log-level     Level of csv logging, if csv-log-level > 0 frame level statistics, else one line per run: 0-2

Input Options:
   --input            Raw YUV or Y4M input file name. `-` for stdin
   --y4m                         Force parsing of input stream as YUV4MPEG2 regardless of file extension
   --fps        Source frame rate (float or num/denom), auto-detected if Y4M
   --input-res WxH               Source picture size [w x h], auto-detected if Y4M
   --input-depth       Bit-depth of input file. Default 8
   --input-csp          Chroma subsampling, auto-detected if Y4M
                                 0 - i400 (4:0:0 monochrome)
                                 1 - i420 (4:2:0 default)
                                 2 - i422 (4:2:2)
                                 3 - i444 (4:4:4)
-f/--frames            Maximum number of frames to encode. Default all
   --seek              First frame to encode
   --[no-]interlace    Indicate input pictures are interlace fields in temporal order. Default progressive
   --dither                      Enable dither if downscaling to 8 bit pixels. Default disabled

Quality reporting metrics:
   --[no-]ssim                   Enable reporting SSIM metric scores. Default disabled
   --[no-]psnr                   Enable reporting PSNR metric scores. Default disabled

Profile, Level, Tier:
-P/--profile            Enforce an encode profile: main, main10, mainstillpicture
   --level-idc   Force a minimum required decoder level (as '5.0' or '50')
   --[no-]high-tier              If a decoder level is specified, this modifier selects High tier of that level
   --uhd-bd                      Enable UHD Bluray compatibility support
   --[no-]allow-non-conformance  Allow the encoder to generate profile NONE bitstreams. Default disabled

Threading, performance:
   --pools         Comma separated thread count per thread pool (pool per NUMA node)
                                 '-' implies no threads on node, '+' implies one thread per core on node
-F/--frame-threads     Number of concurrently encoded frames. 0: auto-determined by core count
   --[no-]wpp                    Enable Wavefront Parallel Processing. Default enabled
   --[no-]slices       Enable Multiple Slices feature. Default 1
   --[no-]pmode                  Parallel mode analysis. Default disabled
   --[no-]pme                    Parallel motion estimation. Default disabled
   --[no-]asm  Override CPU detection. Default: auto

Presets:
-p/--preset         &nb

① Convert videos from one format to another for compatible devices
② Extract the audio tracks from videos and output as audio files
③ Support all the popular audio & video formats like MP3, MP4, MKV, etc.
④ Support to edit the videos like cropping, trimming, and more
⑤ Support GPU hardware acceleration to convert much faster