X264(1)

NAME
x264 - fast h264 encoder

DESCRIPTION
x264 core:164 r3108 31e19f9 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 (yes).

  Outfile type is selected by filename:

    .264 -> Raw bytestream .mkv -> Matroska .flv -> Flash Video .mp4 -> MP4 if compiled with GPAC or L-SMASH support (no)

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 <output> <input>

    Two-pass with a bitrate of 1000kbps:

    x264 --pass 1 --bitrate 1000 -o <output> <input> x264 --pass 2 --bitrate 1000 -o <output> <input>

    Lossless:

    x264 --qp 0 -o <output> <input>

    Maximum PSNR at the cost of speed and visual quality:

    x264 --preset placebo --tune psnr -o <output> <input>

    Constant bitrate at 1000kbps with a 2 second-buffer:

    x264 --vbv-bufsize 2000 --bitrate 1000 -o <output> <input>

Presets:

--profile <string>
    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 <string>
    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 <string>
    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 <unset>:0.15
    - animation (psy tuning):

--bframes {+2} --deblock 1:1
    --psy-rd 0.4:<unset> --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 <unset>: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 <integer or "infinite"> Maximum GOP size [250]

-i, --min-keyint <integer>
    Minimum GOP size [auto]

--no-scenecut
    Disable adaptive I-frame decision

--scenecut <integer>
    How aggressively to insert extra I-frames [40]

--intra-refresh
    Use Periodic Intra Refresh instead of IDR frames

-b, --bframes <integer>
    Number of B-frames between I and P [3]

--b-adapt <integer>
    Adaptive B-frame decision method [1] Higher values may lower threading efficiency. - 0: Disabled - 1: Fast - 2: Optimal (slow with high --bframes)

--b-bias <integer>
    Influences how often B-frames are used [0]

--b-pyramid <string>
    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 <integer>
    Number of reference frames [3]

--no-deblock
    Disable loop filter

-f, --deblock <alpha:beta>
    Loop filter parameters [0:0]

--slices <integer>
    Number of slices per frame; forces rectangular slices and is overridden by other slicing options

--slices-max <integer>
    Absolute maximum slices per frame; overrides slice-max-size/slice-max-mbs when necessary

--slice-max-size <integer> Limit the size of each slice in bytes

--slice-max-mbs <integer> Limit the size of each slice in macroblocks (max)

--slice-min-mbs <integer> 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 <string>
    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 <integer> 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 <integer>
    Force constant QP (0-81, 0=lossless)

-B, --bitrate <integer>
    Set bitrate (kbit/s)

--crf <float>
    Quality-based VBR (-12-51) [23.0]

--rc-lookahead <integer> Number of frames for frametype lookahead [40]

--vbv-maxrate <integer> Max local bitrate (kbit/s) [0]

--vbv-bufsize <integer> Set size of the VBV buffer (kbit) [0]

--vbv-init <float>
    Initial VBV buffer occupancy [0.9]

--crf-max <float>
    With CRF+VBV, limit RF to this value May cause VBV underflows!

--qpmin <integer>
    Set min QP [0]

--qpmax <integer>
    Set max QP [81]

--qpstep <integer>
    Set max QP step [4]

--ratetol <float>
    Tolerance of ABR ratecontrol and VBV [1.0]

--ipratio <float>
    QP factor between I and P [1.40]

--pbratio <float>
    QP factor between P and B [1.30]

--chroma-qp-offset <integer>
    QP difference between chroma and luma [0]

--aq-mode <integer>
    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 <float>
    Reduces blocking and blurring in flat and textured areas. [1.0]

-p, --pass <integer>
    Enable multipass ratecontrol - 1: First pass, creates stats file - 2: Last pass, does not overwrite stats file - 3: Nth pass, overwrites stats file

--stats <string>
    Filename for 2 pass stats ["x264_2pass.log"]

--no-mbtree
    Disable mb-tree ratecontrol.

--qcomp <float>
    QP curve compression [0.60]

--cplxblur <float>
    Reduce fluctuations in QP (before curve compression) [20.0]

--qblur <float>
    Reduce fluctuations in QP (after curve compression) [0.5]

--zones <zone0>/<zone1>/...
    Tweak the bitrate of regions of the video Each zone is of the form

<start frame>,<end frame>,<option>
    where <option> is either

q=<integer> (force QP)
    or b=<float> (bitrate multiplier)

--qpfile <string>
    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=<I or i> depending on open-gop setting
    QPs are restricted by qpmin/qpmax.

Analysis:

-A, --partitions <string>
    Partitions to consider ["p8x8,b8x8,i8x8,i4x4"] - p8x8, p4x4, b8x8, i8x8, i4x4, none, all (p4x4 requires p8x8. i8x8 requires --8x8dct.)

--direct <string>
    Direct MV prediction mode ["spatial"] - none, spatial, temporal, auto

--no-weightb
    Disable weighted prediction for B-frames

--weightp <integer>
    Weighted prediction for P-frames [2] - 0: Disabled - 1: Weighted refs - 2: Weighted refs + Duplicates

--me <string>
    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 <integer>
    Maximum motion vector search range [16]

--mvrange <integer>
    Maximum motion vector length [-1 (auto)]

--mvrange-thread <int>
    Minimum buffer between threads [-1 (auto)]

-m, --subme <integer>
    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 <float:float>
    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 <integer>
    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 <integer>
    Noise reduction [0]

--deadzone-inter <int>
    Set the size of the inter luma quantization deadzone [21]

--deadzone-intra <int>
    Set the size of the intra luma quantization deadzone [11] Deadzones should be in the range 0 - 32.

--cqm <string>
    Preset quant matrices ["flat"] - flat, jvt

--cqmfile <string>
    Read custom quant matrices from a JM-compatible file Overrides any other --cqm* options.

--cqm4 <list>
    Set all 4x4 quant matrices Takes a comma-separated list of 16 integers.

--cqm8 <list>
    Set all 8x8 quant matrices Takes a comma-separated list of 64 integers.

--cqm4i, --cqm4p, --cqm8i, --cqm8p <list>
    Set both luma and chroma quant matrices

--cqm4iy, --cqm4ic, --cqm4py, --cqm4pc <list>
    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 <string>
    Specify crop overscan setting ["undef"] - undef, show, crop

--videoformat <string>
    Specify video format ["undef"] - component, pal, ntsc, secam, mac, undef

--range <string>
    Specify color range ["auto"] - auto, tv, pc

--colorprim <string>
    Specify color primaries ["undef"] - undef, bt709, bt470m, bt470bg, smpte170m,

smpte240m, film, bt2020, smpte428,
    smpte431, smpte432

--transfer <string>
    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 <string>
    Specify color matrix setting ["???"] - undef, bt709, fcc, bt470bg, smpte170m,

smpte240m, GBR, YCgCo, bt2020nc, bt2020c,
    smpte2085, chroma-derived-nc, chroma-derived-c, ICtCp

--chromaloc <integer>
    Specify chroma sample location (0 to 5) [0]

--mastering-display <string> Specify 'G(x,y)B(x,y)R(x,y)WP(x,y)L(max,min)'
    for primaries, white point, and display brightness

--cll <string>
    Specify 'max_content,max_frame_average' content light levels

--alternative-transfer <string> Specify an alternative transfer
    characteristics ["undef"]

    - same values as --transfer

--nal-hrd <string>
    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 <string>
    Add 'left,top,right,bottom' to the bitstream-level cropping rectangle

Input/Output:

-o, --output <string>
    Specify output file

--muxer <string>
    Specify output container format ["auto"] - auto, raw, mkv, flv

--demuxer <string>
    Specify input container format ["auto"] - auto, raw, y4m, avs, lavf, ffms

--input-fmt <string>
    Specify input file format (requires lavf support)

--input-csp <string>
    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, 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, vulkan, y210be, y210le, x2rgb10le, x2rgb10be, x2bgr10le, x2bgr10be, p210be, p210le, p410be, p410le, p216be, p216le, p416be, p416le, vuya, rgbaf16be, rgbaf16le, vuyx, p012le, p012be, y212be, y212le, xv30be, xv30le, xv36be, xv36le, rgbf32be, rgbf32le, rgbaf32be, rgbaf32le, p212be, p212le, p412be, p412le, gbrap14be, gbrap14le

--output-csp <string>
    Specify output colorspace ["i420"] - i400, i420, i422, i444, rgb

--input-depth <integer> Specify input bit depth for raw input

--output-depth <integer> Specify output bit depth

--input-range <string>
    Specify input color range ["auto"] - auto, tv, pc

--input-res <intxint>
    Specify input resolution (width x height)

--index <string>
    Filename for input index file

--sar width:height
    Specify Sample Aspect Ratio

--fps <float|rational>
    Specify framerate

--seek <integer>
    First frame to encode

--frames <integer>
    Maximum number of frames to encode

--level <string>
    Specify level (as defined by Annex A)

--bluray-compat
    Enable compatibility hacks for Blu-ray support

--avcintra-class <integer> Use compatibility hacks for AVC-Intra class
    - 50, 100, 200, 300, 480

--avcintra-flavor <string> 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 <string>
    Specify the maximum level of logging ["info"] - none, error, warning, info, debug

--psnr
    Enable PSNR computation

--ssim
    Enable SSIM computation

--threads <integer>
    Force a specific number of threads

--lookahead-threads <integer> 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 <integer> 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 <integer>
    Override CPU detection

--no-asm
    Disable all CPU optimizations

--opencl
    Enable use of OpenCL

--opencl-clbin <string> Specify path of compiled OpenCL kernel cache

--opencl-device <integer> Specify OpenCL device ordinal

--dump-yuv <string>
    Save reconstructed frames

--sps-id <integer>
    Set SPS and PPS id numbers [0]

--aud
    Use access unit delimiters

--force-cfr
    Force constant framerate timestamp generation

--tcfile-in <string>
    Force timestamp generation with timecode file

--tcfile-out <string>
    Output timecode v2 file from input timestamps

--timebase <int/int>
    Specify timebase numerator and denominator

<integer>
    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 <filter0>/<filter1>/... Apply video filtering to the input file

    Filter options may be specified in <filter>:<option>=<value> 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

(libswscale 7.5.100) (libavformat 60.16.100) (ffmpegsource 3.0.1.0) built on Apr 12 2023, gcc: 13.2.0 x264 configuration: --chroma-format=all libx264 configuration: --chroma-format=all x264 license: GPL version 2 or later libswscale/libavformat/ffmpegsource license: GPL version 2 or later