x264(1)

fast h264 encoder

Section 1 x264 bookworm source

Description

X264

NAME

x264 - fast h264 encoder

DESCRIPTION

x264 core:164 r3095 baee400 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 (gpac)

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, mp4

--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_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, vulkan, y210be, y210le, x2rgb10le, x2rgb10be

--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 5.9.100) (libavformat 58.76.100) (ffmpegsource 3.0.1.0) (gpac 2.0) built on Jun 10 2022, gcc: 11.3.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