x2641
Fast h264 encoder
Overview
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
--crf24-o<output> <input>
-
Two-pass with a bitrate of 1000kbps:
-
x264
--pass1--bitrate1000-o<output> <input> x264--pass2--bitrate1000-o<output> <input>
-
Lossless:
-
x264
--qp0-o<output> <input>
-
Maximum PSNR at the cost of speed and visual quality:
-
x264
--presetplacebo--tunepsnr-o<output> <input>
-
Constant bitrate at 1000kbps with a 2 second-buffer:
-
x264
--vbv-bufsize2000--bitrate1000-o<output> <input>
Presets:
-
--profile <string> -
Force the limits of an H.264 profile Overrides all settings. - baseline:
-
--no-8x8dct --bframes 0 --no-cabac -
--cqmflat--weightp0 No interlaced. No lossless.
- - main:
-
--no-8x8dct--cqmflat 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 -
--bframes0--no-cabac--no-deblock--no-mbtree--media--no-mixed-refs--partitionsnone--rc-lookahead0--ref1--scenecut0--subme0--trellis0--no-weightb--weightp0
- - superfast:
-
--no-mbtree--media--no-mixed-refs--partitionsi8x8,i4x4--rc-lookahead0--ref1--subme1--trellis0--weightp1
- - veryfast:
-
--no-mixed-refs--rc-lookahead10--ref1--subme2--trellis0--weightp1
- - faster:
-
--no-mixed-refs--rc-lookahead20--ref2--subme4--weightp1
- - fast:
-
--rc-lookahead30--ref2--subme6--weightp1
- - medium:
-
Default settings apply.
- - slow:
-
--directauto--rc-lookahead50--ref5--subme8--trellis2
- - slower:
-
--b-adapt2--directauto--meumh--partitionsall--rc-lookahead60--ref8--subme9--trellis2
- - veryslow:
-
--b-adapt2--bframes8--directauto--meumh--merange24--partitionsall--ref16--subme10--trellis2--rc-lookahead60
- - placebo:
-
--bframes16--b-adapt2--directauto--slow-firstpass--no-fast-pskip--metesa--merange24--partitionsall--rc-lookahead60--ref16--subme11--trellis2
-
--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-rd0.4:<unset>--aq-strength0.6--ref{Double if >1 else 1}
- - grain (psy tuning):
-
--aq-strength0.5--no-dct-decimate--deadzone-inter6--deadzone-intra6--deblock-2:-2--ipratio1.1--pbratio1.1--psy-rd<unset>:0.25--qcomp0.8
- - stillimage (psy tuning):
-
--aq-strength1.2--deblock-3:-3--psy-rd2.0:0.7
- - psnr (psy tuning):
-
--aq-mode0--no-psy
- - ssim (psy tuning):
-
--aq-mode2--no-psy
- - fastdecode:
-
--no-cabac--no-deblock--no-weightb--weightp0
- - zerolatency:
-
--bframes0--force-cfr--no-mbtree--sync-lookahead0--sliced-threads--rc-lookahead0
-
--slow-firstpass -
Don't force these faster settings with
--pass1:--no-8x8dct--media--partitionsnone--ref1--subme{2 if >2 else unchanged}--trellis0--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
|
characteristics ["undef"] |
|---|---|
|
- same values as |
-
--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-hrdcbr)
-
--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
|
- 50, 100, 200, 300, 480 |
|---|---|
|
- 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
Releases
7 releases since Debian 7 (Wheezy); the text changed 6 times.
--cll since Debian 12 (Bookworm);
--filler since Debian 9 (Stretch);
--opencl since Debian 8 (Jessie);
--slices-max since Debian 8 (Jessie);
--stitchable since Debian 9 (Stretch).
--opencl-device until Debian 8 (Jessie);
--visualize until Debian 8 (Jessie).