mirror of
https://github.com/MichaByte/OnBoard-Live.git
synced 2026-01-29 13:32:12 -05:00
Start dockerizing OBS
This commit is contained in:
parent
8308b22d89
commit
af43bbc916
10 changed files with 114 additions and 2 deletions
18
docker-compose.yml
Normal file
18
docker-compose.yml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
version: '2'
|
||||
|
||||
services:
|
||||
web-frontend:
|
||||
build:
|
||||
# build from Dockerfile
|
||||
context: ./tiling-frontend
|
||||
dockerfile: Dockerfile
|
||||
volumes:
|
||||
- tiling_frontend_build:/usr/src/app/dist
|
||||
obs:
|
||||
build:
|
||||
context: ./obs
|
||||
dockerfile: Dockerfile
|
||||
volumes:
|
||||
- tiling_frontend_build:/home/obs/html
|
||||
volumes:
|
||||
tiling_frontend_build:
|
||||
35
obs/Dockerfile
Normal file
35
obs/Dockerfile
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
FROM docker.io/ubuntu:noble
|
||||
|
||||
ENV OBSWS_PASSWORD=""
|
||||
|
||||
RUN apt update && \
|
||||
apt install software-properties-common -y && \
|
||||
add-apt-repository ppa:obsproject/obs-studio -y && \
|
||||
apt update && \
|
||||
apt install ffmpeg obs-studio -y
|
||||
|
||||
RUN apt install python3-pip python3-venv xvfb -y
|
||||
|
||||
RUN useradd -ms /bin/bash obs
|
||||
|
||||
USER obs
|
||||
|
||||
RUN mkdir -p /home/obs/.config/obs-studio/basic/profiles/Untitled
|
||||
|
||||
RUN echo -e "\n[OBSWebSocket]\nFirstLoad=false\nServerEnabled=true\nServerPort=4455\nAlertsEnabled=false\nAuthRequired=true\nServerPassword=${OBSWS_PASSWORD}\n" >> /home/obs/.config/obs-studio/global.ini
|
||||
|
||||
RUN echo '{"type":"rtmp_common","settings":{"service":"YouTube - RTMPS","protocol":"RTMPS","server":"rtmps://a.rtmps.youtube.com:443/live2","bwtest":false,"key":"${YT_STREAM_KEY}","stream_key_link":"https://www.youtube.com/live_dashboard","multitrack_video_name":"Multitrack Video","multitrack_video_disclaimer":"Multitrack Video automatically optimizes your settings to encode and send multiple video qualities to YouTube - RTMPS. Selecting this option will send YouTube - RTMPS information about your computer and software setup."}}' > /home/obs/.config/obs-studio/basic/profiles/Untitled/service.json
|
||||
|
||||
COPY requirements.txt /home/obs
|
||||
|
||||
RUN python3 -m venv /home/obs/.venv
|
||||
|
||||
RUN /home/obs/.venv/bin/pip install -r /home/obs/requirements.txt
|
||||
|
||||
COPY start.sh /home/obs
|
||||
|
||||
COPY setup-obs.py /home/obs
|
||||
|
||||
RUN echo $OBSWS_PASSWORD
|
||||
|
||||
ENTRYPOINT /home/obs/start.sh
|
||||
1
obs/requirements.txt
Normal file
1
obs/requirements.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
obsws-python
|
||||
14
obs/setup-obs.py
Normal file
14
obs/setup-obs.py
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import obsws_python as obs
|
||||
import os
|
||||
|
||||
# pass conn info if not in config.toml
|
||||
client = obs.ReqClient(host='localhost', port=4455, password=os.environ["OBSWS_PASSWORD"])
|
||||
|
||||
scene = client.get_scene_list().scenes[0]['sceneName']
|
||||
|
||||
inputs = client.get_scene_item_list(name=scene).scene_items
|
||||
|
||||
print(client.get_input_default_settings("browser_source").default_input_settings)
|
||||
|
||||
if inputs == []:
|
||||
client.create_input(sceneName=scene, inputName="Browser", inputKind="browser_source", inputSettings={'css': 'body { margin: 0px auto; overflow: hidden; }', 'fps': 30, 'fps_custom': True, 'height': 1080, 'is_local_file': True, 'local_file': '/home/micha/index.html', 'reroute_audio': True, 'restart_when_active': False, 'shutdown': False, 'webpage_control_level': 0, 'width': 1920}, sceneItemEnabled=True)
|
||||
9
obs/start.sh
Executable file
9
obs/start.sh
Executable file
|
|
@ -0,0 +1,9 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
export DISPLAY=:99
|
||||
Xvfb $DISPLAY &
|
||||
obs &
|
||||
sleep 1
|
||||
source /home/obs/.venv/bin/activate
|
||||
python3 /home/obs/setup-obs.py
|
||||
|
||||
|
|
@ -5,4 +5,5 @@ requests
|
|||
python-dotenv
|
||||
prisma
|
||||
fastapi-utils
|
||||
httpx
|
||||
httpx
|
||||
obsws-python
|
||||
|
|
|
|||
15
tiling-frontend/.dockerignore
Normal file
15
tiling-frontend/.dockerignore
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
node_modules
|
||||
Dockerfile*
|
||||
docker-compose*
|
||||
.dockerignore
|
||||
.git
|
||||
.gitignore
|
||||
README.md
|
||||
LICENSE
|
||||
.vscode
|
||||
Makefile
|
||||
helm-charts
|
||||
.env
|
||||
.editorconfig
|
||||
.idea
|
||||
coverage*
|
||||
16
tiling-frontend/Dockerfile
Normal file
16
tiling-frontend/Dockerfile
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
FROM docker.io/oven/bun:slim AS base
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
FROM base AS install
|
||||
RUN mkdir -p /temp/dev
|
||||
COPY package.json bun.lockb /temp/dev/
|
||||
RUN cd /temp/dev && bun install
|
||||
|
||||
RUN mkdir -p /temp/prod
|
||||
COPY package.json bun.lockb /temp/prod/
|
||||
RUN cd /temp/prod && bun install --production
|
||||
|
||||
FROM base AS release
|
||||
COPY --from=install /temp/dev/node_modules node_modules
|
||||
COPY . .
|
||||
RUN bun --bun run build
|
||||
Binary file not shown.
|
|
@ -25,5 +25,8 @@
|
|||
"hls.js": "^1.5.13",
|
||||
"unocss": "^0.61.3",
|
||||
"vite-plugin-singlefile": "^2.0.2"
|
||||
}
|
||||
},
|
||||
"trustedDependencies": [
|
||||
"svelte-preprocess"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue