====== VP9 ====== * [[https://github.com/webmproject/libvpx/tags|GitHub downloads]] * [[https://sites.google.com/a/webmproject.org/wiki/ffmpeg/vp9-encoding-guide|webm wiki: VP9 Encoding Guide]] * [[https://trac.ffmpeg.org/wiki/Encode/VP9|FFmpeg and VP9 Encoding Guide]] * [[http://ffmpeg.org/ffmpeg-all.html#libvpx|ffmpeg libvpx documentation]] * [[https://developers.google.com/media/vp9/bitrate-modes|VP9 Bitrate Modes in Detail]] - Google's * [[http://wiki.webmproject.org/vp9/vp9-tips|VP9 Tips - Encoding Modes and Recommended Command Line Options]] - upstream's wiki * [[https://slhck.info/video/2017/02/24/crf-guide.html|CRF Guide (Constant Rate Factor in x264, x265 and libvpx)]] * [[https://github.com/HandBrake/HandBrake-docs/tree/master/source/docs/en/latest/technical|HandBrake github repo of documentation]] ==== vpxenc ==== By default, ''vpxenc'' will use 2-pass method for encoding. To gain a CRF-type result, use ''--end-usage=cq --cq-level='' format, and then a 1-pass encode ''--passes=1'' Using this, ''vpxenc'' uses a default CQ of 32. I get different encoding times on multiple runs, even though it's producing the exact same files, so watch out for that. ==== HandBrake ==== By default, HandBrake uses a CQ of 22. HandBrake will only use 2-passes if a bitrate is set as well. ==== ffmpeg ==== You can use ''ffmpeg'' to get a deep level of output to see what it's doing, it uses the default CRF of 32: ffmpeg -loglevel debug -i sample.y4m -vcodec libvpx-vp9 sample.webm Relevant output: [libvpx-vp9 @ 0x55a6e613e3c0] VP8E_SET_CPUUSED: 1 [libvpx-vp9 @ 0x55a6e613e3c0] VP8E_SET_ARNR_MAXFRAMES: 0 [libvpx-vp9 @ 0x55a6e613e3c0] VP8E_SET_ARNR_STRENGTH: 3 [libvpx-vp9 @ 0x55a6e613e3c0] VP8E_SET_ARNR_TYPE: 3 [libvpx-vp9 @ 0x55a6e613e3c0] VP8E_SET_STATIC_THRESHOLD: 0 [libvpx-vp9 @ 0x55a6e613e3c0] VP8E_SET_CQ_LEVEL: 32 [libvpx-vp9 @ 0x55a6e613e3c0] VP9E_SET_COLOR_SPACE: 0 [libvpx-vp9 @ 0x55a6e613e3c0] VP9E_SET_COLOR_RANGE: 0 [libvpx-vp9 @ 0x55a6e613e3c0] VP9E_SET_TARGET_LEVEL: 255