#!/bin/bash # I, Ian Kelling, follow the GNU license recommendations at # https://www.gnu.org/licenses/license-recommendations.en.html. They # recommend that small programs, < 300 lines, be licensed under the # Apache License 2.0. This file contains or is part of one or more small # programs. If a small program grows beyond 300 lines, I plan to change # to a recommended GPL license. # Copyright 2024 Ian Kelling # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. usage() { cat <&2; exit 1; } debug=false volume=0 temp=$(getopt -l help hdw "$@") || usage 1 eval set -- "$temp" while true; do case $1 in -d) volume=100 debug=true ;; -h|--help) usage ;; --) shift; break ;; *) echo "$0: unexpected args: $*" >&2 ; usage 1 ;; esac shift done mount_suffix=-sysops case $1 in sysops|tech) mount_suffix=-$1 ;; staff) mount_suffix= ;; esac ##### end command line parsing ######## host=https://live.iankelling.org:443 live_host=$(dig +timeout=1 +short @iankelling.org live.iankelling.org) vps_host=$(dig +timeout=1 +short iankelling.org) if [[ $live_host != "$vps_host" ]] && 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=http://127.0.0.1:8000 fi url=$host/fsf$mount_suffix.webm files=(~/2*.webm) file=${files[@]} if [[ -e $file ]]; then url=$file fi opts=( -v error #-v debug -hide_banner -nostats -volume $volume -fast -fflags nobuffer -flags low_delay # makes it a floating window in i3 and avoids scaling -noborder -f webm -i $url -autoexit ) if $debug; then echo running: ffplay "${opts[@]}" fi ffplay "${opts[@]}" # # working mpv, but still a second or so slower than ffplay. # mpv_opts=( # # these seem to have no effect on latency # #--no-cache # #--untimed # --no-demuxer-thread # --vd-lavc-threads=1 # --volume=$volume # --video-unscaled # $host/fsf$mount_suffix.webm # ) # todo: make more mountpoints for other ppl to stream # todo: make raw recordings accessible to public, for public streams. #