This commit is contained in:
root committed 2022-10-14 15:29:51 +02:00
commit 15e4efc356
4 files changed
+206

No files matched your search

+99
View File
@@ -0,0 +1,99 @@
FROM debian:stretch
RUN echo 'deb http://deb.debian.org/debian stretch-backports main' > /etc/apt/sources.list.d/backports.list
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get -qq update \
&&apt-get install -y gnupg2 \
x11vnc \
xvfb \
fluxbox \
wget \
curl \
wmctrl \
dbus-x11 \
gconf-service \
libasound2 \
libatk1.0-0 \
libc6 \
libcairo2 \
libcups2 \
libdbus-1-3 \
libexpat1 \
libfontconfig1 \
libgcc1 \
libgconf-2-4 \
libgdk-pixbuf2.0-0 \
libglib2.0-0 \
libgtk-3-0 \
libnspr4 \
libpango-1.0-0 \
libpangocairo-1.0-0 \
libstdc++6 \
libx11-6 \
libx11-xcb1 \
libxcb1 \
libxcomposite1 \
libxcursor1 \
libxdamage1 \
libxext6 \
libxfixes3 \
libxi6 \
libxrandr2 \
libxrender1 \
libxss1 \
libxtst6 \
fonts-ipafont-gothic \
fonts-wqy-zenhei \
fonts-thai-tlwg \
fonts-kacst \
ttf-freefont \
ca-certificates \
fonts-liberation \
libappindicator1 \
libnss3 \
lsb-release \
xdg-utils \
pulseaudio \
ffmpeg \
nano \
alsa-utils \
jackd2 \
pavucontrol
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
&& echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list
RUN apt-get -qq update \
&& apt-get -y install google-chrome-stable \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get purge --auto-remove -y curl
ENV LANG="C.UTF-8"
RUN useradd -m -G pulse-access chrome \
&& usermod -s /bin/bash chrome \
&& mkdir -p /home/chrome/.fluxbox \
&& echo ' \n\
#session.screen0.toolbar.visible: false\n\
#session.screen0.fullMaximization: true\n\
#session.screen0.maxDisableResize: true\n\
#session.screen0.maxDisableMove: true\n\
#session.screen0.defaultDeco: NONE\n\
' >> /home/chrome/.fluxbox/init \
&& chown -R chrome:chrome /home/chrome/.fluxbox
RUN rm /etc/machine-id && ln -s /var/lib/dbus/machine-id /etc/machine-id
RUN echo "DBUS_SESSION_BUS_ADDRESS=/dev/null" >> /etc/environment
ENV DBUS_SESSION_BUS_ADDRESS=/dev/null
RUN mkdir -p /var/run/dbus && dbus-daemon --config-file=/usr/share/dbus-1/system.conf --print-address \
&& sed -i 's/load-module module-console-kit/#load-module module-console-kit/g' /etc/pulse/default.pa
COPY bootstrap.sh /
COPY stream.sh /
EXPOSE 5900
CMD '/bootstrap.sh'
Executable
+85
View File
@@ -0,0 +1,85 @@
#!/bin/bash
# Based on: http://www.richud.com/wiki/Ubuntu_Fluxbox_GUI_with_x11vnc_and_Xvfb
readonly G_LOG_I='[INFO]'
readonly G_LOG_W='[WARN]'
readonly G_LOG_E='[ERROR]'
main() {
launch_xvfb
launch_window_manager
run_vnc_server
}
launch_xvfb() {
# Set defaults if the user did not specify envs.
export DISPLAY=${XVFB_DISPLAY:-:0}
local screen=${XVFB_SCREEN:-0}
local resolution=${XVFB_RESOLUTION:-1280x720x24}
local timeout=${XVFB_TIMEOUT:-5}
# Start and wait for either Xvfb to be fully up or we hit the timeout.
Xvfb ${DISPLAY} -screen ${screen} ${resolution} &
local loopCount=0
until xdpyinfo -display ${DISPLAY} > /dev/null 2>&1
do
loopCount=$((loopCount+1))
sleep 1
if [ ${loopCount} -gt ${timeout} ]
then
echo "${G_LOG_E} xvfb failed to start."
exit 1
fi
done
}
launch_window_manager() {
local timeout=${XVFB_TIMEOUT:-5}
# Start and wait for either fluxbox to be fully up or we hit the timeout.
fluxbox &
local loopCount=0
until wmctrl -m > /dev/null 2>&1
do
loopCount=$((loopCount+1))
sleep 1
if [ ${loopCount} -gt ${timeout} ]
then
echo "${G_LOG_E} fluxbox failed to start."
exit 1
fi
done
}
run_vnc_server() {
local passwordArgument='-nopw'
if [ -n "${VNC_SERVER_PASSWORD}" ]
then
local passwordFilePath="${HOME}/x11vnc.pass"
if ! x11vnc -storepasswd "${VNC_SERVER_PASSWORD}" "${passwordFilePath}"
then
echo "${G_LOG_E} Failed to store x11vnc password."
exit 1
fi
passwordArgument=-"-rfbauth ${passwordFilePath}"
echo "${G_LOG_I} The VNC server will ask for a password."
else
echo "${G_LOG_W} The VNC server will NOT ask for a password."
fi
x11vnc -display ${DISPLAY} -forever ${passwordArgument} &
wait $!
}
control_c() {
echo ""
exit
}
trap control_c SIGINT SIGTERM SIGHUP
main
exit
Executable
+1
View File
@@ -0,0 +1 @@
docker build . -t tiktok-streamer
Executable
+21
View File
@@ -0,0 +1,21 @@
#!/bin/bash
: ${INRES:="1280x720"}
: ${FPS:="30"}
: ${GOP:="30"}
: ${OUTRES:="1280x720"}
: ${QUALITY:="ultrafast"}
: ${CBR:="2000k"}
: ${A_FREQ:="44100"}
: ${A_BITS:="128k"}
: ${SERVER:="rtmp://a.rtmp.youtube.com/live2/"}
ffmpeg \
-f alsa -ar "$A_FREQ" -ac 2 -i default \
-f x11grab -video_size "$INRES" -r "$FPS" -i :0 \
-c:v libx264 -preset "$QUALITY" -tune film -b:v "$CBR" -b:a "$A_BITS" -pix_fmt yuv420p -g "$GOP" \
-map 0:a -map 1:v \
-f flv "$SERVER$SERVER_KEY"