====== VP8 ====== * [[https://www.webmproject.org/docs/encoder-parameters/|VP8 Encode Parameter Guide]] * [[https://scholarworks.rit.edu/cgi/viewcontent.cgi?article=4188&context=theses|An Analysis of VP8, a new video codec for the web]] * [[http://wiki.webmproject.org/ffmpeg|webm wiki: FFmpeg VP8 Encoding Options]] * [[https://trac.ffmpeg.org/wiki/Encode/VP8|ffmpeg wiki: Encode VP8]] * [[http://ffmpeg.org/ffmpeg-all.html#libvpx|ffmpeg libvpx documentation]] ==== Notes ==== Both VP8 and [[VP9]] are a bit confusing on how to get good encodes related to specific levels of quality, when using the documentation and ''vpxenc'' help output as references. In it's simplest approach, if using ''vpxenc'', use ''max-q'' as the target CRF -- the encoder won't drop quality below that level (starts at 0, ends at 63). For ''ffmpeg'', use ''-crf'' with your number and ''-b:v 0'' is required. For HandBrake, use ''-q'' with your CRF. I can't tell from docs or the code if it's passing anything about min-q and max-q to the encoder, but I don't think it is. I think it's using libavcodec to do crf=X and then b:v of 0. ==== Encoding Quality ==== With the defaults, vpxenc will create low quality encodes, its bitrate is too low. It will have to be bumped up to get some good quality. SETTING crf and b:v 0 only works on VP9, DESPITE what the ffmpeg docs say. When using ffmpeg, pass ''-b 0'' (bitrate 0) so that it doesn't limit bitrate. Also use a CRF. For very high quality encodes, I'd say around 6 to 8. ffmpeg -i video.y4m -vcodec libvpx -crf 6 -b:v 0 -y video.mkv HandBrake's default CRF for VP8 is 22. HandBrakeCLI -i video.y4m -e VP8 -q 18 -o video.mkv