diff --git a/docker-compose.yml b/docker-compose.yml index 9a0ad09..8b99572 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,21 +15,23 @@ services: context: ./tiling-frontend dockerfile: Dockerfile volumes: - - tiling_frontend_build:/usr/src/app/dist + - tiling_frontend_build:/usr/src/app/dist live-stream: + network_mode: "host" + env_file: .stream.env depends_on: - active_stream_proxy: + backend: + condition: service_started + web-frontend: condition: service_started build: context: ./live-stream dockerfile: Dockerfile volumes: - tiling_frontend_build:/html - env_file: .stream.env backend: + network_mode: "host" env_file: .backend.env - ports: - - "8000:8000" build: context: ./backend dockerfile: Dockerfile diff --git a/live-stream/Dockerfile b/live-stream/Dockerfile index 0b62ee1..ba4c3b8 100644 --- a/live-stream/Dockerfile +++ b/live-stream/Dockerfile @@ -2,7 +2,7 @@ FROM ubuntu:latest RUN apt update -RUN apt install -y ffmpeg xvfb software-properties-common dbus-x11 +RUN apt install -y ffmpeg xvfb software-properties-common dbus-x11 pulseaudio RUN add-apt-repository -y ppa:xtradeb/apps @@ -10,10 +10,16 @@ RUN apt update RUN apt install -y chromium +RUN apt install -y sudo + RUN rm -rf /var/lib/apt/lists/* RUN apt clean -COPY run.sh . +RUN useradd -ms /bin/bash stream + +COPY run.sh ./ + +COPY user_run.sh /home/stream ENTRYPOINT ["./run.sh"] diff --git a/live-stream/run.sh b/live-stream/run.sh index f18c419..bac6bb7 100755 --- a/live-stream/run.sh +++ b/live-stream/run.sh @@ -1,20 +1,11 @@ #!/bin/bash -export CHROMIUM_FLAGS="--disable-software-rasterizer --disable-dev-shm-usage" -dbus-daemon --config-file=/usr/share/dbus-1/system.conf --print-address -export LIBGL_ALWAYS_INDIRECT=1 +dbus-daemon --config-file=/usr/share/dbus-1/system.conf & -bash -c "sleep 5 && DISPLAY=:99 ffmpeg -f x11grab -r 30 -s 1920x1080 -draw_mouse 0 -i :99.0 -f alsa -ac 2 -i hw:0 -vcodec libx264 -preset medium -b:v 7000k -framerate 30 -g 2 -pix_fmt yuv420p -acodec aac -f flv rtmp://x.rtmp.youtube.com/live2/$YT_STREAM_KEY" & +echo $YT_STREAM_KEY >/home/stream/key.txt -DISPLAY=:99 xvfb-run \ - --server-num 99 \ - -s "-nocursor -ac -screen 0 1920x1080x24" \ - dbus-launch chromium \ - --temp-profile \ - --window-size=1920,1080 \ - --disable-gpu \ - --window-position=0,0 \ - --no-sandbox \ - --hide-scrollbars \ - --disable-setuid-sandbox \ - --app=http://web-frontend:4173 +chown stream /home/stream/key.txt + +chown stream /home/stream/user_run.sh + +sudo -i -u stream bash /home/stream/user_run.sh diff --git a/live-stream/user_run.sh b/live-stream/user_run.sh new file mode 100755 index 0000000..720c2a5 --- /dev/null +++ b/live-stream/user_run.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +pulseaudio -D & +sleep 2 + +pacmd load-module module-null-sink sink_name=VirtSink +pacmd update-sink-proplist VirtSink device.description=VirtSink + +pacmd load-module module-loopback sink=VirtSink + +export CHROMIUM_FLAGS="--disable-software-rasterizer --disable-dev-shm-usage" +export LIBGL_ALWAYS_INDIRECT=1 + +bash -c "sleep 5 && DISPLAY=:99 ffmpeg -f x11grab -r 30 -s 1920x1080 -draw_mouse 0 -i :99.0 -f pulse -ac 2 -i default -vcodec libx264 -preset medium -b:v 7000k -framerate 30 -g 2 -pix_fmt yuv420p -acodec aac -f flv rtmp://x.rtmp.youtube.com/live2/$(cat /home/stream/key.txt)" & + +DISPLAY=:99 xvfb-run \ + --server-num 99 \ + -s "-nocursor -ac -screen 0 1920x1080x24" \ + dbus-launch chromium \ + --temp-profile \ + --window-size=1920,1080 \ + --disable-gpu \ + --window-position=0,0 \ + --hide-scrollbars \ + --autoplay-policy=no-user-gesture-required \ + --app=http://localhost:4173