Skip to content

Instantly share code, notes, and snippets.

@lextra2
Last active March 20, 2024 00:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lextra2/f40641bdb3385ec7a986eed74f45c564 to your computer and use it in GitHub Desktop.
Save lextra2/f40641bdb3385ec7a986eed74f45c564 to your computer and use it in GitHub Desktop.
https://github.com/GPUOpen-LibrariesAndSDKs/AMF/tree/master/amf/public/include/components
https://github.com/GPUOpen-LibrariesAndSDKs/AMF/blob/master/amf/doc/AMF_Video_Encode_HEVC_API.md
https://github.com/GPUOpen-LibrariesAndSDKs/AMF/blob/master/amf/doc/AMF_Video_PreAnalysis_API.md
OBS
https://github.com/obsproject/obs-studio/blob/master/plugins/obs-ffmpeg/texture-amf.cpp
---------------------------------------------------------------------------------------------------------
HevcQP_I=22 HevcQP_P=24
VBVBufferSize=24000000 PeakBitrate=16000000 PAEngineType=1 PASceneChangeDetectionEnable=false PALookAheadBufferDepth=41 PATemporalAQMode=1 PAHighMotionQualityBoostMode=1
{
"description": "VirtualDub external encoder profile collection",
"externalEncoders": {
"sets": {
"ProRes": {
"videoEncoder": "ProRes",
"audioEncoder": "",
"multiplexer": "",
"description": "",
"extension": "",
"processPartial": true,
"useOutputAsTemp": false
},
"ProRes Q4": {
"videoEncoder": "ProRes Q4",
"audioEncoder": "",
"multiplexer": "",
"description": "",
"extension": "",
"processPartial": true,
"useOutputAsTemp": false
}
},
"profiles": {
"ProRes": {
"name": "ProRes",
"program": "ffmpeg.exe",
"commandArguments": "-f rawvideo -pix_fmt %(pix_fmt) -s %(width)x%(height) -r %(fpsnum)/%(fpsden) -i - -c:v prores_ks -pix_fmt yuv420p10le %(tempvideofile)",
"outputFilename": "%(outputname).mov",
"type": 0,
"pixelFormat": "yuv444p16le",
"inputFormat": 0,
"checkReturnCode": true,
"logStdout": true,
"logStderr": true,
"bypassCompression": false,
"predeleteOutputFile": false
},
"ProRes Q4": {
"name": "ProRes Q4",
"program": "ffmpeg.exe",
"commandArguments": "-f rawvideo -pix_fmt %(pix_fmt) -s %(width)x%(height) -r %(fpsnum)/%(fpsden) -i - -c:v prores_ks -q:v 4 -pix_fmt yuv420p10le %(tempvideofile)",
"outputFilename": "%(outputname).mov",
"type": 0,
"pixelFormat": "yuv444p16le",
"inputFormat": 0,
"checkReturnCode": true,
"logStdout": true,
"logStderr": true,
"bypassCompression": false,
"predeleteOutputFile": false
}
}
}
}
x264 --fullhelp
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 (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 <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
--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
x265 [info]: HEVC encoder version 3.5+115-3cf6c1e53
x265 [info]: build info [Windows][MSVC 1939][64 bit] 8bit+10bit+12bit
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
--fullhelp Show all options and exit
-V/--version Show version info and exit
Output Options:
-o/--output <filename> Bitstream output file name
-D/--output-depth 8|10|12 Output bit depth (also internal bit depth). Default 8
--log-level <string> Logging level: none error warning info debug full. Default full
--no-progress Disable CLI progress reports
--csv <filename> Comma separated log file, if csv-log-level > 0 frame level statistics, else one line per run
--csv-log-level <integer> Level of csv logging, if csv-log-level > 0 frame level statistics, else one line per run: 0-2
Input Options:
--input <filename> Raw YUV or Y4M input file name. `-` for stdin
--y4m Force parsing of input stream as YUV4MPEG2 regardless of file extension
--fps <float|rational> 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 <integer> Bit-depth of input file. Default 8
--input-csp <string> 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)
--dhdr10-info <filename> JSON file containing the Creative Intent Metadata to be encoded as Dynamic Tone Mapping
--[no-]dhdr10-opt Insert tone mapping SEI only for IDR frames and when the tone mapping information changes. Default disabled
--dolby-vision-profile <float|integer> Specifies Dolby Vision profile ID. Currently only profile 5, profile 8.1 and profile 8.2 enabled. Specified as '5' or '50'. Default 0 (disabled).
--dolby-vision-rpu <filename> File containing Dolby Vision RPU metadata.
If given, x265's Dolby Vision metadata parser will fill the RPU field of input pictures with the metadata read from the file. Default NULL(disabled).
--nalu-file <filename> Text file containing SEI messages in the following format : <POC><space><PREFIX><space><NAL UNIT TYPE>/<SEI TYPE><space><SEI Payload>
-f/--frames <integer> Maximum number of frames to encode. Default all
--seek <integer> First frame to encode
--[no-]interlace <bff|tff> Indicate input pictures are interlace fields in temporal order. Default progressive
--[no-]field Enable or disable field coding. Default disabled
--dither Enable dither if downscaling to 8 bit pixels. Default disabled
--[no-]copy-pic Copy buffers of input picture in frame. Default enabled
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 <string> Enforce an encode profile: main, main10, mainstillpicture
--level-idc <integer|float> 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 <integer,...> 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 <integer> Number of concurrently encoded frames. 0: auto-determined by core count
--[no-]wpp Enable Wavefront Parallel Processing. Default enabled
--[no-]slices <integer> Enable Multiple Slices feature. Default 1
--[no-]pmode Parallel mode analysis. Default disabled
--[no-]pme Parallel motion estimation. Default disabled
--[no-]asm <bool|int|string> Override CPU detection. Default: auto
Presets:
-p/--preset <string> Trade off performance for compression efficiency. Default medium
ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, or placebo
-t/--tune <string> Tune the settings for a particular type of source or situation:
psnr, ssim, grain, zerolatency, fastdecode
Quad-Tree size and depth:
-s/--ctu <64|32|16> Maximum CU size (WxH). Default 64
--min-cu-size <64|32|16|8> Minimum CU size (WxH). Default 8
--max-tu-size <32|16|8|4> Maximum TU size (WxH). Default 32
--tu-intra-depth <integer> Max TU recursive depth for intra CUs. Default 1
--tu-inter-depth <integer> Max TU recursive depth for inter CUs. Default 1
--limit-tu <0..4> Enable early exit from TU recursion for inter coded blocks. Default 0
Analysis:
--rd <1..6> Level of RDO in mode decision 1:least....6:full RDO. Default 3
--[no-]psy-rd <0..5.0> Strength of psycho-visual rate distortion optimization, 0 to disable. Default 2.0
--[no-]rdoq-level <0|1|2> Level of RDO in quantization 0:none, 1:levels, 2:levels & coding groups. Default 0
--[no-]psy-rdoq <0..50.0> Strength of psycho-visual optimization in RDO quantization, 0 to disable. Default 0.0
--dynamic-rd <0..4.0> Strength of dynamic RD, 0 to disable. Default 0.00
--[no-]ssim-rd Enable ssim rate distortion optimization, 0 to disable. Default disabled
--[no-]rd-refine Enable QP based RD refinement for rd levels 5 and 6. Default disabled
--[no-]early-skip Enable early SKIP detection. Default enabled
--rskip <Integer> Enable recursion skip for early exit from CTU analysis during inter prediction. 1: exit using RD cost & CU homogeneity. 2: exit using CU edge density. 0: disabled. Default 1
--rskip-edge-threshold Threshold in terms of percentage (an integer of range [0,100]) for minimum edge density in CU's used to prune the recursion depth. Applicable only to rskip mode 2. Value is preset dependent. Default: 5
--[no-]tskip-fast Enable fast intra transform skipping. Default disabled
--[no-]splitrd-skip Enable skipping split RD analysis when sum of split CU rdCost larger than one split CU rdCost for Intra CU. Default disabled
--nr-intra <integer> An integer value in range of 0 to 2000, which denotes strength of noise reduction in intra CUs. Default 0
--nr-inter <integer> An integer value in range of 0 to 2000, which denotes strength of noise reduction in inter CUs. Default 0
--ctu-info <integer> Enable receiving ctu information asynchronously and determine reaction to the CTU information (0, 1, 2, 4, 6) Default 0
- 1: force the partitions if CTU information is present
- 2: functionality of (1) and reduce qp if CTU information has changed
- 4: functionality of (1) and force Inter modes when CTU Information has changed, merge/skip otherwise
Enable this option only when planning to invoke the API function x265_encoder_ctu_info to copy ctu-info asynchronously
Coding tools:
-w/--[no-]weightp Enable weighted prediction in P slices. Default enabled
--[no-]weightb Enable weighted prediction in B slices. Default disabled
--[no-]cu-lossless Consider lossless mode in CU RDO decisions. Default disabled
--[no-]signhide Hide sign bit of one coeff per TU (rdo). Default enabled
--[no-]tskip Enable intra 4x4 transform skipping. Default disabled
Temporal / motion search options:
--max-merge <1..5> Maximum number of merge candidates. Default 3
--ref <integer> max number of L0 references to be allowed (1 .. 16) Default 3
--limit-refs <0|1|2|3> Limit references per depth (1) or CU (2) or both (3). Default 1
--me <string> Motion search method dia hex umh star full. Default 1
-m/--subme <integer> Amount of subpel refinement to perform (0:least .. 7:most). Default 2
--merange <integer> Motion search range. Default 57
--[no-]rect Enable rectangular motion partitions Nx2N and 2NxN. Default disabled
--[no-]amp Enable asymmetric motion partitions, requires --rect. Default disabled
--[no-]limit-modes Limit rectangular and asymmetric motion predictions. Default 0
--[no-]temporal-mvp Enable temporal MV predictors. Default enabled
--[no-]hme Enable Hierarchical Motion Estimation. Default disabled
--hme-search <string> Motion search-method for HME L0,L1 and L2. Default(L0,L1,L2) is 1,2,2
--hme-range <int>,<int>,<int> Motion search-range for HME L0,L1 and L2. Default(L0,L1,L2) is 16,32,48
Spatial / intra options:
--[no-]strong-intra-smoothing Enable strong intra smoothing for 32x32 blocks. Default enabled
--[no-]constrained-intra Constrained intra prediction (use only intra coded reference pixels) Default disabled
--[no-]b-intra Enable intra in B frames in veryslow presets. Default enabled
--[no-]fast-intra Enable faster search method for angular intra predictions. Default disabled
--rdpenalty <0..2> penalty for 32x32 intra TU in non-I slices. 0:disabled 1:RD-penalty 2:maximum. Default 0
Slice decision options:
--[no-]open-gop Enable open-GOP, allows I slices to be non-IDR. Default enabled
--cra-nal Force nal type to CRA to all frames expect first frame, works only with keyint 1. Default disabled
-I/--keyint <integer> Max IDR period in frames. -1 for infinite-gop. Default 250
-i/--min-keyint <integer> Scenecuts closer together than this are coded as I, not IDR. Default: auto
--gop-lookahead <integer> Extends gop boundary if a scenecut is found within this from keyint boundary. Default 0
--no-scenecut Disable adaptive I-frame decision
--scenecut <integer> How aggressively to insert extra I-frames. Default 40
--scenecut-bias <0..100.0> Bias for scenecut detection. Default 5.00
--hist-scenecut Enables histogram based scene-cut detection using histogram based algorithm.
--no-hist-scenecut Disables histogram based scene-cut detection using histogram based algorithm.
--[no-]fades Enable detection and handling of fade-in regions. Default disabled
--scenecut-aware-qp <0..3> Enable increasing QP for frames inside the scenecut window around scenecut. Default disabled
0 - Disabled
1 - Forward masking
2 - Backward masking
3 - Bidirectional masking
--masking-strength <string> Comma separated values which specify the duration and offset for the QP increment for inter-frames when scenecut-aware-qp is enabled.
--scenecut-qp-config <file> File containing scenecut-aware-qp mode, window duration and offsets settings required for the masking. Works only with --pass 2
--radl <integer> Number of RADL pictures allowed in front of IDR. Default 0
--intra-refresh Use Periodic Intra Refresh instead of IDR frames
--rc-lookahead <integer> Number of frames for frame-type lookahead (determines encoder latency) Default 20
--lookahead-slices <0..16> Number of slices to use per lookahead cost estimate. Default 8
--lookahead-threads <integer> Number of threads to be dedicated to perform lookahead only. Default 0
-b/--bframes <0..16> Maximum number of consecutive b-frames. Default 4
--bframe-bias <integer> Bias towards B frame decisions. Default 0
--b-adapt <0..2> 0 - none, 1 - fast, 2 - full (trellis) adaptive B frame scheduling. Default 2
--[no-]b-pyramid Use B-frames as references. Default enabled
--qpfile <string> Force frametypes and QPs for some or all frames
Format of each line: framenumber frametype QP
QP is optional (none lets x265 choose). Frametypes: I,i,K,P,B,b.
QPs are restricted by qpmin/qpmax.
--force-flush <integer> Force the encoder to flush frames. Default 0
0 - flush the encoder only when all the input pictures are over.
1 - flush all the frames even when the input is not over. Slicetype decision may change with this option.
2 - flush the slicetype decided frames only.
--[no-]-hrd-concat Set HRD concatenation flag for the first keyframe in the buffering period SEI. Default disabled
Rate control, Adaptive Quantization:
--bitrate <integer> Target bitrate (kbps) for ABR (implied). Default 0
-q/--qp <integer> QP for P slices in CQP mode (implied). --ipratio and --pbration determine other slice QPs
--crf <float> Quality-based VBR (0-51). Default 28.0
--[no-]lossless Enable lossless: bypass transform, quant and loop filters globally. Default disabled
--crf-max <float> With CRF+VBV, limit RF to this value. Default 0.000000
May cause VBV underflows!
--crf-min <float> With CRF+VBV, limit RF to this value. Default 0.000000
this specifies a minimum rate factor value for encode!
--vbv-maxrate <integer> Max local bitrate (kbit/s). Default 0
--vbv-bufsize <integer> Set size of the VBV buffer (kbit). Default 0
--vbv-init <float> Initial VBV buffer occupancy (fraction of bufsize or in kbits). Default 0.90
--vbv-end <float> Final VBV buffer emptiness (fraction of bufsize or in kbits). Default 0 (disabled)
--min-vbv-fullness <double> Minimum VBV fullness percentage to be maintained. Default 50.00
--max-vbv-fullness <double> Maximum VBV fullness percentage to be maintained. Default 80.00
--vbv-end-fr-adj <float> Frame from which qp has to be adjusted to achieve final decode buffer emptiness. Default 0
--chunk-start <integer> First frame of the chunk. Default 0 (disabled)
--chunk-end <integer> Last frame of the chunk. Default 0 (disabled)
--pass Multi pass rate control.
- 1 : First pass, creates stats file
- 2 : Last pass, does not overwrite stats file
- 3 : Nth pass, overwrites stats file
--[no-]multi-pass-opt-analysis Refine analysis in 2 pass based on analysis information from pass 1
--[no-]multi-pass-opt-distortion Use distortion of CTU from pass 1 to refine qp in 2 pass
--[no-]vbv-live-multi-pass Enable realtime VBV in rate control 2 pass.Default disabled
--stats Filename for stats file in multipass pass rate control. Default x265_2pass.log
--[no-]analyze-src-pics Motion estimation uses source frame planes. Default disable
--[no-]slow-firstpass Enable a slow first pass in a multipass rate control mode. Default enabled
--[no-]strict-cbr Enable stricter conditions and tolerance for bitrate deviations in CBR mode. Default disabled
--analysis-save <filename> Dump analysis info into the specified file. Default Disabled
--analysis-load <filename> Load analysis buffers from the file specified. Default Disabled
--analysis-reuse-file <filename> Specify file name used for either dumping or reading analysis data. Deault x265_analysis.dat
--analysis-reuse-level <1..10> Level of analysis reuse indicates amount of info stored/reused in save/load mode, 1:least..10:most. Now deprecated. Default 0
--analysis-save-reuse-level <1..10> Indicates the amount of analysis info stored in save mode, 1:least..10:most. Default 0
--analysis-load-reuse-level <1..10> Indicates the amount of analysis info reused in load mode, 1:least..10:most. Default 0
--refine-analysis-type <string> Reuse anlaysis information received through API call. Supported options are avc and hevc. Default disabled - 0
--scale-factor <int> Specify factor by which input video is scaled down for analysis save mode. Default 0
--refine-intra <0..4> Enable intra refinement for encode that uses analysis-load.
- 0 : Forces both mode and depth from the save encode.
- 1 : Functionality of (0) + evaluate all intra modes at min-cu-size's depth when current depth is one smaller than min-cu-size's depth.
- 2 : Functionality of (1) + irrespective of size evaluate all angular modes when the save encode decides the best mode as angular.
- 3 : Functionality of (1) + irrespective of size evaluate all intra modes.
- 4 : Re-evaluate all intra blocks, does not reuse data from save encode.
Default:0
--refine-inter <0..3> Enable inter refinement for encode that uses analysis-load.
- 0 : Forces both mode and depth from the save encode.
- 1 : Functionality of (0) + evaluate all inter modes at min-cu-size's depth when current depth is one smaller than
min-cu-size's depth. When save encode decides the current block as skip(for all sizes) evaluate skip/merge.
- 2 : Functionality of (1) + irrespective of size restrict the modes evaluated when specific modes are decided as the best mode by the save encode.
- 3 : Functionality of (1) + irrespective of size evaluate all inter modes.
Default:0
--[no-]dynamic-refine Dynamically changes refine-inter level for each CU. Default disabled
--refine-mv <1..3> Enable mv refinement for load mode. Default 1
--refine-ctu-distortion Store/normalize ctu distortion in analysis-save/load.
- 0 : Disabled.
- 1 : Store/Load ctu distortion to/from the file specified in analysis-save/load.
Default 0 - Disabled
--aq-mode <integer> Mode for Adaptive Quantization - 0:none 1:uniform AQ 2:auto variance 3:auto variance with bias to dark scenes 4:auto variance with edge information. Default 2
--[no-]hevc-aq Mode for HEVC Adaptive Quantization. Default disabled
--aq-strength <float> Reduces blocking and blurring in flat and textured areas (0 to 3.0). Default 1.00
--qp-adaptation-range <float> Delta QP range by QP adaptation based on a psycho-visual model (1.0 to 6.0). Default 1.00
--[no-]aq-motion Block level QP adaptation based on the relative motion between the block and the frame. Default disabled
--[no-]sbrc Enables the segment based rate control. Default disabled
--qg-size <int> Specifies the size of the quantization group (64, 32, 16, 8). Default 32
--[no-]cutree Enable cutree for Adaptive Quantization. Default enabled
--[no-]rc-grain Enable ratecontrol mode to handle grains specifically. turned on with tune grain. Default disabled
--ipratio <float> QP factor between I and P. Default 1.40
--pbratio <float> QP factor between P and B. Default 1.30
--qcomp <float> Weight given to predicted complexity. Default 0.60
--qpstep <integer> The maximum single adjustment in QP allowed to rate control. Default 4
--qpmin <integer> sets a hard lower limit on QP allowed to ratecontrol. Default 0
--qpmax <integer> sets a hard upper limit on QP allowed to ratecontrol. Default 69
--[no-]const-vbv Enable consistent vbv. turned on with tune grain. Default disabled
--cbqpoffs <integer> Chroma Cb QP Offset [-12..12]. Default 0
--crqpoffs <integer> Chroma Cr QP Offset [-12..12]. Default 0
--scaling-list <string> Specify a file containing HM style quant scaling lists or 'default' or 'off'. Default: off
--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)
--zonefile <filename> Zone file containing the zone boundaries and the parameters to be reconfigured.
--no-zonefile-rc-init This allow to use rate-control history across zones in zonefile.
--lambda-file <string> Specify a file containing replacement values for the lambda tables
MAX_MAX_QP+1 floats for lambda table, then again for lambda2 table
Blank lines and lines starting with hash(#) are ignored
Comma is considered to be white-space
--max-ausize-factor <float> This value controls the maximum AU size defined in specification.
It represents the percentage of maximum AU size used. Default 1.0
Loop filters (deblock and SAO):
--[no-]deblock Enable Deblocking Loop Filter, optionally specify tC:Beta offsets Default enabled
--[no-]sao Enable Sample Adaptive Offset. Default enabled
--[no-]sao-non-deblock Use non-deblocked pixels, else right/bottom boundary areas skipped. Default disabled
--[no-]limit-sao Limit Sample Adaptive Offset types. Default disabled
--selective-sao <int> Enable slice-level SAO filter. Default 0
VUI options:
--sar <width:height|int> Sample Aspect Ratio, the ratio of width to height of an individual pixel.
Choose from 0=undef, 1=1:1("square"), 2=12:11, 3=10:11, 4=16:11,
5=40:33, 6=24:11, 7=20:11, 8=32:11, 9=80:33, 10=18:11, 11=15:11,
12=64:33, 13=160:99, 14=4:3, 15=3:2, 16=2:1 or custom ratio of <int:int>. Default 0
--display-window <string> Describe overscan cropping region as 'left,top,right,bottom' in pixels
--overscan <string> Specify whether it is appropriate for decoder to show cropped region: unknown, show or crop. Default unknown
--videoformat <string> Specify video format from unknown, component, pal, ntsc, secam, mac. Default unknown
--range <string> Specify black level and range of luma and chroma signals as full or limited Default limited
--colorprim <string> Specify color primaries from bt709, unknown, reserved, bt470m, bt470bg, smpte170m,
smpte240m, film, bt2020, smpte428, smpte431, smpte432. Default unknown
--transfer <string> Specify transfer characteristics from bt709, unknown, reserved, bt470m, bt470bg, smpte170m,
smpte240m, linear, log100, log316, iec61966-2-4, bt1361e, iec61966-2-1,
bt2020-10, bt2020-12, smpte2084, smpte428, arib-std-b67. Default unknown
--colormatrix <string> Specify color matrix setting from unknown, bt709, fcc, bt470bg, smpte170m,
smpte240m, gbr, ycgco, bt2020nc, bt2020c, smpte2085, chroma-derived-nc, chroma-derived-c, ictcp. Default unknown
--chromaloc <integer> Specify chroma sample location (0 to 5). Default of 0
--master-display <string> SMPTE ST 2086 master display color volume info SEI (HDR)
format: G(x,y)B(x,y)R(x,y)WP(x,y)L(max,min)
--max-cll <string> Specify content light level info SEI as "cll,fall" (HDR).
--video-signal-type-preset <string> Specify combinations of color primaries, transfer characteristics, color matrix, range of luma and chroma signals, and chroma sample location
format: <system-id>[:<color-volume>]
This has higher precedence than individual VUI parameters. If any individual VUI option is specified together with this,
which changes the values set corresponding to the system-id or color-volume, it will be discarded.
The color-volume can be used only with the system-id options BT2100_PQ_YCC, BT2100_PQ_ICTCP, and BT2100_PQ_RGB.
system-id options and their corresponding values:
BT601_525: --colorprim smpte170m --transfer smpte170m --colormatrix smpte170m --range limited --chromaloc 0
BT601_626: --colorprim bt470bg --transfer smpte170m --colormatrix bt470bg --range limited --chromaloc 0
BT709_YCC: --colorprim bt709 --transfer bt709 --colormatrix bt709 --range limited --chromaloc 0
BT709_RGB: --colorprim bt709 --transfer bt709 --colormatrix gbr --range limited
BT2020_YCC_NCL: --colorprim bt2020 --transfer bt2020-10 --colormatrix bt709 --range limited --chromaloc 2
BT2020_RGB: --colorprim bt2020 --transfer smpte2084 --colormatrix bt2020nc --range limited
BT2100_PQ_YCC: --colorprim bt2020 --transfer smpte2084 --colormatrix bt2020nc --range limited --chromaloc 2
BT2100_PQ_ICTCP: --colorprim bt2020 --transfer smpte2084 --colormatrix ictcp --range limited --chromaloc 2
BT2100_PQ_RGB: --colorprim bt2020 --transfer smpte2084 --colormatrix gbr --range limited
BT2100_HLG_YCC: --colorprim bt2020 --transfer arib-std-b67 --colormatrix bt2020nc --range limited --chromaloc 2
BT2100_HLG_RGB: --colorprim bt2020 --transfer arib-std-b67 --colormatrix gbr --range limited
FR709_RGB: --colorprim bt709 --transfer bt709 --colormatrix gbr --range full
FR2020_RGB: --colorprim bt2020 --transfer bt2020-10 --colormatrix gbr --range full
FRP3D65_YCC: --colorprim smpte432 --transfer bt709 --colormatrix smpte170m --range full --chromaloc 1
color-volume options and their corresponding values:
P3D65x1000n0005: --master-display G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,5)
P3D65x4000n005: --master-display G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(40000000,50)
BT2100x108n0005: --master-display G(8500,39850)B(6550,2300)R(34000,146000)WP(15635,16450)L(10000000,1)
--[no-]cll Emit content light level info SEI. Default enabled
--[no-]hdr10 Control dumping of HDR10 SEI packet. If max-cll or master-display has non-zero values, this is enabled. Default disabled
--[no-]hdr-opt Add luma and chroma offsets for HDR/WCG content. Default disabled. Now deprecated.
--[no-]hdr10-opt Block-level QP optimization for HDR10 content. Default disabled.
--min-luma <integer> Minimum luma plane value of input source picture
--max-luma <integer> Maximum luma plane value of input source picture
Bitstream options:
--[no-]repeat-headers Emit SPS and PPS headers at each keyframe. Default disabled
--[no-]info Emit SEI identifying encoder and parameters. Default enabled
--[no-]hrd Enable HRD parameters signaling. Default disabled
--[no-]idr-recovery-sei Emit recovery point infor SEI at each IDR frame
--temporal-layers Enable a temporal sublayer for unreferenced B frames. Default disabled
--[no-]aud Emit access unit delimiters at the start of each access unit. Default disabled
--[no-]eob Emit end of bitstream nal unit at the end of the bitstream. Default disabled
--[no-]eos Emit end of sequence nal unit at the end of every coded video sequence. Default disabled
--hash <integer> Decoded Picture Hash SEI 0: disabled, 1: MD5, 2: CRC, 3: Checksum. Default 0
--atc-sei <integer> Emit the alternative transfer characteristics SEI message where the integer is the preferred transfer characteristics. Default disabled
--pic-struct <integer> Set the picture structure and emits it in the picture timing SEI message. Values in the range 0..12. See D.3.3 of the HEVC spec. for a detailed explanation.
--log2-max-poc-lsb <integer> Maximum of the picture order count
--[no-]vui-timing-info Emit VUI timing information in the bistream. Default enabled
--[no-]vui-hrd-info Emit VUI HRD information in the bistream. Default enabled
--[no-]opt-qp-pps Dynamically optimize QP in PPS (instead of default 26) based on QPs in previous GOP. Default disabled
--[no-]opt-ref-list-length-pps Dynamically set L0 and L1 ref list length in PPS (instead of default 0) based on values in last GOP. Default disabled
--[no-]multi-pass-opt-rps Enable storing commonly used RPS in SPS in multi pass mode. Default disabled
--[no-]opt-cu-delta-qp Optimize to signal consistent CU level delta QPs in frame. Default disabled
Reconstructed video options (debugging):
-r/--recon <filename> Reconstructed raw image YUV or Y4M output file name
--recon-depth <integer> Bit-depth of reconstructed raw image file. Defaults to input bit depth, or 8 if Y4M
--recon-y4m-exec <string> pipe reconstructed frames to Y4M viewer, ex:"ffplay -i pipe:0 -autoexit"
--lowpass-dct Use low-pass subband dct approximation. Default disabled
--[no-]frame-dup Enable Frame duplication. Default disabled
--dup-threshold <integer> PSNR threshold for Frame duplication. Default 70
--[no-]mcstf Enable GOP based temporal filter. Default 0
ABR-ladder settings
--abr-ladder <file> File containing config settings required for the generation of ABR-ladder
Executable return codes:
0 - encode successful
1 - unable to parse command line
2 - unable to open encoder
3 - unable to generate stream headers
4 - encoder abort
SEI Message Options
--film-grain <filename> File containing Film Grain Characteristics to be written as a SEI Message
Complete documentation may be found at http://x265.readthedocs.org/en/default/cli.html
@lextra2
Copy link
Author

