Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Examples given are for 2-pass VP9 encoding with FFMpeg. Ensure that your FFMpeg has been built with libvpx support.
- VOD Recommended Settings
- ffmpeg -i <source> -c:v libvpx-vp9 -pass 1 -b:v 1000K -threads 8 -speed 4 \
- -tile-columns 6 -frame-parallel 1 \
- -an -f webm /dev/null
- ffmpeg -i <source> -c:v libvpx-vp9 -pass 2 -b:v 1000K -threads 8 -speed 1 \
- -tile-columns 6 -frame-parallel 1 -auto-alt-ref 1 -lag-in-frames 25 \
- -c:a libopus -b:a 64k -f webm out.webm
- c:v libvpx-vp9 tells FFmpeg to encode the video in VP9.
- c:a libopus tells FFmpeg to encode the audio in Opus.
- b:v 1000K tells FFmpeg to encode the video with a target of 1000 kilobits.
- b:a 64k tells FFmpeg to encode the audio with a target of 64 kilobits.
- Most of the current VP9 decoders use tile-based, multi-threaded decoding. In order for the decoders to take advantage of multiple cores, the encoder must set tile-columns and frame-parallel.
- Setting auto-alt-ref and lag-in-frames >= 12 will turn on VP9's alt-ref frames, a VP9 feature that enhances quality.
- speed 4 tells VP9 to encode really fast, sacrificing quality. Useful to speed up the first pass.
- speed 1 is a good speed vs. quality compromise. Produces output quality typically very close to speed 0, but usually encodes much faster.
- Multi-threaded encoding may be used if -threads > 1 and -tile-columns > 0.
- DASH Recommended Settings
- See http://wiki.webmproject.org/adaptive-streaming/instructions-to-playback-adaptive-webm-using-dash for WebM DASH settings.
- Best Quality (Slowest) Recommended Settings
- ffmpeg -i <source> -c:v libvpx-vp9 -pass 1 -b:v 1000K -threads 1 -speed 4 \
- -tile-columns 0 -frame-parallel 0 \
- -g 9999 -aq-mode 0 -an -f webm /dev/null
- ffmpeg -i <source> -c:v libvpx-vp9 -pass 2 -b:v 1000K -threads 1 -speed 0 \
- -tile-columns 0 -frame-parallel 0 -auto-alt-ref 1 -lag-in-frames 25 \
- -g 9999 -aq-mode 0 -c:a libopus -b:a 64k -f webm out.webm
- tile-columns 0, frame-parallel 0: Turning off tile-columns and frame-parallel should give a small bump in quality, but will most likely hamper decode performance severely.
- Constant Quality Recommended Settings
- Objective is to achieve a constant (perceptual) quality level without regard to bitrate.
- (Note that Constant Quality differs from Constrained Quality, described below.)
- ffmpeg -i <source> -c:v libvpx-vp9 -pass 1 -b:v 0 -crf 33 -threads 8 -speed 4 \
- -tile-columns 6 -frame-parallel 1 \
- -an -f webm /dev/null
- ffmpeg -i <source> -c:v libvpx-vp9 -pass 2 -b:v 0 -crf 33 -threads 8 -speed 2 \
- -tile-columns 6 -frame-parallel 1 -auto-alt-ref 1 -lag-in-frames 25 \
- -c:a libopus -b:a 64k -f webm out.webm
- crf is the quality value (0-63 for VP9). To trigger this mode, you must use a combination of crf <q-value> and b:v 0. bv MUST be 0.
- Constrained Quality Recommended Settings
- Objective is to achieve a constant (perceptual) quality level as long as the bitrate achieved is below a specified upper bound. Constrained Quality is useful for bulk encoding large sets of videos in a generally consistent fashion.
- ffmpeg -i <source> -c:v libvpx-vp9 -pass 1 -b:v 1400K -crf 23 -threads 8 -speed 4 \
- -tile-columns 6 -frame-parallel 1 \
- -an -f webm /dev/null
- ffmpeg -i <source> -c:v libvpx-vp9 -pass 2 -b:v 1400K -crf 23 -threads 8 -speed 2 \
- -tile-columns 6 -frame-parallel 1 -auto-alt-ref 1 -lag-in-frames 25 \
- -c:a libopus -b:a 64k -f webm out.webm
- The quality desired is provided as the crf <q-value> parameter and the bitrate upper bound is provided as the b:v <bitrate> parameter, where bitrate MUST be non-zero.
- Both crf <q-value> and b:v <bitrate> MUST be provided. In this mode, bitrate control will kick in for difficult videos, where the quality specified cannot be achieved within the given bitrate.
- For easy videos, this mode behaves exactly like the constant quality mode, and the actual bitrate achieved can be much lower than the specified bitrate in the b:v parameter.
- One caveat in FFMpeg is that if you do not provide the b:v parameter, FFMpeg will assume a default target bitrate of 256K -- so the constrained quality mode will be triggered with a potentially very low target bitrate.
- ==============================================================================
- ==============================================================================
- ==============================================================================
- LibAOM Encoding (an early not yet generally avialable codec)
- wiki:
- Encode
- /
- AV1
- Up-vote+1Down-voteUpStart PageIndexHistory
- libaom AV1 Encoding Guide
- Contents
- Constant Quality
- Constrained Quality
- Two-Pass
- Average Bitrate (ABR)
- Controlling Speed / Quality
- HDR
- More Info
- libaom-av1 is the AOMedia video encoder for โAV1, an open source & royalty-free video codec. libaom-av1 can save about 30% bitrate compared to VP9 and H.265 / HEVC, and about 50% over H.264, while retaining the same visual quality.
- To install FFmpeg with support for libaom-av1, look at the Compilation Guides and compile FFmpeg with the --enable-libaom option.
- libaom offers the following rate-control modes which determine the quality and file size obtained:
- Constant quality
- Constrained quality
- 2-pass average bitrate
- 1-pass average bitrate
- For a list of options, run ffmpeg -h encoder=libaom-av1.
- Note: Users of libaom older than version 2.0.0 will need to add -strict experimental (or the alias -strict -2).
- Constant Quality
- libaom-av1 has a constant quality (CQ) mode (like CRF in x264 and x265) which will ensure that every frame gets the number of bits it deserves to achieve a certain (perceptual) quality level, rather than encoding each frame to meet a bit rate target. This results in better overall quality. If you do not need to achieve a fixed target file size, this should be your method of choice.
- To trigger this mode, you must use a combination of -crf and -b:v 0. -b:v MUST be 0.
- ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -b:v 0 av1_test.mkv
- The CRF value can be from 0โ63. Lower values mean better quality and greater file size.
- Constrained Quality
- libaom-av1 also has a constrained quality (CQ) mode that will ensure that a constant (perceptual) quality is reached while keeping the bitrate below a specified upper bound or within a certain bound. This method is useful for bulk encoding videos in a generally consistent fashion.
- ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -b:v 2000k output.mkv
- The quality is determined by the -crf, and the bitrate limit by the -b:v where the bitrate MUST be non-zero.
- You can also specify a minimum and maximum bitrate instead of a quality target:
- ffmpeg -i input.mp4 -c:v libaom-av1 -minrate 500k -b:v 2000k -maxrate 2500k output.mp4
- Note: When muxing into MP4, you may want to add -movflags +faststart to the output parameters if the intended use for the resulting file is streaming.
- Two-Pass
- In order to create more efficient encodes when a particular target bitrate should be reached, you should choose two-pass encoding. For two-pass, you need to run ffmpeg twice, with almost the same settings, except for:
- In pass 1 and 2, use the -pass 1 and -pass 2 options, respectively.
- In pass 1, output to a null file descriptor, not an actual file. (This will generate a logfile that ffmpeg needs for the second pass.)
- In pass 1, you can leave audio out by specifying -an.
- ffmpeg -i input.mp4 -c:v libaom-av1 -b:v 2M -pass 1 -an -f null /dev/null && \
- ffmpeg -i input.mp4 -c:v libaom-av1 -b:v 2M -pass 2 -c:a libopus output.mkv
- Note: Windows users should use NUL instead of /dev/null and ^ instead of \.
- Average Bitrate (ABR)
- libaom-av1 also offers a simple "Average Bitrate" or "Target Bitrate" mode. In this mode, it will simply try to reach the specified bit rate on average, e.g. 2 MBit/s.
- ffmpeg -i input.mp4 -c:v libaom-av1 -b:v 2M output.mkv
- Use this option only if file size and encoding time are more important factors than quality alone. Otherwise, use one of the other rate control methods described above.
- Controlling Speed / Quality
- -cpu-used sets how efficient the compression will be. Default is 1. Lower values mean slower encoding with better quality, and vice-versa.
- -row-mt 1 enables row-based multi-threading which maximizes CPU usage. To enable fast decoding performance, also add tiles (i.e. -tiles 4x1 or -tiles 2x2 for 4 tiles). Enabling row-mt is only faster when the CPU has more threads than the number of encoded tiles.
- HDR
- When encoding in HDR it's necessary to pass through color information; -colorspace, -color_trc and -color_primaries. For example, Youtube HDR uses
- -colorspace bt2020nc -color_trc smpte2084 -color_primaries bt2020
- More Info
- More info about AV1 can be found here:
- โNwgat's AOMedia's AV1 Codec Overview
Add Comment
Please, Sign In to add comment