From b33f2677290bbbb6588ed1abce8f97fba4ec5b0c Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Wed, 17 May 2017 20:16:04 +0200 Subject: Vary vp8 speed based on height. --- bin/encodevideo+loop+stream | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'bin/encodevideo+loop+stream') diff --git a/bin/encodevideo+loop+stream b/bin/encodevideo+loop+stream index b0c5c4c..8a438f7 100755 --- a/bin/encodevideo+loop+stream +++ b/bin/encodevideo+loop+stream @@ -16,16 +16,17 @@ FIRSTPORT=${2:-5002} # even number - next 3 ports used too # TODO: resolve this or resize based on it HEIGHT=360 -# TODO: Vary vpx quality based on height -SPEED_VP8=15 - -# inspired by Apple HLS recommendations - if [ $HEIGHT -le 234 ]; then VBITRATE=145000; -elif [ $HEIGHT -le 270 ]; then VBITRATE=365000; -elif [ $HEIGHT -le 360 ]; then VBITRATE=730000; -elif [ $HEIGHT -le 432 ]; then VBITRATE=1100000; -elif [ $HEIGHT -le 540 ]; then VBITRATE=2000000; -elif [ $HEIGHT -le 720 ]; then VBITRATE=3000000; +# * height steps and bitrates based on https://developer.apple.com/library/content/documentation/General/Reference/HLSAuthoringSpec/Requirements.html +# * speeds tuned to just below 100% cpu usage for each combination on a multi-core computer +# TODO: adjust height steps or bitrates for 4:3 aspect ratio +# TODO: resolve steps from source height using http://aarmstrong.org/tutorials/aspect-ratios-and-h264 +# TODO: Externalize speeds to site-specific configfile + if [ $HEIGHT -le 234 ]; then VBITRATE=145000; SPEED_VP8=2; +elif [ $HEIGHT -le 270 ]; then VBITRATE=365000; SPEED_VP8=2; +elif [ $HEIGHT -le 360 ]; then VBITRATE=730000; SPEED_VP8=3; +elif [ $HEIGHT -le 432 ]; then VBITRATE=1100000; SPEED_VP8=4; +elif [ $HEIGHT -le 540 ]; then VBITRATE=2000000; SPEED_VP8=5; +elif [ $HEIGHT -le 720 ]; then VBITRATE=3000000; SPEED_VP8=15; fi # based on http://www.webmproject.org/docs/encoder-parameters/#real-time-cbr-encoding-and-streaming -- cgit v1.2.3