summaryrefslogtreecommitdiff
path: root/bin/encodevideo+loop+stream
diff options
context:
space:
mode:
Diffstat (limited to 'bin/encodevideo+loop+stream')
-rwxr-xr-xbin/encodevideo+loop+stream21
1 files changed, 11 insertions, 10 deletions
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