#!/bin/sh
INRES="3840x2160"
OUTRES="1920x1080"
FPS="12" # target FPS
GOP="24" # i-frame interval, should be double of FPS,
GOPMIN="12" # min i-frame interval, should be equal to fps,
THREADS="4" # max 6
CBR="2500k" # constant bitrate (should be between 1000k - 3000k)
QUALITY="fast" # one of the many FFMPEG preset
AUDIO_RATE="44100"
# to hide logs use= -loglevel quiet

ffmpeg -f x11grab \
       -s "$INRES" \
			 -r "$FPS" \
			 -thread_queue_size 1024 \
			 -i :0.0 \
			 -f alsa \
			 -acodec pcm_s32le \
			 -i hw:0,0 \
			 -f flv \
			 -ac 2 \
			 -ar $AUDIO_RATE \
			 -sws_flags lanczos \
			 -vcodec libx264 \
			 -x264opts keyint=$GOP:scenecut=-1 \
			 -b:v $CBR \
			 -minrate $CBR \
			 -maxrate $CBR \
			 -pix_fmt yuv420p \
			 -s $OUTRES \
			 -acodec aac \
			 -tune zerolatency \
			 -preset $QUALITY \
			 -threads $THREADS \
			 -bufsize $CBR "rtmp://live.twitch.tv/app/$STREAM_KEY"

