diff options
author | Jonas Smedegaard <dr@jones.dk> | 2017-05-17 20:16:04 +0200 |
---|---|---|
committer | Jonas Smedegaard <dr@jones.dk> | 2017-05-17 20:16:04 +0200 |
commit | b33f2677290bbbb6588ed1abce8f97fba4ec5b0c (patch) | |
tree | f046970767226909c265b8298fd331be0f728875 /bin/stream | |
parent | c0dd40df55cc249daf25bf97fc0d01baf6f17e73 (diff) |
Vary vp8 speed based on height.
Diffstat (limited to 'bin/stream')
-rwxr-xr-x | bin/stream | 25 |
1 files changed, 13 insertions, 12 deletions
@@ -88,20 +88,21 @@ HEIGHT=270 HEIGHTS_WEBM="$HEIGHT" HEIGHTS_MPEG="$HEIGHT" -# TODO: Vary vpx quality based on height -SPEED_VP8=15 - -# inspired by Apple HLS recommendations -# TODO: Externalize to site-specific configfile - if [ $HEIGHT -le 234 ]; then VBITRATE=145000; SPEED_X264=slow; SPEED_X264_ALONE=fast; -elif [ $HEIGHT -le 270 ]; then VBITRATE=365000; SPEED_X264=faster; SPEED_X264_ALONE=fast; -elif [ $HEIGHT -le 360 ]; then VBITRATE=730000; SPEED_X264=faster; SPEED_X264_ALONE=fast; -elif [ $HEIGHT -le 432 ]; then VBITRATE=1100000; SPEED_X264=veryfast; SPEED_X264_ALONE=fast; -elif [ $HEIGHT -le 540 ]; then VBITRATE=2000000; SPEED_X264=toofast; SPEED_X264_ALONE=veryfast; -elif [ $HEIGHT -le 720 ]; then VBITRATE=3000000; SPEED_X264=toofast; SPEED_X264_ALONE=ultrafast; +# * 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_X264=fast; SPEED_X264_ALONE=fast; SPEED_VP8=3; SPEED_VP8_ALONE=2; +elif [ $HEIGHT -le 270 ]; then VBITRATE=365000; SPEED_X264=faster; SPEED_X264_ALONE=fast; SPEED_VP8=4; SPEED_VP8_ALONE=2; +elif [ $HEIGHT -le 360 ]; then VBITRATE=730000; SPEED_X264=veryfast; SPEED_X264_ALONE=fast; SPEED_VP8=5; SPEED_VP8_ALONE=3; +elif [ $HEIGHT -le 432 ]; then VBITRATE=1100000; SPEED_X264=ultrafast; SPEED_X264_ALONE=fast; SPEED_VP8=8; SPEED_VP8_ALONE=4; +elif [ $HEIGHT -le 540 ]; then VBITRATE=2000000; SPEED_X264=toofast; SPEED_X264_ALONE=veryfast; SPEED_VP8_ALONE=5; +elif [ $HEIGHT -le 720 ]; then VBITRATE=3000000; SPEED_X264=toofast; SPEED_X264_ALONE=ultrafast; SPEED_VP8_ALONE=15; fi +[ toofast != "$SPEED_X264" ] || HEIGHTS_MPEG= +[ -n "$HEIGHTS_MPEG" ] || SPEED_VP8="$SPEED_VP8_ALONE" [ -n "$HEIGHTS_WEBM" ] || SPEED_X264="$SPEED_X264_ALONE" -[ toofast != "$SPEED_X264" ] || exit1 "Not enough CPU - reduce size or streams" # shellcheck disable=SC2048,SC2059 echo_n() { |