lextra2 commented Dec 20, 2020

Check encoder settings like this
ffmpeg -h encoder=libvpx-vp9

Say yes if asked
ffmpeg -y

Show encoding time in seconds
-benchmark

Write to logfile
-report

Hide ffmpeg (for piping)
-loglevel quiet

Or show warnings only
-loglevel warning

@lextra2
Copy link
Author

lextra2 commented Dec 29, 2020

mkvpropedit --add-track-statistics-tags INPUT.mkv
Read more
Needed to write statistics for VP9 / Opus

mkvpropedit --tags all:"" --delete title INPUT.mkv
Delete all tags and title

ffmpeg -i INPUT.flac -c:a libopus -b:a 576K OUTPUT.opus

  • 2CH = 160K
  • 6CH = 432K
  • 8CH = 576K

NTSC
-color_primaries smpte170m -colorspace smpte170m -color_trc smpte170m -color_range tv
PAL
-color_primaries bt470bg -colorspace bt470bg -color_trc gamma28 -color_range tv
NTSC HD
-color_primaries bt709 -color_trc bt709 -colorspace bt709 -color_range tv

@lextra2
Copy link
Author

lextra2 commented Aug 11, 2021

@lextra2
Copy link
Author

lextra2 commented Jul 15, 2022

ffmpeg -y -benchmark -init_hw_device opencl=GPU -filter_hw_device GPU -i SAMPLE.mkv -map_metadata -1 -vf "format=p010,hwupload,tonemap_opencl=tonemap=hable:tonemap=hable:primaries=bt709:transfer=bt709:matrix=bt709:range=tv:format=p010,hwdownload,format=p010" -c:v prores_ks -qscale:v 4 TonemapGPU.mov

