Something went wrong. Try again.
Monorepo for Aesthetic.Computer aesthetic.computer
Something went wrong. Try again.
Shell
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#!/bin/bashset -e
XVFB_RESOLUTION="${XVFB_RESOLUTION:-320x240x24}"DISPLAY="${DISPLAY:-:1}"CHROME_URL="https://aesthetic.computer"OUTPUT_URL="rtmp://localhost/live/test"
cleanup() { pkill -TERM chromium-browser || true pkill -TERM ffmpeg || true pkill -TERM Xvfb || true pulseaudio --kill || true}trap cleanup SIGINT SIGTERM
echo "Starting Xvfb..."Xvfb "$DISPLAY" -screen 0 "$XVFB_RESOLUTION" -ac &sleep 2
echo "Starting PulseAudio..."pulseaudio --start --exit-idle-time=-1 --log-level=errorsleep 2
echo "Loading null sink..."pactl load-module module-null-sink sink_name=dummy_sinkpactl set-default-sink dummy_sinksleep 2
echo "Starting nginx RTMP server..."/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
echo "Launching Chromium..."chromium-browser \ --no-sandbox \ --window-size=320,240 "$CHROME_URL" \ --disable-infobars \ --no-first-run \ --no-default-browser-check \ --disable-dev-shm-usage \ --remote-debugging-port=9222 &
sleep 5
echo "Starting ffmpeg stream..."ffmpeg -y \ -f x11grab -video_size 320x240 -i "$DISPLAY" \ -f pulse -ac 2 -i default \ -c:v libx264 -preset ultrafast -maxrate 800k -bufsize 400k \ -g 60 -r 30 -pix_fmt yuv420p \ -c:a aac -b:a 128k -ar 44100 \ -f flv "$OUTPUT_URL"