From 06deb1a82f427d4e4625e65f0cb3433618cb6cd5 Mon Sep 17 00:00:00 2001 From: Ambrose Chua Date: Tue, 4 Feb 2020 01:00:21 +0800 Subject: [PATCH] Initial OBS configuration Based upon experimental and files extracted --- ansible/artwork/2020.fossasia.org/blank.png | Bin 0 -> 31184 bytes .../side-by-side-43-reverse.png | Bin 0 -> 24419 bytes .../2020.fossasia.org/side-by-side-43.png | Bin 0 -> 24406 bytes .../side-by-side-reverse.png | Bin 0 -> 24417 bytes .../2020.fossasia.org/side-by-side.png | Bin 0 -> 24391 bytes ansible/event | 6 + ansible/group_vars/all | 9 + ansible/group_vars/recorders | 4 + ansible/play | 3 + ansible/recorders.yml | 5 + .../roles/monitoring-client/tasks/main.yml | 2 + ansible/roles/recorder/files/gdm.conf | 31 + ansible/roles/recorder/tasks/artwork.yml | 23 + ansible/roles/recorder/tasks/hostname.yml | 10 + ansible/roles/recorder/tasks/main.yml | 5 + ansible/roles/recorder/tasks/obs.yml | 34 + ansible/roles/recorder/tasks/packages.yml | 13 + ansible/roles/recorder/tasks/user.yml | 52 + ansible/roles/recorder/templates/etc-hosts.j2 | 4 + .../basic/profiles/1080p/basic.ini.j2 | 33 + .../basic/profiles/720p/basic.ini.j2 | 33 + .../obs-studio/basic/scenes/event_id.json.j2 | 1115 +++++++++++++++++ .../recorder/templates/obs-studio/global.ini | 27 + 23 files changed, 1409 insertions(+) create mode 100644 ansible/artwork/2020.fossasia.org/blank.png create mode 100644 ansible/artwork/2020.fossasia.org/side-by-side-43-reverse.png create mode 100644 ansible/artwork/2020.fossasia.org/side-by-side-43.png create mode 100644 ansible/artwork/2020.fossasia.org/side-by-side-reverse.png create mode 100644 ansible/artwork/2020.fossasia.org/side-by-side.png create mode 100644 ansible/event create mode 100644 ansible/group_vars/all create mode 100644 ansible/group_vars/recorders create mode 100755 ansible/play create mode 100644 ansible/recorders.yml create mode 100644 ansible/roles/monitoring-client/tasks/main.yml create mode 100644 ansible/roles/recorder/files/gdm.conf create mode 100644 ansible/roles/recorder/tasks/artwork.yml create mode 100644 ansible/roles/recorder/tasks/hostname.yml create mode 100644 ansible/roles/recorder/tasks/main.yml create mode 100644 ansible/roles/recorder/tasks/obs.yml create mode 100644 ansible/roles/recorder/tasks/packages.yml create mode 100644 ansible/roles/recorder/tasks/user.yml create mode 100644 ansible/roles/recorder/templates/etc-hosts.j2 create mode 100644 ansible/roles/recorder/templates/obs-studio/basic/profiles/1080p/basic.ini.j2 create mode 100644 ansible/roles/recorder/templates/obs-studio/basic/profiles/720p/basic.ini.j2 create mode 100644 ansible/roles/recorder/templates/obs-studio/basic/scenes/event_id.json.j2 create mode 100644 ansible/roles/recorder/templates/obs-studio/global.ini diff --git a/ansible/artwork/2020.fossasia.org/blank.png b/ansible/artwork/2020.fossasia.org/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..3e4503cca16f4bed7442ec7964d5abdc9286a717 GIT binary patch literal 31184 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%0A`Yq~Goh5U6#AMWpRz4UK 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 literal 0 HcmV?d00001 diff --git a/ansible/artwork/2020.fossasia.org/side-by-side-43.png b/ansible/artwork/2020.fossasia.org/side-by-side-43.png new file mode 100644 index 0000000000000000000000000000000000000000..a620feb0cec71961b13aeb6a0b05eca9051ef1e8 GIT binary patch literal 24406 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 literal 0 HcmV?d00001 diff --git a/ansible/event b/ansible/event new file mode 100644 index 0000000..4f1aa34 --- /dev/null +++ b/ansible/event @@ -0,0 +1,6 @@ +[recorders:children] +testgroup + +[testgroup] +#user@10.10.2.5 room_id=test +ambrose@10.10.0.90 room_id=test diff --git a/ansible/group_vars/all b/ansible/group_vars/all new file mode 100644 index 0000000..d21b84c --- /dev/null +++ b/ansible/group_vars/all @@ -0,0 +1,9 @@ +--- + +event: + id: 2020.fossasia.org + title: FOSSASIA Summit 2020 + +# Meta + +ansible_python_interpreter: auto diff --git a/ansible/group_vars/recorders b/ansible/group_vars/recorders new file mode 100644 index 0000000..7b13ac4 --- /dev/null +++ b/ansible/group_vars/recorders @@ -0,0 +1,4 @@ +--- + +room_id: unknown + diff --git a/ansible/play b/ansible/play new file mode 100755 index 0000000..58b45ff --- /dev/null +++ b/ansible/play @@ -0,0 +1,3 @@ +#!/bin/sh + +ansible-playbook -Kbf 1 -i "$1" "$2" diff --git a/ansible/recorders.yml b/ansible/recorders.yml new file mode 100644 index 0000000..ba66367 --- /dev/null +++ b/ansible/recorders.yml @@ -0,0 +1,5 @@ +--- +- hosts: recorders + roles: + - role: recorder + - role: monitoring-client diff --git a/ansible/roles/monitoring-client/tasks/main.yml b/ansible/roles/monitoring-client/tasks/main.yml new file mode 100644 index 0000000..cd21505 --- /dev/null +++ b/ansible/roles/monitoring-client/tasks/main.yml @@ -0,0 +1,2 @@ +--- + diff --git a/ansible/roles/recorder/files/gdm.conf b/ansible/roles/recorder/files/gdm.conf new file mode 100644 index 0000000..4ff3506 --- /dev/null +++ b/ansible/roles/recorder/files/gdm.conf @@ -0,0 +1,31 @@ +# MANAGED BY ANSIBLE + +# GDM configuration storage +# +# See /usr/share/gdm/gdm.schemas for a list of available options. + +[daemon] +# Uncomment the line below to force the login screen to use Xorg +#WaylandEnable=false + +# Enabling automatic login +AutomaticLoginEnable = true +AutomaticLogin = mixer + +# Enabling timed login +# TimedLoginEnable = true +# TimedLogin = user1 +# TimedLoginDelay = 10 + +[security] + +[xdmcp] + +[chooser] + +[debug] +# Uncomment the line below to turn on debugging +# More verbose logs +# Additionally lets the X server dump core if it crashes +#Enable=true + diff --git a/ansible/roles/recorder/tasks/artwork.yml b/ansible/roles/recorder/tasks/artwork.yml new file mode 100644 index 0000000..c33d729 --- /dev/null +++ b/ansible/roles/recorder/tasks/artwork.yml @@ -0,0 +1,23 @@ +--- + +- name: create artwork directory + file: + dest: /opt/artwork + state: directory + owner: root + group: root + mode: u=rwx,g=rx,o=rx + +- name: copy backgrounds + copy: + src: ../../../artwork/{{ event.id }}/{{ item }}.png + dest: /opt/artwork/ + owner: root + group: root + mode: u=rw,g=r,o=r + with_items: + - side-by-side + - side-by-side-reverse + - side-by-side-43 + - side-by-side-43-reverse + - blank diff --git a/ansible/roles/recorder/tasks/hostname.yml b/ansible/roles/recorder/tasks/hostname.yml new file mode 100644 index 0000000..b2db0a7 --- /dev/null +++ b/ansible/roles/recorder/tasks/hostname.yml @@ -0,0 +1,10 @@ +--- + +- name: generate hosts file + template: + src: etc-hosts.j2 + dest: /etc/hosts + +- name: set hostname to room_id + hostname: + name: "room-{{ room_id }}" diff --git a/ansible/roles/recorder/tasks/main.yml b/ansible/roles/recorder/tasks/main.yml new file mode 100644 index 0000000..0634b60 --- /dev/null +++ b/ansible/roles/recorder/tasks/main.yml @@ -0,0 +1,5 @@ +--- +- include: user.yml +- include: hostname.yml +- include: packages.yml +- include: artwork.yml diff --git a/ansible/roles/recorder/tasks/obs.yml b/ansible/roles/recorder/tasks/obs.yml new file mode 100644 index 0000000..7ae59a5 --- /dev/null +++ b/ansible/roles/recorder/tasks/obs.yml @@ -0,0 +1,34 @@ +--- + +- name: create obs directory + file: + dest: "{{ mixer_user.home }}/.config/obs-studio/{{ item }}" + state: directory + recurse: yes + owner: root + group: root + mode: u=rwx,g=rx,o=rx + with_items: + - basic/profiles/1080p + - basic/profiles/720p + - basic/scenes + +- name: generate base obs configuration files + template: + src: "obs-studio/{{ item }}.j2" + dest: "{{ mixer_user.home }}/.config/obs-studio/{{ item }}" + owner: mixer + group: mixer + mode: u=rw,g=r,o=r + with_items: + - global.ini + - basic/profiles/1080p/basic.ini + - basic/profiles/720p/basic.ini + +- name: generate event obs configuration files + template: + src: "obs-studio/basic/scenes/event_id.json.j2" + dest: "{{ mixer_user.home }}/.config/obs-studio/basic/scenes/{{ event.id }}.json" + owner: mixer + group: mixer + mode: u=rw,g=r,o=r diff --git a/ansible/roles/recorder/tasks/packages.yml b/ansible/roles/recorder/tasks/packages.yml new file mode 100644 index 0000000..fddef1e --- /dev/null +++ b/ansible/roles/recorder/tasks/packages.yml @@ -0,0 +1,13 @@ +--- + +- name: install general packages + apt: + state: latest + name: + - git + +- name: install packages required to be a recorder + apt: + state: latest + name: + - obs-studio diff --git a/ansible/roles/recorder/tasks/user.yml b/ansible/roles/recorder/tasks/user.yml new file mode 100644 index 0000000..83bd15d --- /dev/null +++ b/ansible/roles/recorder/tasks/user.yml @@ -0,0 +1,52 @@ +--- + +- name: create mixer group + group: + name: mixer + +- name: create mixer user with password mixer + user: + name: mixer + group: mixer + comment: Mixer + shell: /bin/bash + password: $6$8tFX.bXNC4348gTR$8e33nlbdydXVvFZ0VmaN9Y7H5HjMduu1Z4Ofjh13PhRFGLJ6ojubsHh1SuLZSHWzWMeUxIPEyVX6VH.UaCZe8/ + register: mixer_user + +- name: enable gdm autologin to mixer user + copy: + src: gdm.conf + dest: /etc/gdm3/daemon.conf + owner: root + group: root + mode: u=rw,g=r,o=r + +- name: check sleep settings + command: + cmd: /usr/bin/gsettings get org.gnome.desktop.session idle-delay + become: yes + become_user: mixer + register: idle_delay_setting + changed_when: false + +- name: prevent mixer from sleeping + command: + cmd: "{{ item }}" + environment: + # Required only when setting gsettings + DBUS_SESSION_BUS_ADDRESS: "unix:path=/run/user/{{ mixer_user.uid }}/bus" + with_items: + - /usr/bin/gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing' + - /usr/bin/gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type 'nothing' + - /usr/bin/gsettings set org.gnome.settings-daemon.plugins.power idle-dim false + - /usr/bin/gsettings set org.gnome.settings-daemon.plugins.power power-button-action 'nothing' + - /usr/bin/gsettings set org.gnome.desktop.lockdown disable-lock-screen true + - /usr/bin/gsettings set org.gnome.desktop.lockdown disable-log-out true + - /usr/bin/gsettings set org.gnome.desktop.lockdown disable-printing true + - /usr/bin/gsettings set org.gnome.desktop.lockdown disable-print-setup true + - /usr/bin/gsettings set org.gnome.desktop.lockdown disable-save-to-disk true + - /usr/bin/gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita-dark' + - /usr/bin/gsettings set org.gnome.desktop.session idle-delay 0 + become: yes + become_user: mixer + when: "'uint32 0' not in idle_delay_setting.stdout" diff --git a/ansible/roles/recorder/templates/etc-hosts.j2 b/ansible/roles/recorder/templates/etc-hosts.j2 new file mode 100644 index 0000000..bc1a83d --- /dev/null +++ b/ansible/roles/recorder/templates/etc-hosts.j2 @@ -0,0 +1,4 @@ +127.0.0.1 localhost room-{{ room_id }} +::1 localhost ip6-localhost ip6-loopbac room-{{ room_id }} +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters diff --git a/ansible/roles/recorder/templates/obs-studio/basic/profiles/1080p/basic.ini.j2 b/ansible/roles/recorder/templates/obs-studio/basic/profiles/1080p/basic.ini.j2 new file mode 100644 index 0000000..c09d996 --- /dev/null +++ b/ansible/roles/recorder/templates/obs-studio/basic/profiles/1080p/basic.ini.j2 @@ -0,0 +1,33 @@ +[General] +Name=1080p + +[Video] +BaseCX=1920 +BaseCY=1080 +OutputCX=1920 +OutputCY=1080 + +[Output] +Mode=Simple + +[Audio] +SampleRate=48000 + +[Hotkeys] +OBSBasic.StartRecording={\n "bindings": [\n {\n "control": true,\n "key": "OBS_KEY_RETURN"\n }\n ]\n} +OBSBasic.StopRecording={\n "bindings": [\n {\n "control": true,\n "key": "OBS_KEY_BACKSPACE"\n }\n ]\n} +OBSBasic.Transition={\n "bindings": [\n {\n "key": "OBS_KEY_RETURN"\n }\n ]\n} + +[SimpleOutput] +RecFormat=mkv +RecQuality=Small +RecEncoder=x264_lowcpu + +[AdvOut] +TrackIndex=1 +RecType=Standard +RecTracks=1 +FFOutputToFile=true +FFVEncoderId=0 +FFAEncoderId=0 +FFAudioTrack=1 diff --git a/ansible/roles/recorder/templates/obs-studio/basic/profiles/720p/basic.ini.j2 b/ansible/roles/recorder/templates/obs-studio/basic/profiles/720p/basic.ini.j2 new file mode 100644 index 0000000..9205fe2 --- /dev/null +++ b/ansible/roles/recorder/templates/obs-studio/basic/profiles/720p/basic.ini.j2 @@ -0,0 +1,33 @@ +[General] +Name=720p + +[Video] +BaseCX=1920 +BaseCY=1080 +OutputCX=1280 +OutputCY=720 + +[Output] +Mode=Simple + +[Audio] +SampleRate=48000 + +[Hotkeys] +OBSBasic.StartRecording={\n "bindings": [\n {\n "control": true,\n "key": "OBS_KEY_RETURN"\n }\n ]\n} +OBSBasic.StopRecording={\n "bindings": [\n {\n "control": true,\n "key": "OBS_KEY_BACKSPACE"\n }\n ]\n} +OBSBasic.Transition={\n "bindings": [\n {\n "key": "OBS_KEY_RETURN"\n }\n ]\n} + +[SimpleOutput] +RecFormat=mkv +RecQuality=Small +RecEncoder=x264_lowcpu + +[AdvOut] +TrackIndex=1 +RecType=Standard +RecTracks=1 +FFOutputToFile=true +FFVEncoderId=0 +FFAEncoderId=0 +FFAudioTrack=1 diff --git a/ansible/roles/recorder/templates/obs-studio/basic/scenes/event_id.json.j2 b/ansible/roles/recorder/templates/obs-studio/basic/scenes/event_id.json.j2 new file mode 100644 index 0000000..37d4dab --- /dev/null +++ b/ansible/roles/recorder/templates/obs-studio/basic/scenes/event_id.json.j2 @@ -0,0 +1,1115 @@ +{ + "AuxAudioDevice1": { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [], + "libobs.unmute": [] + }, + "id": "pulse_input_capture", + "mixers": 255, + "monitoring_type": 0, + "muted": false, + "name": "Microphone", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "device_id": "alsa_input.usb-Creative_Labs_VF0470_Live__Cam_Notebook-01.analog-mono" + }, + "sync": 0, + "volume": 1.0 + }, + "AuxAudioDevice2": { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [], + "libobs.unmute": [] + }, + "id": "pulse_input_capture", + "mixers": 255, + "monitoring_type": 0, + "muted": false, + "name": "Slides Audio", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "device_id": "alsa_input.usb-VXIS_Inc_ACASIS-02.iec958-stereo" + }, + "sync": 0, + "volume": 1.0 + }, + "AuxAudioDevice3": { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [], + "libobs.unmute": [] + }, + "id": "pulse_input_capture", + "mixers": 255, + "monitoring_type": 0, + "muted": true, + "name": "Emergency Audio", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "device_id": "alsa_input.pci-0000_00_1b.0.analog-stereo" + }, + "sync": 0, + "volume": 1.0 + }, + "current_program_scene": "Slides Primary 16:9", + "current_scene": "Slides Primary 16:9", + "current_transition": "Fade", + "modules": { + "output-timer": { + "autoStartRecordTimer": false, + "autoStartStreamTimer": false, + "recordTimerHours": 0, + "recordTimerMinutes": 0, + "recordTimerSeconds": 30, + "streamTimerHours": 0, + "streamTimerMinutes": 0, + "streamTimerSeconds": 30 + } + }, + "name": "{{ event.id }}", + "preview_locked": true, + "quick_transitions": [ + { + "duration": 300, + "hotkeys": [], + "id": 1, + "name": "Cut" + }, + { + "duration": 300, + "hotkeys": [], + "id": 2, + "name": "Fade" + } + ], + "scaling_enabled": false, + "scaling_level": 0, + "scaling_off_x": 0.0, + "scaling_off_y": 0.0, + "scene_order": [ + { + "name": "Camera Only" + }, + { + "name": "Slides Primary 16:9" + }, + { + "name": "Camera Primary 16:9" + }, + { + "name": "Slides Only 16:9" + }, + { + "name": "Slides Primary 4:3" + }, + { + "name": "Camera Primary 4:3" + }, + { + "name": "Slides Only 4:3" + }, + { + "name": "Blank" + } + ], + "sources": [ + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": {}, + "id": "image_source", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Background (blank)", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "file": "/opt/artwork/{{ event.id }}/blank.png", + "unload": true + }, + "sync": 0, + "volume": 1.0 + }, + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": { + "OBSBasic.SelectScene": [ + { + "key": "OBS_KEY_F9" + } + ] + }, + "id": "scene", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Blank", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "id_counter": 1, + "items": [ + { + "align": 5, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_align": 0, + "bounds_type": 0, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 1, + "locked": true, + "name": "Background (blank)", + "pos": { + "x": 0.0, + "y": 0.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_filter": "disable", + "visible": true + } + ] + }, + "sync": 0, + "volume": 1.0 + }, + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": { + "OBSBasic.SelectScene": [ + { + "key": "OBS_KEY_F7" + } + ] + }, + "id": "scene", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Slides Only 4:3", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "id_counter": 1, + "items": [ + { + "align": 5, + "bounds": { + "x": 1440.0, + "y": 1080.0 + }, + "bounds_align": 0, + "bounds_type": 1, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 1, + "locked": true, + "name": "Slides", + "pos": { + "x": 240.0, + "y": 0.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_filter": "disable", + "visible": true + } + ] + }, + "sync": 0, + "volume": 1.0 + }, + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": { + "OBSBasic.SelectScene": [ + { + "key": "OBS_KEY_F3" + } + ] + }, + "id": "scene", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Slides Only 16:9", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "id_counter": 1, + "items": [ + { + "align": 5, + "bounds": { + "x": 1920.0, + "y": 1080.0 + }, + "bounds_align": 0, + "bounds_type": 1, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 1, + "locked": true, + "name": "Slides", + "pos": { + "x": 0.0, + "y": 0.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_filter": "disable", + "visible": true + } + ] + }, + "sync": 0, + "volume": 1.0 + }, + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": { + "OBSBasic.SelectScene": [ + { + "key": "OBS_KEY_F10" + }, + { + "key": "OBS_KEY_F4" + }, + { + "key": "OBS_KEY_F8" + } + ] + }, + "id": "scene", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Camera Only", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "id_counter": 1, + "items": [ + { + "align": 5, + "bounds": { + "x": 1920.0, + "y": 1080.0 + }, + "bounds_align": 0, + "bounds_type": 3, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 1, + "locked": true, + "name": "Camera", + "pos": { + "x": 0.0, + "y": 0.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_filter": "disable", + "visible": true + } + ] + }, + "sync": 0, + "volume": 1.0 + }, + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "filters": [ + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": {}, + "id": "color_key_filter", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Color Key", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "key_color_type": "green", + "similarity": 1, + "smoothness": 1 + }, + "sync": 0, + "volume": 1.0 + } + ], + "flags": 0, + "hotkeys": {}, + "id": "image_source", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Background (side-by-side-43-reverse)", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "file": "/opt/artwork/{{ event.id }}/side-by-side-43-reverse.png", + "unload": true + }, + "sync": 0, + "volume": 1.0 + }, + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": { + "OBSBasic.SelectScene": [ + { + "key": "OBS_KEY_F6" + } + ] + }, + "id": "scene", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Camera Primary 4:3", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "id_counter": 3, + "items": [ + { + "align": 5, + "bounds": { + "x": 1120.0, + "y": 1000.0 + }, + "bounds_align": 0, + "bounds_type": 3, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 3, + "locked": true, + "name": "Camera", + "pos": { + "x": 40.0, + "y": 40.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_filter": "disable", + "visible": true + }, + { + "align": 5, + "bounds": { + "x": 680.0, + "y": 510.0 + }, + "bounds_align": 0, + "bounds_type": 1, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 2, + "locked": true, + "name": "Slides", + "pos": { + "x": 1200.0, + "y": 530.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_filter": "disable", + "visible": true + }, + { + "align": 5, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_align": 0, + "bounds_type": 0, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 1, + "locked": true, + "name": "Background (side-by-side-43-reverse)", + "pos": { + "x": 0.0, + "y": 0.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_filter": "disable", + "visible": true + } + ] + }, + "sync": 0, + "volume": 1.0 + }, + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "filters": [ + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": {}, + "id": "color_key_filter", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Color Key", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "key_color_type": "green", + "similarity": 1, + "smoothness": 1 + }, + "sync": 0, + "volume": 1.0 + } + ], + "flags": 0, + "hotkeys": {}, + "id": "image_source", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Background (side-by-side-43)", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "file": "/opt/artwork/{{ event.id }}/side-by-side-43.png", + "unload": true + }, + "sync": 0, + "volume": 1.0 + }, + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": { + "OBSBasic.SelectScene": [ + { + "key": "OBS_KEY_F5" + } + ] + }, + "id": "scene", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Slides Primary 4:3", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "id_counter": 3, + "items": [ + { + "align": 5, + "bounds": { + "x": 480.0, + "y": 420.0 + }, + "bounds_align": 0, + "bounds_type": 3, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 1, + "locked": true, + "name": "Camera", + "pos": { + "x": 1400.0, + "y": 620.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_filter": "disable", + "visible": true + }, + { + "align": 5, + "bounds": { + "x": 1320.0, + "y": 990.0 + }, + "bounds_align": 0, + "bounds_type": 1, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 2, + "locked": true, + "name": "Slides", + "pos": { + "x": 40.0, + "y": 40.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.5, + "y": 1.5 + }, + "scale_filter": "disable", + "visible": true + }, + { + "align": 5, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_align": 0, + "bounds_type": 0, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 3, + "locked": true, + "name": "Background (side-by-side-43)", + "pos": { + "x": 0.0, + "y": 0.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_filter": "disable", + "visible": true + } + ] + }, + "sync": 0, + "volume": 1.0 + }, + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": { + "OBSBasic.SelectScene": [ + { + "key": "OBS_KEY_F1" + } + ] + }, + "id": "scene", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Slides Primary 16:9", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "id_counter": 7, + "items": [ + { + "align": 5, + "bounds": { + "x": 300.0, + "y": 420.0 + }, + "bounds_align": 0, + "bounds_type": 3, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 4, + "locked": true, + "name": "Camera", + "pos": { + "x": 1580.0, + "y": 620.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_filter": "disable", + "visible": true + }, + { + "align": 5, + "bounds": { + "x": 1501.0, + "y": 844.0 + }, + "bounds_align": 0, + "bounds_type": 1, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 2, + "locked": true, + "name": "Slides", + "pos": { + "x": 40.0, + "y": 40.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_filter": "disable", + "visible": true + }, + { + "align": 5, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_align": 0, + "bounds_type": 0, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 3, + "locked": true, + "name": "Background (side-by-side)", + "pos": { + "x": 0.0, + "y": 0.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_filter": "disable", + "visible": true + } + ] + }, + "sync": 0, + "volume": 1.0 + }, + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": {}, + "id": "v4l2_input", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Slides", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "buffering": true, + "device_id": "/dev/v4l/by-id/usb-VXIS_Inc_ACASIS-video-index0", + "framerate": 65566, + "input": 0, + "pixelformat": 842093913, + "resolution": 83886800 + }, + "sync": 0, + "volume": 1.0 + }, + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "filters": [ + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": {}, + "id": "color_key_filter", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Color Key", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "key_color_type": "green", + "similarity": 1, + "smoothness": 1 + }, + "sync": 0, + "volume": 1.0 + } + ], + "flags": 0, + "hotkeys": {}, + "id": "image_source", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Background (side-by-side)", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "file": "/opt/artwork/{{ event.id }}/side-by-side.png", + "unload": false + }, + "sync": 0, + "volume": 1.0 + }, + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": {}, + "id": "v4l2_input", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Camera", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "buffering": true, + "device_id": "/dev/v4l/by-id/usb-Creative_Labs_VF0470_Live__Cam_Notebook-video-index0", + "framerate": 65566, + "input": 0, + "pixelformat": 842093913, + "resolution": 41943520 + }, + "sync": 0, + "volume": 1.0 + }, + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": { + "OBSBasic.SelectScene": [ + { + "key": "OBS_KEY_F2" + } + ] + }, + "id": "scene", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Camera Primary 16:9", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "id_counter": 3, + "items": [ + { + "align": 5, + "bounds": { + "x": 1120.0, + "y": 1000.0 + }, + "bounds_align": 0, + "bounds_type": 3, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 2, + "locked": true, + "name": "Camera", + "pos": { + "x": 40.0, + "y": 40.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_filter": "disable", + "visible": true + }, + { + "align": 5, + "bounds": { + "x": 680.0, + "y": 383.0 + }, + "bounds_align": 0, + "bounds_type": 1, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 3, + "locked": true, + "name": "Slides", + "pos": { + "x": 1200.0, + "y": 657.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_filter": "disable", + "visible": true + }, + { + "align": 5, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_align": 0, + "bounds_type": 0, + "crop_bottom": 0, + "crop_left": 0, + "crop_right": 0, + "crop_top": 0, + "id": 1, + "locked": true, + "name": "Background (side-by-side-reverse)", + "pos": { + "x": 0.0, + "y": 0.0 + }, + "private_settings": {}, + "rot": 0.0, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_filter": "disable", + "visible": true + } + ] + }, + "sync": 0, + "volume": 1.0 + }, + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "filters": [ + { + "deinterlace_field_order": 0, + "deinterlace_mode": 0, + "enabled": true, + "flags": 0, + "hotkeys": {}, + "id": "color_key_filter", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Color Key", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "key_color_type": "green", + "similarity": 1, + "smoothness": 1 + }, + "sync": 0, + "volume": 1.0 + } + ], + "flags": 0, + "hotkeys": {}, + "id": "image_source", + "mixers": 0, + "monitoring_type": 0, + "muted": false, + "name": "Background (side-by-side-reverse)", + "private_settings": {}, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "settings": { + "file": "/opt/artwork/{{ event.id }}/side-by-side-reverse.png", + "unload": false + }, + "sync": 0, + "volume": 1.0 + } + ], + "transition_duration": 300, + "transitions": [] +} diff --git a/ansible/roles/recorder/templates/obs-studio/global.ini b/ansible/roles/recorder/templates/obs-studio/global.ini new file mode 100644 index 0000000..5d0192e --- /dev/null +++ b/ansible/roles/recorder/templates/obs-studio/global.ini @@ -0,0 +1,27 @@ +[General] +Pre19Defaults=false +Pre21Defaults=false +FirstRun=true +LastVersion=352321538 + +[PropertiesWindow] +cx=720 +cy=580 + +[BasicWindow] +geometry=AdnQywACAAAAAABDAAAAGwAAA/8AAAL/AAAAWAAAAEYAAAOuAAACwgAAAAACAAAABAA= +DockState=AAAA/wAAAAD9AAAAAQAAAAMAAAO9AAAA+/wBAAAABfsAAAAUAHMAYwBlAG4AZQBzAEQAbwBjAGsBAAAAAAAAANsAAACoAP////sAAAAWAHMAbwB1AHIAYwBlAHMARABvAGMAawEAAADhAAAA3AAAAKgA////+wAAABIAbQBpAHgAZQByAEQAbwBjAGsBAAABwwAAASoAAADkAP////sAAAAeAHQAcgBhAG4AcwBpAHQAaQBvAG4AcwBEAG8AYwBrAAAAAlgAAAC/AAAAggD////7AAAAGABjAG8AbgB0AHIAbwBsAHMARABvAGMAawEAAALzAAAAygAAAJsA////AAADvQAAAZkAAAAEAAAABAAAAAgAAAAI/AAAAAA= +PreviewEnabled=true +AlwaysOnTop=false +SceneDuplicationMode=true +SwapScenesMode=true +EditPropertiesMode=false +PreviewProgramMode=false +DocksLocked=true +ShowListboxToolbars=false + +[Basic] +SceneCollection={{ event.id }} +SceneCollectionFile={{ event.id }} +Profile={{ record_profile }} +ProfileDir={{ record_profile }}