====== VP9 ====== siehe auch [[::Filmwandler]] __Ein Film aus dem Video-Codec ''VP9'' und dem Audio-Codec ''Vorbis'' oder ''Opus'' im Container ''WebM'' ist HTML5-kompatibel und kann somit in jedem vernünftigen Browser abgespielt werden. Der Video-Codec ''VP9'' wird u.a. auch von [[https://www.youtube.com|YouTube]] verwendet.__ Leider kann der Container ''WebM'' nur Untertitel im Text-Format beinhalten... Hilfe zu VP9-Kodec: ffmpeg -h encoder=libvpx-vp9 ein einfaches Kommando: ffmpeg -i input.avi -map 0:v -c:v libvpx-vp9 -crf 32 -b:v 0 -c:a libvorbis -q:a 6 -map 0:a:0 -c:s copy -f matroska film.mkv ffmpeg -i input.avi -map 0:v -c:v libvpx-vp9 -crf 32 -b:v 0 -cpu-used 4 -speed 4 -sharpness 0 -tune ssim -aq-mode 1 -row-mt 1 -c:a libvorbis -q:a 6 -map 0:a:0 -c:s copy -f matroska film.mkv HDR in SDR umwandeln: ffmpeg -i input.avi -pix_fmt yuv420p10le -color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 -map 0:v -c:v libvpx-vp9 -crf 32 -b:v 0 -c:a libvorbis -q:a 6 -map 0:a:0 -c:s copy -f matroska film.mkv ffmpeg -i input.avi -pix_fmt yuv420p10le -color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 -map 0:v -c:v libvpx-vp9 -crf 32 -b:v 0 -cpu-used 4 -speed 4 -sharpness 0 -tune ssim -aq-mode 1 -row-mt 1 -c:a libvorbis -q:a 6 -map 0:a:0 -c:s copy -f matroska film.mkv einen Film im Zeilensprungverfahren in den progressiven Bildaufbau umstellen (ist sehr langsam): ffmpeg -i input.avi -map 0:v -c:v libvpx-vp9 -crf 32 -b:v 0 -vf yadif=1/3,mcdeint=mode=extra_slow,scale=768x576,pad='max(iw\,ih*(4/3)):ow/(4/3):(ow-iw)/2:(oh-ih)/2:black',scale=744x558,setdar='4/3' -g 300 -keyint_min 300 -c:a libvorbis -q:a 6 -map 0:a:0 -c:s copy -disposition:a:0 default -metadata title="Filmname" -metadata description='Filmbeschreibung' -f matroska film.mkv ffmpeg -i input.avi -map 0:v -c:v libvpx-vp9 -crf 32 -b:v 0 -cpu-used 4 -speed 4 -sharpness 0 -tune ssim -aq-mode 1 -row-mt 1 -vf yadif=1/3,mcdeint=mode=extra_slow,scale=768x576,pad='max(iw\,ih*(4/3)):ow/(4/3):(ow-iw)/2:(oh-ih)/2:black',scale=744x558,setdar='4/3' -g 300 -keyint_min 300 -c:a libvorbis -q:a 6 -map 0:a:0 -c:s copy -disposition:a:0 default -metadata title="Filmname" -metadata description='Filmbeschreibung' -f matroska film.mkv einen kompletten 16/9-Film scannen bevor mit dem kodieren begonnen wird: ffmpeg -probesize 9223372036854M -analyzeduration 9223372036854M -fflags +genpts -i film.avi -map 0:v -c:v libvpx-vp9 -crf 32 -b:v 0 -vf scale=1024x576,pad='max(iw\,ih*(16/9)):ow/(16/9):(ow-iw)/2:(oh-ih)/2:black',scale=858x482,setdar='16/9' -g 300 -keyint_min 300 -c:a libvorbis -q:a 6 -map 0:a:0 -c:s copy -disposition:a:0 default -metadata title="Filmname" -metadata description='Filmbeschreibung' -f matroska film.mkv ffmpeg -probesize 9223372036854M -analyzeduration 9223372036854M -fflags +genpts -i film.avi -map 0:v -c:v libvpx-vp9 -crf 32 -b:v 0 -cpu-used 4 -speed 4 -sharpness 0 -tune ssim -aq-mode 1 -row-mt 1 -vf scale=1024x576,pad='max(iw\,ih*(16/9)):ow/(16/9):(ow-iw)/2:(oh-ih)/2:black',scale=858x482,setdar='16/9' -g 300 -keyint_min 300 -c:a libvorbis -q:a 6 -map 0:a:0 -c:s copy -disposition:a:0 default -metadata title="Filmname" -metadata description='Filmbeschreibung' -f matroska film.mkv ===== SDR vs. HDR ===== # SDR (8 Bit) ffmpeg -i Film.mkv -profile:v 0 -c:v libvpx-vp9 ... [[https://trac.ffmpeg.org/wiki/Encode/VP9#twopass|FFmpeg and VP9 Encoding Guide]] => ''Two-pass is the recommended encoding method for libvpx-vp9 as some quality-enhancing encoder features are only available in 2-pass mode.'' # SDR (8 Bit) mit konstanter Qualität und 2-Pass-Codierung, das sollte man mal testen... ffmpeg -i Film.mkv -c:v libvpx-vp9 -crf 32 -b:v 0 -color_range 1 -profile:v 0 -pass 1 -an -sn -f null /dev/null && \ ffmpeg -i Film.mkv -c:v libvpx-vp9 -crf 32 -b:v 0 -color_range 1 -profile:v 0 -pass 2 strobe_scientist_crf32.webm rm -f ffmpeg2pass-0.log HDR (10/12 Bit) erfordert eine 2-Pass-Codierung! [[https://developers.google.com/media/vp9/hdr-encoding?hl=de|VP9 HDR-Codierung]] => ''HDR erfordert eine 2-Pass-Codierung. In diesem Beispiel wird der erste Durchlauf an /dev/null ausgegeben und während der zweite Durchlauf im Arbeitsspeicher verarbeitet wird.'' # HDR-Codierung nach SMPTE 2084 (PQ EOTF) ffmpeg -i Film.mkv -b:v 18000000 -pass 1 -pix_fmt yuv420p10le -color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 -maxrate 26800000 -minrate 8040000 -profile:v 2 -c:v libvpx-vp9 -f null /dev/null && \ ffmpeg -i Film.mkv -b:v 18000000 -pass 2 -pix_fmt yuv420p10le -color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 -maxrate 26800000 -minrate 8040000 -profile:v 2 -c:v libvpx-vp9 2pass_HDR_Film_18Mbps.webm rm -f ffmpeg2pass-0.log # Beispiel 18 Mbit/s 4K 2-Pass ffmpeg -y -report -i Film.mkv -b:v 18000000 -speed 4 -pass 1 -pix_fmt yuv420p10le -color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 -maxrate 20800000 -minrate 15040000 -profile:v 2 -vcodec libvpx-vp9 -f null /dev/null && \ ffmpeg -y -report -i Film.mkv -b:v 18000000 -pass 2 -pix_fmt yuv420p10le -color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 -maxrate 20800000 -minrate 15040000 -profile:v 2 -vcodec libvpx-vp9 2pass_HDR_Film_18Mbps-static.webm rm -f ffmpeg2pass-0.log # HDR (10/12 Bit) mit konstanter Qualität und 2-Pass-Codierung, das sollte man mal testen... ffmpeg -i Film.mkv -c:v libvpx-vp9 -crf 32 -b:v 0 -pix_fmt yuv420p10le -color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 -profile:v 2 -pass 1 -an -sn -f null /dev/null && \ ffmpeg -i Film.mkv -c:v libvpx-vp9 -crf 32 -b:v 0 -pix_fmt yuv420p10le -color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 -profile:v 2 -pass 2 2pass_HDR_Film_crf32.webm rm -f ffmpeg2pass-0.log ffmpeg -i Film.mkv -c:v libvpx-vp9 -crf 32 -b:v 0 -color_primaries 9 -color_range 1 -profile:v 2 -pass 1 -an -sn -f null /dev/null && \ ffmpeg -i Film.mkv -c:v libvpx-vp9 -crf 32 -b:v 0 -color_primaries 9 -color_range 1 -profile:v 2 -pass 2 2pass_HDR_Film_crf32.webm rm -f ffmpeg2pass-0.log ggf. sollte man überlegen, HDR-Material in AV1 zu transkodieren...