x264(1) fast h264 encoder


x264 core:133 r2339 585324f 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 support (yes)

Output bit depth: 10 (configured at compile time)


-h, --help
List basic options
List more options
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>
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>


--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:
--b-adapt 2 --direct auto --me umh --rc-lookahead 50 --ref 5 --subme 8
- 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
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]
Disable adaptive I-frame decision
--scenecut <integer>
How aggressively to insert extra I-frames [40]
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)
Use recovery points to close GOPs Only available with b-frames
Disable CABAC
-r, --ref <integer>
Number of reference frames [3]
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)
Enable interlaced mode (top field first)
Enable interlaced mode (bottom field first)
Enable constrained intra prediction.
--pulldown <string>
Use soft pulldown to change frame rate - none, 22, 32, 64, double, triple, euro (requires cfr input)
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


-q, --qp <integer>
Force constant QP (0-69, 0=lossless)
-B, --bitrate <integer>
Set bitrate (kbit/s)
--crf <float>
Quality-based VBR (0-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 (experimental)
--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"]
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)
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.


-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
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)
Disable all visual optimizations that worsen both PSNR and SSIM.
Don't decide references on a per partition basis
Ignore chroma in motion estimation
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
Disables early SKIP detection on P-frames
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"] - jvt, flat
--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
--transfer <string>
Specify transfer characteristics ["undef"] - undef, bt709, bt470m, bt470bg, linear,
log100, log316, smpte170m, smpte240m
--colormatrix <string>
Specify color matrix setting ["???"] - undef, bt709, fcc, bt470bg
smpte170m, smpte240m, GBR, YCgCo
--chromaloc <integer>
Specify chroma sample location (0 to 5) [0]
--nal-hrd <string>
Signal HRD information (requires vbv-bufsize) - none, vbr, cbr (cbr not allowed in .mp4)
Force pic_struct in Picture Timing SEI
--crop-rect <string>
Add 'left,top,right,bottom' to the bitstream-level cropping rectangle


-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:
i420, yv12, nv12, i422, yv16, nv16, 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, xvmcmc, xvmcidct, uyvy422, uyyvyy411, bgr8, bgr4, bgr4_byte, rgb8, rgb4, rgb4_byte, nv12, nv21, argb, rgba, abgr, bgra, gray16be, gray16le, yuv440p, yuvj440p, yuva420p, vdpau_h264, vdpau_mpeg1, vdpau_mpeg2, vdpau_wmv3, vdpau_vc1, rgb48be, rgb48le, rgb565be, rgb565le, rgb555be, rgb555le, bgr565be, bgr565le, bgr555be, bgr555le, vaapi_moco, vaapi_idct, vaapi_vld, yuv420p16le, yuv420p16be, yuv422p16le, yuv422p16be, yuv444p16le, yuv444p16be, vdpau_mpeg4, dxva2_vld, rgb444le, rgb444be, bgr444le, bgr444be, y400a, bgr48be, bgr48le, yuv420p9be, yuv420p9le, yuv420p10be, yuv420p10le, yuv422p10be, yuv422p10le, yuv444p9be, yuv444p9le, yuv444p10be, yuv444p10le, yuv422p9be, yuv422p9le, vda_vld, gbrp, gbrp9be, gbrp9le, gbrp10be, gbrp10le, gbrp16be, gbrp16le
--output-csp <string>
Specify output colorspace ["i420"] - i420, i422, i444, rgb
--input-depth <integer> Specify input bit depth for raw input
--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)
Enable compatibility hacks for Blu-ray support
-v, --verbose
Print stats for each frame
Don't show the progress indicator while encoding
Quiet Mode
--log-level <string>
Specify the maximum level of logging ["info"] - none, error, warning, info, debug
Enable PSNR computation
Enable SSIM computation
--threads <integer>
Force a specific number of threads
--lookahead-threads <integer> Force a specific number of lookahead threads
Low-latency but lower-efficiency threading
Run Avisynth in its own thread
--sync-lookahead <integer> Number of buffer frames for threaded lookahead
Slightly improve quality of SMP, at the cost of repeatability
Ensure exact reproducibility across different cpus, as opposed to letting them select different algorithms
--asm <integer>
Override CPU detection
Disable all CPU optimizations
Enable use of OpenCL
--opencl-clbin <string> Specify path of compiled OpenCL kernel cache
--opencl-device <integer>
Specify OpenCL device ordinal
Show MB types overlayed on the encoded video
--dump-yuv <string>
Save reconstructed frames
--sps-id <integer>
Set SPS and PPS id numbers [0]
Use access unit delimiters
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
Specify timebase numerator for input timecode file or specify timebase denominator for other input
Eliminate initial delay with container DTS hack


--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
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]: i420, yv12, nv12, i422, yv16, nv16, 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
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.org/mediawiki/Select#SelectEvery

(libswscale 2.1.2) (libavformat 55.1.0) (ffmpegsource built on Jul 26 2013, gcc: 4.8.1 configuration: --bit-depth=10 --chroma-format=all x264 license: GPL version 2 or later libswscale/libavformat/ffmpegsource license: GPL version 2 or later