few fixes, mostly x related improvements
[distro-setup] / ffs
diff --git a/ffs b/ffs
index fe42908750b636051efe1ba9d2393b89d95f94e3..9efc9f0ebc75e454a076cd01bfa047200632b027 100755 (executable)
--- a/ffs
+++ b/ffs
 
 # ffs = ffmpeg stream
 
-# todo: learn to start working in one corner of the screen.
-
-# potential improvement: it might be nice that we could have a tall terminal bug only use
+# potential improvement: it might be nice that we could have a tall terminal but only use
 # the top half for a 1080p stream, this is how:
 # https://superuser.com/questions/1106674/how-to-add-blank-lines-above-the-bottom-in-terminal
-#
 
 
 if ! test "$BASH_VERSION"; then echo "error: shell is not bash" >&2; exit 1; fi
@@ -146,7 +143,7 @@ fi
 
 ##### end command line parsing ########
 
-host=live.iankelling.org:8000
+host=live.iankelling.org:443
 if ip n show 10.2.0.1 | grep . &>/dev/null && \
     [[ $(dig +timeout=1 +short @10.2.0.1 -x 10.2.0.2 2>&1 ||:) == kd.b8.nz. ]]; then
   host=127.0.0.1:8000
@@ -179,7 +176,14 @@ else
   stream_res=$primary_res
 fi
 
-framerate=8
+# for 1080p, default 256k is poor quality. 500 is ok. 1500 is a bit
+# better, so go with that.  Also, that is about 2x what is recommended
+# in https://livekit.io/webrtc/bitrate-guide (our framerate is lower).
+
+bitrate=$(( ( ${stream_res/x/*} ) / 1380 ))
+
+# 8 seems fine. be conservative by going a bit higher.
+framerate=10
 keyframe_interval=$((framerate * 2))
 
 # Monitor of default sink.
@@ -266,8 +270,7 @@ opts=(
   -vcodec libvpx
   -g $keyframe_interval
   -quality realtime
-  # for 1080p, default 256k is poor quality. 500 is ok. 1500 is a bit better.
-  -b:v 1500k
+  -b:v ${bitrate}k
   -threads 2
   -error-resilient 1