ffmpeg -y -benchmark -i SAMPLE.mkv -map_metadata -1 -vf "zscale=transfer=linear,tonemap=hable,zscale=primaries=bt709:transfer=bt709:matrix=bt709:range=tv,format=yuv420p10" -c:v prores_ks -qscale:v 4 TonemapCPU.mov

@lextra2
Copy link
Author

lextra2 commented Aug 8, 2022

ffmpeg -y -benchmark -i 0001.mov -map_metadata -1 -c:v libx264 -x264-params "ref=4:keyint=60:scenecut=0" -profile:v high -level:v 4.2 -preset veryslow -crf 12 -vf scale=1920:-1 -pix_fmt nv12 -color_primaries bt709 -color_trc bt709 -colorspace bt709 -color_range tv -an OUTPUT.mkv

Note: Level 4.2 is limited to a maximum of 4 reference frames.

@lextra2
Copy link
Author

lextra2 commented Jul 15, 2023

ffmpeg -y -benchmark -i INPUT.mkv -c:v prores_ks -q:v 4 -vf "dejudder, fps=30000/1001, fieldmatch=order=tff:mode=pcn_ub:combmatch=full, bwdif=mode=0:deint=interlaced, decimate" -an OUTPUT.mkv

@lextra2
Copy link
Author

