VPXENC(1)
π NAME π
vpxenc β the VP8 and VP9 video codec encoding tool. she takes your frames and she makes video out of them and she does it flawlessly. this is the vpxenc(1) page from the General Commands Manual, and bestie we are going through every single flag together, no skimming, no skipping the boring ones, because that's the vibe. π
πΈ SYNOPSIS πΈ
vpxenc <options> -o dst_filename src_filename
that's the whole shape of it: options go in, -o says where the output goes, and the last thing you hand her is the source file. clean. iconic. no notes. β¨
π OPTIONS π
-D,--debugβ debug mode, and what it does is make the output deterministic. same in, same bytes out, every single time. queen behavior honestly.-o <arg>,--output=<arg>β the output filename, aka where your little masterpiece lands--codec=<arg>β which codec to use-p <arg>,--passes=<arg>β how many passes (1 or 2)--pass=<arg>β which pass you're executing right now (1 or 2)--fpf=<arg>β first pass statistics file name--limit=<arg>β stop encoding after n input frames--skip=<arg>β skip the first n input frames-d <arg>,--deadline=<arg>β deadline per frame, in usec--bestβ use the Best Quality Deadline--goodβ use the Good Quality Deadline--rtβ use the Realtime Quality Deadline-q,--quietβ do not print encode progress (silent mode, mysterious mode π«Ά)-v,--verboseβ show encoder parameters--psnrβ show PSNR in the status line--webmβ output WebM (this is the default when WebM IO is enabled)--ivfβ output IVF-P,--output-partitionsβ makes the encoder output partitions. Requires IVF output! (that exclamation mark is hers, not mine, respect it)--q-hist=<arg>β show quantizer histogram (n-buckets)--rate-hist=<arg>β show rate histogram (n-buckets)--disable-warningsβ disable warnings about potentially incorrect encode settings.-y,--disable-warning-promptβ display warnings, but do not prompt the user to continue.--test-decode=<arg>β test encode/decode mismatchoff,fatal,warn
π§ Encoder Global Options π§
--yv12β input file is YV12--i420β input file is I420 (the default, she's the main character)--i422β input file is I422--i444β input file is I444--i440β input file is I440-u <arg>,--usage=<arg>β usage profile number to use-t <arg>,--threads=<arg>β max number of threads to use--profile=<arg>β bitstream profile number to use-w <arg>,--width=<arg>β frame width-h <arg>,--height=<arg>β frame height--stereo-mode=<arg>β stereo 3D video formatmono,left-right,bottom-top,top-bottom,right-left
--timebase=<arg>β output timestamp precision (fractional seconds)--fps=<arg>β stream frame rate, given as rate/scale--error-resilient=<arg>β enable error resiliency features--lag-in-frames=<arg>β max number of frames to lag
πΈ Rate Control Options πΈ
--drop-frame=<arg>β temporal resampling threshold (buf %)--resize-allowed=<arg>β spatial resampling enabled (bool)--resize-width=<arg>β width of encoded frame--resize-height=<arg>β height of encoded frame--resize-up=<arg>β upscale threshold (buf %)--resize-down=<arg>β downscale threshold (buf %)--end-usage=<arg>β rate control modevbr,cbr,cq,q
--target-bitrate=<arg>β bitrate (kbps)--min-q=<arg>β minimum (best) quantizer--max-q=<arg>β maximum (worst) quantizer--undershoot-pct=<arg>β datarate undershoot (min) target (%)--overshoot-pct=<arg>β datarate overshoot (max) target (%)--buf-sz=<arg>β client buffer size (ms)--buf-initial-sz=<arg>β client initial buffer size (ms)--buf-optimal-sz=<arg>β client optimal buffer size (ms)
π Twopass Rate Control Options π
--bias-pct=<arg>β CBR/VBR bias (0=CBR, 100=VBR)--minsection-pct=<arg>β GOP min bitrate (% of target)--maxsection-pct=<arg>β GOP max bitrate (% of target)
π Keyframe Placement Options π
--kf-min-dist=<arg>β minimum keyframe interval (frames)--kf-max-dist=<arg>β maximum keyframe interval (frames)--disable-kfβ disable keyframe placement
π VP8 Specific Options π
--cpu-used=<arg>β CPU Used (-16..16)--auto-alt-ref=<arg>β enable automatic alt reference frames--noise-sensitivity=<arg>β noise sensitivity (frames to blur)--sharpness=<arg>β loop filter sharpness (0..7)--static-thresh=<arg>β motion detection threshold--token-parts=<arg>β number of token partitions to use, log2--arnr-maxframes=<arg>β AltRef max frames (0..15)--arnr-strength=<arg>β AltRef filter strength (0..6)--arnr-type=<arg>β AltRef type--tune=<arg>β material to favorpsnr,ssim
--cq-level=<arg>β Constant/Constrained Quality level--max-intra-rate=<arg>β max I-frame bitrate (pct)--screen-content-mode=<argβ screen content mode
okay so yes, that<argis missing its closing>in the original page. i am simply the messenger π keeping it exactly as it is because we do not "fix" things here.
π VP9 Specific Options π
--cpu-used=<arg>β CPU Used (-8..8)--auto-alt-ref=<arg>β enable automatic alt reference frames--sharpness=<arg>β loop filter sharpness (0..7)--static-thresh=<arg>β motion detection threshold--tile-columns=<arg>β number of tile columns to use, log2--tile-rows=<arg>β number of tile rows to use, log2 (set to 0 while threads > 1)--arnr-maxframes=<arg>β AltRef max frames (0..15)--arnr-strength=<arg>β AltRef filter strength (0..6)--arnr-type=<arg>β AltRef type--tune=<arg>β material to favorpsnr,ssim
--cq-level=<arg>β Constant/Constrained Quality level--max-intra-rate=<arg>β max I-frame bitrate (pct)--max-inter-rate=<arg>β max P-frame bitrate (pct)--gf-cbr-boost=<arg>β boost for Golden Frame in CBR mode (pct)--lossless=<arg>β lossless mode (0: false (default), 1: true)--frame-parallel=<arg>β enable frame parallel decodability features--aq-mode=<arg>β adaptive quantization mode (0: off (default), 1: variance 2: complexity, 3: cyclic refresh, 4: equator360)--frame-boost=<arg>β enable frame periodic boost (0: off (default), 1: on)--noise-sensitivity=<arg>β noise sensitivity (frames to blur)--tune-content=<arg>β tune content typedefault,screen
--color-space=<arg>β the color space of input content:unknown,bt601,bt709,smpte170,smpte240,bt2020,reserved,sRGB
--min-gf-interval=<arg>β min gf/arf frame interval (default 0, indicating in-built behavior)--max-gf-interval=<arg>β max gf/arf frame interval (default 0, indicating in-built behavior)--target-level=<arg>β target level (255: off (default); 0: only keep level stats; 10: level 1.0; 11: level 1.1; ... 62: level 6.2)
β° Stream timebase (--timebase) β°
the precision you want for timestamps in the output, expressed in fractional seconds. the default is 1/1000.
π¬ Included encoders π¬
vp8β WebM Project VP8 Encoder v1.6.0vp9β WebM Project VP9 Encoder v1.6.0 (the default, obviously)
use --codec to switch to a non-default encoder.
okay bestie. real talk. the original page literally dumps the entire option list a second time right here. i'm not being dramatic, i'm not padding, that is genuinely what's in the file. and because the one rule is that i keep every single detail, we are doing it again. all of it. i'm as surprised as you are. π
π« OPTIONS π« (take two, and yes she's serious)
-D,--debugβ debug mode (makes output deterministic)-o <arg>,--output=<arg>β output filename--codec=<arg>β codec to use-p <arg>,--passes=<arg>β number of passes (1/2)--pass=<arg>β pass to execute (1/2)--fpf=<arg>β first pass statistics file name--limit=<arg>β stop encoding after n input frames--skip=<arg>β skip the first n input frames-d <arg>,--deadline=<arg>β deadline per frame (usec)--bestβ use Best Quality Deadline--goodβ use Good Quality Deadline--rtβ use Realtime Quality Deadline-q,--quietβ do not print encode progress-v,--verboseβ show encoder parameters--psnrβ show PSNR in status line--webmβ output WebM (default when WebM IO is enabled)--ivfβ output IVF-P,--output-partitionsβ makes encoder output partitions. Requires IVF output!--q-hist=<arg>β show quantizer histogram (n-buckets)--rate-hist=<arg>β show rate histogram (n-buckets)--disable-warningsβ disable warnings about potentially incorrect encode settings.-y,--disable-warning-promptβ display warnings, but do not prompt user to continue.--test-decode=<arg>β test encode/decode mismatchoff,fatal,warn
π§ Encoder Global Options π§
--yv12β input file is YV12--i420β input file is I420 (default)--i422β input file is I422--i444β input file is I444--i440β input file is I440-u <arg>,--usage=<arg>β usage profile number to use-t <arg>,--threads=<arg>β max number of threads to use--profile=<arg>β bitstream profile number to use-w <arg>,--width=<arg>β frame width-h <arg>,--height=<arg>β frame height--stereo-mode=<arg>β stereo 3D video formatmono,left-right,bottom-top,top-bottom,right-left
--timebase=<arg>β output timestamp precision (fractional seconds)--fps=<arg>β stream frame rate (rate/scale)--error-resilient=<arg>β enable error resiliency features--lag-in-frames=<arg>β max number of frames to lag
πΈ Rate Control Options πΈ
--drop-frame=<arg>β temporal resampling threshold (buf %)--resize-allowed=<arg>β spatial resampling enabled (bool)--resize-width=<arg>β width of encoded frame--resize-height=<arg>β height of encoded frame--resize-up=<arg>β upscale threshold (buf %)--resize-down=<arg>β downscale threshold (buf %)--end-usage=<arg>β rate control modevbr,cbr,cq,q
--target-bitrate=<arg>β bitrate (kbps)--min-q=<arg>β minimum (best) quantizer--max-q=<arg>β maximum (worst) quantizer--undershoot-pct=<arg>β datarate undershoot (min) target (%)--overshoot-pct=<arg>β datarate overshoot (max) target (%)--buf-sz=<arg>β client buffer size (ms)--buf-initial-sz=<arg>β client initial buffer size (ms)--buf-optimal-sz=<arg>β client optimal buffer size (ms)
π Twopass Rate Control Options π
--bias-pct=<arg>β CBR/VBR bias (0=CBR, 100=VBR)--minsection-pct=<arg>β GOP min bitrate (% of target)--maxsection-pct=<arg>β GOP max bitrate (% of target)
π Keyframe Placement Options π
--kf-min-dist=<arg>β minimum keyframe interval (frames)--kf-max-dist=<arg>β maximum keyframe interval (frames)--disable-kfβ turns OFF keyframe placement. no keyframes for you bestie π
β¨ VP8 Specific Options β¨
--cpu-used=<arg>β CPU Used, range is-16..16. that's the whole vibe, no notes.--auto-alt-ref=<arg>β turns on automatic alt reference frames β¨--noise-sensitivity=<arg>β noise sensitivity, measured in frames to blur--sharpness=<arg>β loop filter sharpness,0..7--static-thresh=<arg>β motion detection threshold--token-parts=<arg>β how many token partitions to use, log2--arnr-maxframes=<arg>β AltRef max frames,0..15--arnr-strength=<arg>β AltRef filter strength,0..6--arnr-type=<arg>β AltRef type--tune=<arg>β which material to favor πpsnr,ssim
--cq-level=<arg>β Constant/Constrained Quality level--max-intra-rate=<arg>β max I-frame bitrate, in pct--screen-content-mode=<argβ screen content mode
πΈ VP9 Specific Options πΈ
--cpu-used=<arg>β CPU Used, range is-8..8. yes it's different from VP8, don't @ me π--auto-alt-ref=<arg>β turns on automatic alt reference frames β¨--sharpness=<arg>β loop filter sharpness,0..7--static-thresh=<arg>β motion detection threshold--tile-columns=<arg>β how many tile columns to use, log2--tile-rows=<arg>β how many tile rows to use, log2 (set to0while threads > 1)--arnr-maxframes=<arg>β AltRef max frames,0..15--arnr-strength=<arg>β AltRef filter strength,0..6--arnr-type=<arg>β AltRef type--tune=<arg>β which material to favor πpsnr,ssim
--cq-level=<arg>β Constant/Constrained Quality level--max-intra-rate=<arg>β max I-frame bitrate, in pct--max-inter-rate=<arg>β max P-frame bitrate, in pct--gf-cbr-boost=<arg>β boost for Golden Frame in CBR mode, in pct--lossless=<arg>β lossless mode:0: false (default),1: true--frame-parallel=<arg>β enables frame parallel decodability features--aq-mode=<arg>β adaptive quantization mode:0: off (default),1: variance,2: complexity,3: cyclic refresh,4: equator360--frame-boost=<arg>β enables frame periodic boost:0: off (default),1: on--noise-sensitivity=<arg>β noise sensitivity, measured in frames to blur--tune-content=<arg>β tune content type πdefault,screen
--color-space=<arg>β the color space of the input content:unknown,bt601,bt709,smpte170,smpte240,bt2020,reserved,sRGB
--min-gf-interval=<arg>β min gf/arf frame interval (default0, indicating in-built behavior)--max-gf-interval=<arg>β max gf/arf frame interval (default0, indicating in-built behavior)--target-level=<arg>β target level:255: off (default);0: only keep level stats;10: level 1.0;11: level 1.1; ...62: level 6.2
π¦ Stream timebase (--timebase) π¦
the desired precision of timestamps in the output, expressed in fractional seconds. default is 1/1000. so specific, so iconic π
π Included encoders π
vp8β WebM Project VP8 Encoder v1.6.0vp9β WebM Project VP9 Encoder v1.6.0 (default)
Use --codec to switch to a non-default encoder. lowkey the easiest glow-up ever fr fr β¨
and that's the whole page bestie, you ate π«Ά this one's the August 2016 edition of VPXENC(1) β go forth and encode, no cap π
π
π¦ where this page comes from
- debian bookworm: vpx-tools 1.12.0-1+deb12u5 Β· BSD-3-Clause
- debian trixie: vpx-tools 1.15.0-2.1+deb13u1 Β· BSD-3-Clause
- ubuntu jammy: vpx-tools 1.11.0-2ubuntu2 Β· BSD-3-Clause
- ubuntu jammy: vpx-tools 1.11.0-2ubuntu2.5 Β· BSD-3-Clause
- ubuntu noble: vpx-tools 1.14.0-1ubuntu2 Β· BSD-3-Clause
- ubuntu noble: vpx-tools 1.14.0-1ubuntu2.3 Β· BSD-3-Clause
- ubuntu questing: vpx-tools 1.15.0-2.1build1
- ubuntu questing: vpx-tools 1.15.0-2.1ubuntu0.1
- ubuntu resolute: vpx-tools 1.16.0-3 Β· BSD-3-Clause
- ubuntu stonking: vpx-tools 1.16.0-3 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms