Is there a way to log the stderr from ffmpeg inside the script to see why the command fails inside the script but works when run directly?
Aqui você vai, encaminhar fluxo 2, stderr, para um arquivo em tmp
. Ah, e porque você não quer que ele sobrescreva o arquivo tmp o tempo todo, adicione o PID ao seu nome:
my_command 2> /tmp/ffmpeg_error$$.log
Agora, aplicado ao seu ffmpeg:
ffmpeg -f x11grab -s 1000x563 -framerate 30 -i $DISPLAY+10,151 -f pulse -ac 2 -i default -c:v libx264 -preset ultrafast -tune zerolatency -x264opts keyint=30:min-keyint=10 -b:v 2000k -pix_fmt yuv420p -s 1000x562 -c:a aac -b:a 160k -ar 44100 -t '4:00:00' -threads 0 -f flv rtmp://IPADDRESS:1935/live1/$CHANNEL 2> /tmp/ffmpeg_error$$.log