lextra2 commented Jan 21, 2024

ffmpeg -y -benchmark -i INPUT.mkv -c:v h264_amf -quality balanced -qp_i 32 -qp_p 32 -g 120 -an OUTPUT_AVC_QP32.mkv

460 FPS - 152 MB - 8452 kb/s avg, 21934 kb/s Max
ffmpeg -y -benchmark -i INPUT.mkv -c:v hevc_amf -quality balanced -qp_i 30 -qp_p 30 -g 120 -an OUTPUT_HEVC_QP30.mkv

460 FPS - 155 MB - 8612 kb/s, 26722 kb/s Max
ffmpeg -y -benchmark -i INPUT.mkv -c:v libx264 -x264-params "keyint=120:scenecut=0:nal-hrd=none:filler=0:vbv-maxrate=16000:vbv-bufsize=16000:bitrate=8000:threads=24" -profile:v high -preset medium -an x264.mkv

127 FPS - 143 MB - 7946 kb/s, 18114 kb/s Max

@lextra2
Copy link
Author

lextra2 commented Mar 12, 2024

ffmpeg -y -benchmark -init_hw_device vulkan=GPU -hwaccel vulkan -hwaccel_output_format vulkan -extra_hw_frames 30 -i "C:\Users\Admin\Downloads\New folder\OPM.avs" -filter_hw_device GPU -vf "format=nv12,hwupload,libplacebo=w=iw*2:h=ih*2:downscaler=sinc,hwdownload,format=yuv420p" -c:v hevc_amf -qp_i 18 -qp_p 18 -g 240 -an TEST.mkv

