Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
vp9 [2020/05/24 03:52]
beandog
vp9 [2023/04/19 21:53]
beandog [ffmpeg]
Line 1: Line 1:
 ====== VP9 ====== ====== 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://​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]]   * [[https://​trac.ffmpeg.org/​wiki/​Encode/​VP9|FFmpeg and VP9 Encoding Guide]]
   * [[http://​ffmpeg.org/​ffmpeg-all.html#​libvpx|ffmpeg libvpx documentation]]   * [[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=<​arg>''​ 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 sets a default CRF of 32.
 +
 +<​code>​
 +ffmpeg -loglevel debug -i sample.y4m -vcodec libvpx-vp9 sample.webm
 +</​code>​
 +
 +Relevant output:
 +
 +<​code>​
 +[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
 +</​code>​

Navigation