#!/usr/bin/env bash cd "$(dirname "$(realpath "$BASH_SOURCE")")" sys_python="python3" function setUser() { export fstream_arg_user="user" export fstream_arg_user_password="123" } function setChannel() { export fstream_arg_channel="default" export fstream_arg_channel_password="456" } export fstream_arg_bufsize="4096" aes_password="789" enc_resolution="480" enc_framerate="15" enc_bitrate="1M" enc_preset="ultrafast" enc_cmd=( ffmpeg # INPUT -strict experimental -avioflags direct -thread_queue_size 1 -hwaccel auto -probesize 32 -fflags nobuffer -flags low_delay -flags2 fast # delay hack -f x11grab -framerate "$enc_framerate" -i "$DISPLAY" # linux #-f gdigrab -framerate "$enc_framerate" -i desktop # windows -vf "scale=-2:$enc_resolution" # ENCODING -max_probe_packets 0 -max_delay 0 -flags2 fast # delay hack -c:v libx264 -pix_fmt yuv420p -preset "$enc_preset" -tune zerolatency -x264-params "nal-hrd=cbr" -b:v "$enc_bitrate" -minrate "$enc_bitrate" -maxrate "$enc_bitrate" -bufsize "${enc_bitrate}*2" -x264opts intra-refresh=1 # delay hack # OUTPUT -flags2 fast # delay hack -f mpegts -flags2 fast -muxdelay 0 -muxpreload 0 -max_delay 0 -flush_packets 1 # delay hack - ) if [ "$fstream_arg_bufsize" == "" ] || [ "$fstream_arg_bufsize" == "0" ]; then unset fstream_arg_bufsize fi export fstream_arg_token="" setChannel while :; do # Get token export fstream_ssl="1" export fstream_ssl_ignoreCert="1" setUser unset fstream_arg_token unset fstream_arg_channel unset fstream_arg_channel_password export fstream_arg_token="$("$sys_python" fstream.py "fier.me:61921" token)" unset fstream_arg_user_password # Broadcast unset fstream_ssl unset fstream_ssl_ignoreCert setChannel if ! [ "$fstream_aespass" == "" ]; then "${enc_cmd[@]}" | fstream_aespass="$aes_password" fstream_aesbuffer="$(($fstream_arg_bufsize - 16))" "$sys_python" fstream-util-pipe_to_aes.py | "$sys_python" fstream.py "fier.me:61920" broadcast else "${enc_cmd[@]}" | "$sys_python" fstream.py "fier.me:61920" broadcast fi sleep 1 done