ffmpeg -y -benchmark -init_hw_device vulkan -i "C:\Users\Admin\Downloads\New folder\OPM.avs" -vf "libplacebo=w=iw*2:h=ih*2:upscaler=sinc" -c:v libx264 -preset ultrafast -qp 0 -g 1 -an test1234.mkv

@lextra2
Copy link
Author

lextra2 commented Mar 18, 2024

ffmpeg -y -benchmark -i INPUT.mkv -c:v libx264 -x264-params "ref=4:psy-rd=1,0.15:merange=32:threads=24:lookahead-threads=6:bframes=3:b-pyramid=none:keyint=48:scenecut=0:rc-lookahead=48:crf=19:qcomp=0.75:vbv-maxrate=5000:vbv-bufsize=10000:nal-hrd=none:filler=0:aq-strength=0.8" -preset veryslow -pix_fmt yuv420p -an H264.mkv

@lextra2
Copy link
Author

lextra2 commented Mar 19, 2024

ffmpeg -y -benchmark -i Bleach02.avs -pix_fmt yuv422p10le -c:v prores_ks cut005_48.mkv

ffmpeg -y -benchmark -i cut03.mkv -pix_fmt yuv422p10le -c:v prores_ks -vf mpdecimate,setpts=N/24/TB -vsync vfr cut003.mkv

ffmpeg -y -f concat -i list.txt -c copy CUTS_48.mkv

ffmpeg -y -f concat -i list.txt -c:v prores_ks CUTS_TEST.mkv

ffmpeg -i cut003_48.mkv -vf fps=48000/1001 cut03\%04d.png

ffmpeg -y -r 48 -i cut03\%04d.png -c:v prores_ks -pix_fmt yuv422p10le cut03_FIXED_48.mkv

list.txt

file 'cut01_FIXED_48.mkv'
file 'cut02_FIXED_48.mkv'
file 'cut03_FIXED_48.mkv'
file 'cut04_FIXED_48.mkv'
file 'cut05_FIXED_48.mkv'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment