# VTubing **Effective 14 July 2024** Naomi uses her VTuber model for all of her client meetings, as well as streaming. Getting the software to work on Linux is a bit of a nightmare, so this page documents how she does so. ## 1. OpenSeeFace In order to track her webcamera, OpenSeeFace needs to be run independently as a native script. ### 1.1. Installation This should all be done in your home `~` directory. - Begin by cloning the repository: - `git clone https://github.com/emilianavt/OpenSeeFace` - `cd OpenSeeFace` - You will need to prepare Python - Install the packages: `yay -Sy python python-virtualenv` - Prepare the environment: `virtualenv -p python3 env` - Source the environment: `source env/bin/activate` - Install the dependencies: `pip3 install onnxruntime opencv-python pillow numpy` ### 1.2. Running Naomi uses a bash script to run the program. Put this in `~/Documents/scripts/osf.sh`. ```bash #!/bin/bash cd ~/OpenSeeFace && \ source env/bin/activate && \ python facetracker.py -c 0 -W 1280 -H 720 --discard-after 0 --scan-every 0 --no-3d-adapt 1 --max-feature-updates 900 ``` ### 1.3. Desktop Shortcut The `.desktop` file allows this to run from the application tray. Put this in `~/.local/share/applications/osf.desktop`. ```ini [Desktop Entry] Name=OpenSeeFace Exec=/home/naomi/Documents/scripts/osf.sh Icon=/home/naomi/Documents/scripts/osf.png Terminal=true Type=Application ``` ## 2. VSeeFace VSeeFace does not run natively, and will need to run with Wine. ### 2.1. Installation [Download and run the installer](https://www.vseeface.icu/#download). When selecting a directory, put it in `~/VSeeFace`. ### 2.2. Running Naomi uses a bash script to run the program. Put this in `~/Documents/scripts/vsf.sh`. ```bash #!/bin/bash wine ~/VSeeFace/VSeeFace.exe --background-color "#00FF00" ``` The `--background-color` flag creates a green screen background to be chroma-keyed out by OBS. ### 1.3. Desktop Shortcut The `.desktop` file allows this to run from the application tray. Put this in `~/.local/share/applications/osf.desktop`. ```ini [Desktop Entry] Name=VSeeFace Exec=/home/naomi/Documents/scripts/vsf.sh Icon=/home/naomi/Documents/scripts/vsf.png Terminal=true Type=Application ``` ## 3. OBS OBS allows for virtual camera, as well as for streaming. ### 3.1. Installation The `obs-studio-liberty` package bundles everything together, offering both virtual camera and browser source support. These are essential for the setup. ### 3.2. Scenes You can import this JSON file to get Naomi's list of scenes.
Show file ```json { "DesktopAudioDevice1": { "prev_ver": 503447552, "name": "Desktop Audio", "uuid": "3cf343c8-94fa-4e7e-999a-c682a2fee814", "id": "pulse_output_capture", "versioned_id": "pulse_output_capture", "settings": { "device_id": "default" }, "mixers": 255, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "libobs.mute": [], "libobs.unmute": [], "libobs.push-to-mute": [], "libobs.push-to-talk": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, "AuxAudioDevice1": { "prev_ver": 503447552, "name": "Mic/Aux", "uuid": "a1c8fff9-1d45-467a-b647-73711e02e915", "id": "pulse_input_capture", "versioned_id": "pulse_input_capture", "settings": { "device_id": "Remap-Source" }, "mixers": 255, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "libobs.mute": [], "libobs.unmute": [], "libobs.push-to-mute": [], "libobs.push-to-talk": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, "current_scene": "Virtual Cam", "current_program_scene": "Virtual Cam", "scene_order": [ { "name": "Virtual Cam" }, { "name": "Stream" }, { "name": "Start" }, { "name": "BRB" }, { "name": "End" } ], "name": "Naomi", "groups": [], "quick_transitions": [ { "name": "Cut", "duration": 300, "hotkeys": [], "id": 1, "fade_to_black": false }, { "name": "Fade", "duration": 300, "hotkeys": [], "id": 2, "fade_to_black": false }, { "name": "Fade", "duration": 300, "hotkeys": [], "id": 3, "fade_to_black": true } ], "transitions": [ { "name": "Transition", "id": "obs_stinger_transition", "settings": { "path": "/home/naomi/Documents/stream/stinger.webm", "track_matte_enabled": true, "audio_monitoring": 2 } } ], "saved_projectors": [], "current_transition": "Transition", "transition_duration": 300, "preview_locked": false, "scaling_enabled": false, "scaling_level": 0, "scaling_off_x": 0.0, "scaling_off_y": 0.0, "virtual-camera": { "type2": 3 }, "modules": { "scripts-tool": [], "output-timer": { "streamTimerHours": 0, "streamTimerMinutes": 0, "streamTimerSeconds": 30, "recordTimerHours": 0, "recordTimerMinutes": 0, "recordTimerSeconds": 30, "autoStartStreamTimer": false, "autoStartRecordTimer": false, "pauseRecordTimer": true }, "auto-scene-switcher": { "interval": 300, "non_matching_scene": "", "switch_if_not_matching": false, "active": false, "switches": [] } }, "resolution": { "x": 1920, "y": 1080 }, "sources": [ { "prev_ver": 503447552, "name": "Alerts", "uuid": "f1d0e2a1-3bbf-4a75-80ab-91243c5590d4", "id": "browser_source", "versioned_id": "browser_source", "settings": { "url": "https://streamlabs.com/alert-box/v3/" }, "mixers": 255, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "libobs.mute": [], "libobs.unmute": [], "libobs.push-to-mute": [], "libobs.push-to-talk": [], "ObsBrowser.Refresh": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, { "prev_ver": 503447552, "name": "BRB", "uuid": "bccd5453-1e6e-4335-8111-b01adf3e9541", "id": "scene", "versioned_id": "scene", "settings": { "id_counter": 4, "custom_size": false, "items": [ { "name": "Slide Background", "source_uuid": "7f03fc0d-6d95-4e9e-b4e7-2e43967b2488", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 0.0, "y": 0.0 }, "scale": { "x": 1.0, "y": 1.0 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 1, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} }, { "name": "Text BRB", "source_uuid": "6f46d696-d2f1-49b4-957d-1f06a9392cdc", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 582.0, "y": 364.0 }, "scale": { "x": 1.0, "y": 1.0 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 3, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} }, { "name": "Alerts", "source_uuid": "f1d0e2a1-3bbf-4a75-80ab-91243c5590d4", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 0.0, "y": 0.0 }, "scale": { "x": 1.7999999523162842, "y": 1.7999999523162842 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 4, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} } ] }, "mixers": 0, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "OBSBasic.SelectScene": [], "libobs.show_scene_item.1": [], "libobs.hide_scene_item.1": [], "libobs.show_scene_item.3": [], "libobs.hide_scene_item.3": [], "libobs.show_scene_item.4": [], "libobs.hide_scene_item.4": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, { "prev_ver": 503447552, "name": "Cam Background", "uuid": "6bd1ef08-a91e-4b0b-bb1a-d3ee2387f5f5", "id": "ffmpeg_source", "versioned_id": "ffmpeg_source", "settings": { "close_when_inactive": true, "local_file": "/home/naomi/Documents/stream/virtual-cam-bg.webm", "looping": true }, "mixers": 255, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "libobs.mute": [], "libobs.unmute": [], "libobs.push-to-mute": [], "libobs.push-to-talk": [], "MediaSource.Restart": [], "MediaSource.Play": [], "MediaSource.Pause": [], "MediaSource.Stop": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, { "prev_ver": 503447552, "name": "Cam Overlay", "uuid": "bf638a3c-5133-406c-a3d2-541723f715f9", "id": "ffmpeg_source", "versioned_id": "ffmpeg_source", "settings": { "close_when_inactive": true, "local_file": "/home/naomi/Documents/stream/virtual-cam-overlay.webm", "looping": true }, "mixers": 255, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "libobs.mute": [], "libobs.unmute": [], "libobs.push-to-mute": [], "libobs.push-to-talk": [], "MediaSource.Restart": [], "MediaSource.Play": [], "MediaSource.Pause": [], "MediaSource.Stop": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, { "prev_ver": 503447552, "name": "Chat", "uuid": "005e5143-427d-405c-84aa-b50210ad015f", "id": "browser_source", "versioned_id": "browser_source", "settings": { "url": "https://streamlabs.com/widgets/chat-box/v1/", "width": 500, "css": "body { background: white }" }, "mixers": 255, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "libobs.mute": [], "libobs.unmute": [], "libobs.push-to-mute": [], "libobs.push-to-talk": [], "ObsBrowser.Refresh": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, { "prev_ver": 503447552, "name": "End", "uuid": "74d15386-4a95-4a1e-90ce-6b4f4c77615f", "id": "scene", "versioned_id": "scene", "settings": { "id_counter": 4, "custom_size": false, "items": [ { "name": "Slide Background", "source_uuid": "7f03fc0d-6d95-4e9e-b4e7-2e43967b2488", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 0.0, "y": 0.0 }, "scale": { "x": 1.0, "y": 1.0 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 1, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} }, { "name": "Text End", "source_uuid": "e84200d5-b7bf-4230-afff-ff7cbae8a8d3", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 586.0, "y": 363.0 }, "scale": { "x": 1.0, "y": 1.0 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 3, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} }, { "name": "Alerts", "source_uuid": "f1d0e2a1-3bbf-4a75-80ab-91243c5590d4", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 0.0, "y": 0.0 }, "scale": { "x": 1.7999999523162842, "y": 1.7999999523162842 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 4, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} } ] }, "mixers": 0, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "OBSBasic.SelectScene": [], "libobs.show_scene_item.1": [], "libobs.hide_scene_item.1": [], "libobs.show_scene_item.3": [], "libobs.hide_scene_item.3": [], "libobs.show_scene_item.4": [], "libobs.hide_scene_item.4": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, { "prev_ver": 503447552, "name": "Game", "uuid": "b4b086c6-2733-4c66-b833-b0546d8d928f", "id": "xcomposite_input", "versioned_id": "xcomposite_input", "settings": { "capture_window": "" }, "mixers": 0, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": {}, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, { "prev_ver": 503447552, "name": "Model", "uuid": "61587530-1788-4a8a-9854-55d7ab8643c1", "id": "xcomposite_input", "versioned_id": "xcomposite_input", "settings": { "capture_window": "", "show_cursor": false }, "mixers": 0, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": {}, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {}, "filters": [ { "prev_ver": 503447552, "name": "Chroma Key", "uuid": "3c3151f6-95cf-431c-8f9d-d0c4d0276265", "id": "chroma_key_filter", "versioned_id": "chroma_key_filter_v2", "settings": {}, "mixers": 0, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": {}, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} } ] }, { "prev_ver": 503447552, "name": "Slide Background", "uuid": "7f03fc0d-6d95-4e9e-b4e7-2e43967b2488", "id": "ffmpeg_source", "versioned_id": "ffmpeg_source", "settings": { "close_when_inactive": true, "local_file": "/home/naomi/Documents/stream/slide-bg.webm", "looping": true }, "mixers": 255, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "libobs.mute": [], "libobs.unmute": [], "libobs.push-to-mute": [], "libobs.push-to-talk": [], "MediaSource.Restart": [], "MediaSource.Play": [], "MediaSource.Pause": [], "MediaSource.Stop": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, { "prev_ver": 503447552, "name": "Start", "uuid": "527629ef-79c9-4b1a-a006-738220d3e68f", "id": "scene", "versioned_id": "scene", "settings": { "id_counter": 4, "custom_size": false, "items": [ { "name": "Slide Background", "source_uuid": "7f03fc0d-6d95-4e9e-b4e7-2e43967b2488", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 0.0, "y": 0.0 }, "scale": { "x": 1.0, "y": 1.0 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 1, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} }, { "name": "Text Start", "source_uuid": "f8ec5105-3e0e-44df-925e-1de60b69aac9", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 557.0, "y": 413.0 }, "scale": { "x": 1.0, "y": 1.0 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 3, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} }, { "name": "Alerts", "source_uuid": "f1d0e2a1-3bbf-4a75-80ab-91243c5590d4", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 0.0, "y": 0.0 }, "scale": { "x": 1.7999999523162842, "y": 1.7999999523162842 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 4, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} } ] }, "mixers": 0, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "OBSBasic.SelectScene": [], "libobs.show_scene_item.1": [], "libobs.hide_scene_item.1": [], "libobs.show_scene_item.3": [], "libobs.hide_scene_item.3": [], "libobs.show_scene_item.4": [], "libobs.hide_scene_item.4": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, { "prev_ver": 503447552, "name": "Stream", "uuid": "7936741f-a3a3-478d-acdc-ca0e25fc1da1", "id": "scene", "versioned_id": "scene", "settings": { "id_counter": 6, "custom_size": false, "items": [ { "name": "Stream Background", "source_uuid": "d9b7efee-1348-4d0f-9b2d-f7ea0ecad7e7", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 1222.0, "y": 403.0 }, "scale": { "x": 1.0, "y": 1.0 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 1, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} }, { "name": "Game", "source_uuid": "b4b086c6-2733-4c66-b833-b0546d8d928f", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 54.0, "y": 98.0 }, "scale": { "x": 0.71406251192092896, "y": 0.71428573131561279 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 3, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} }, { "name": "Model", "source_uuid": "61587530-1788-4a8a-9854-55d7ab8643c1", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 1266.0, "y": 607.0 }, "scale": { "x": 0.58046877384185791, "y": 0.58055555820465088 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 4, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} }, { "name": "Stream Overlay", "source_uuid": "26865859-0f4d-4e3f-8285-e7567de6ab80", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 0.0, "y": 0.0 }, "scale": { "x": 1.0, "y": 1.0 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 2, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} }, { "name": "Alerts", "source_uuid": "f1d0e2a1-3bbf-4a75-80ab-91243c5590d4", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 0.0, "y": 0.0 }, "scale": { "x": 1.7999999523162842, "y": 1.7999999523162842 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 5, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} }, { "name": "Chat", "source_uuid": "005e5143-427d-405c-84aa-b50210ad015f", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 1420.0, "y": 0.0 }, "scale": { "x": 1.0, "y": 1.0 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 6, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} } ] }, "mixers": 0, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "OBSBasic.SelectScene": [], "libobs.show_scene_item.1": [], "libobs.hide_scene_item.1": [], "libobs.show_scene_item.3": [], "libobs.hide_scene_item.3": [], "libobs.show_scene_item.4": [], "libobs.hide_scene_item.4": [], "libobs.show_scene_item.2": [], "libobs.hide_scene_item.2": [], "libobs.show_scene_item.5": [], "libobs.hide_scene_item.5": [], "libobs.show_scene_item.6": [], "libobs.hide_scene_item.6": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, { "prev_ver": 503447552, "name": "Stream Background", "uuid": "d9b7efee-1348-4d0f-9b2d-f7ea0ecad7e7", "id": "ffmpeg_source", "versioned_id": "ffmpeg_source", "settings": { "close_when_inactive": true, "local_file": "/home/naomi/Documents/stream/stream-bg.webm", "looping": true }, "mixers": 255, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "libobs.mute": [], "libobs.unmute": [], "libobs.push-to-mute": [], "libobs.push-to-talk": [], "MediaSource.Restart": [], "MediaSource.Play": [], "MediaSource.Pause": [], "MediaSource.Stop": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, { "prev_ver": 503447552, "name": "Stream Overlay", "uuid": "26865859-0f4d-4e3f-8285-e7567de6ab80", "id": "ffmpeg_source", "versioned_id": "ffmpeg_source", "settings": { "close_when_inactive": true, "local_file": "/home/naomi/Documents/stream/stream-overlay.webm", "looping": true }, "mixers": 255, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "libobs.mute": [], "libobs.unmute": [], "libobs.push-to-mute": [], "libobs.push-to-talk": [], "MediaSource.Restart": [], "MediaSource.Play": [], "MediaSource.Pause": [], "MediaSource.Stop": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, { "prev_ver": 503447552, "name": "Text BRB", "uuid": "6f46d696-d2f1-49b4-957d-1f06a9392cdc", "id": "ffmpeg_source", "versioned_id": "ffmpeg_source", "settings": { "local_file": "/home/naomi/Documents/stream/slide-text-brb.webm", "close_when_inactive": true, "looping": true }, "mixers": 255, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "libobs.mute": [], "libobs.unmute": [], "libobs.push-to-mute": [], "libobs.push-to-talk": [], "MediaSource.Restart": [], "MediaSource.Play": [], "MediaSource.Pause": [], "MediaSource.Stop": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, { "prev_ver": 503447552, "name": "Text End", "uuid": "e84200d5-b7bf-4230-afff-ff7cbae8a8d3", "id": "ffmpeg_source", "versioned_id": "ffmpeg_source", "settings": { "local_file": "/home/naomi/Documents/stream/slide-text-end.webm", "looping": true }, "mixers": 255, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "libobs.mute": [], "libobs.unmute": [], "libobs.push-to-mute": [], "libobs.push-to-talk": [], "MediaSource.Restart": [], "MediaSource.Play": [], "MediaSource.Pause": [], "MediaSource.Stop": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, { "prev_ver": 503447552, "name": "Text Start", "uuid": "f8ec5105-3e0e-44df-925e-1de60b69aac9", "id": "ffmpeg_source", "versioned_id": "ffmpeg_source", "settings": { "local_file": "/home/naomi/Documents/stream/slide-text-start.webm", "close_when_inactive": true, "undo_uuid": "f8ec5105-3e0e-44df-925e-1de60b69aac9", "looping": true }, "mixers": 255, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "libobs.mute": [], "libobs.unmute": [], "libobs.push-to-mute": [], "libobs.push-to-talk": [], "MediaSource.Restart": [], "MediaSource.Play": [], "MediaSource.Pause": [], "MediaSource.Stop": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} }, { "prev_ver": 503447552, "name": "Virtual Cam", "uuid": "251f1f3f-846d-475d-a496-9c9afd69125a", "id": "scene", "versioned_id": "scene", "settings": { "id_counter": 3, "custom_size": false, "items": [ { "name": "Cam Background", "source_uuid": "6bd1ef08-a91e-4b0b-bb1a-d3ee2387f5f5", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 0.0, "y": 0.0 }, "scale": { "x": 1.0, "y": 1.0 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 1, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} }, { "name": "Model", "source_uuid": "61587530-1788-4a8a-9854-55d7ab8643c1", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 0.0, "y": 0.0 }, "scale": { "x": 1.0, "y": 1.0 }, "align": 5, "bounds_type": 2, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 1920.0, "y": 1080.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 3, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} }, { "name": "Cam Overlay", "source_uuid": "bf638a3c-5133-406c-a3d2-541723f715f9", "visible": true, "locked": false, "rot": 0.0, "pos": { "x": 0.0, "y": 0.0 }, "scale": { "x": 1.0, "y": 1.0 }, "align": 5, "bounds_type": 0, "bounds_align": 0, "bounds_crop": false, "bounds": { "x": 0.0, "y": 0.0 }, "crop_left": 0, "crop_top": 0, "crop_right": 0, "crop_bottom": 0, "id": 2, "group_item_backup": false, "scale_filter": "disable", "blend_method": "default", "blend_type": "normal", "show_transition": { "duration": 0 }, "hide_transition": { "duration": 0 }, "private_settings": {} } ] }, "mixers": 0, "sync": 0, "flags": 0, "volume": 1.0, "balance": 0.5, "enabled": true, "muted": false, "push-to-mute": false, "push-to-mute-delay": 0, "push-to-talk": false, "push-to-talk-delay": 0, "hotkeys": { "OBSBasic.SelectScene": [], "libobs.show_scene_item.1": [], "libobs.hide_scene_item.1": [], "libobs.show_scene_item.3": [], "libobs.hide_scene_item.3": [], "libobs.show_scene_item.2": [], "libobs.hide_scene_item.2": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, "monitoring_type": 0, "private_settings": {} } ] } ```
### 3.3. Profile This configuration file sets up the OBS profile. ```ini [General] Name=Naomi [Output] Mode=Simple FilenameFormatting=%CCYY-%MM-%DD %hh-%mm-%ss DelayEnable=false DelaySec=20 DelayPreserve=true Reconnect=true RetryDelay=2 MaxRetries=25 BindIP=default IPFamily=IPv4+IPv6 NewSocketLoopEnable=false LowLatencyEnable=false [Stream1] IgnoreRecommended=false [SimpleOutput] FilePath=/home/naomi RecFormat2=mkv VBitrate=2500 ABitrate=160 UseAdvanced=false Preset=veryfast NVENCPreset2=p5 RecQuality=Stream RecRB=false RecRBTime=20 RecRBSize=512 RecRBPrefix=Replay StreamAudioEncoder=aac RecAudioEncoder=aac RecTracks=1 StreamEncoder=nvenc RecEncoder=nvenc [AdvOut] ApplyServiceSettings=true UseRescale=false TrackIndex=1 VodTrackIndex=2 Encoder=obs_x264 RecType=Standard RecFilePath=/home/naomi RecFormat2=mkv RecUseRescale=false RecTracks=1 RecEncoder=none FLVTrack=1 StreamMultiTrackAudioMixes=1 FFOutputToFile=true FFFilePath=/home/naomi FFExtension=mp4 FFVBitrate=2500 FFVGOPSize=250 FFUseRescale=false FFIgnoreCompat=false FFABitrate=160 FFAudioMixes=1 Track1Bitrate=160 Track2Bitrate=160 Track3Bitrate=160 Track4Bitrate=160 Track5Bitrate=160 Track6Bitrate=160 RecSplitFileTime=15 RecSplitFileSize=2048 RecRB=false RecRBTime=20 RecRBSize=512 AudioEncoder=libfdk_aac RecAudioEncoder=libfdk_aac [Video] BaseCX=1920 BaseCY=1080 OutputCX=1920 OutputCY=1080 FPSType=0 FPSCommon=30 FPSInt=30 FPSNum=30 FPSDen=1 ScaleType=bicubic ColorFormat=NV12 ColorSpace=709 ColorRange=Partial SdrWhiteLevel=300 HdrNominalPeakLevel=1000 [Audio] MonitoringDeviceId=default MonitoringDeviceName=Default SampleRate=48000 ChannelSetup=Stereo MeterDecayRate=23.53 PeakMeterType=0 [Panels] CookieId=#redacted ``` ### 3.4. Docks This configuration file loads Naomi's standard dock layout. Sensitive information has been redacted. This specifically goes in `~/.config/obs-studio/global.ini`. ```ini [General] Pre19Defaults=false Pre21Defaults=false Pre23Defaults=false Pre24.1Defaults=false MaxLogs=10 InfoIncrement=1 ProcessPriority=Normal EnableAutoUpdates=true ConfirmOnExit=true HotkeyFocusType=NeverDisableHotkeys FirstRun=true InstallGUID=#Redacted CurrentTheme3=Light LastVersion=503382018 InfoLastVersion=32993938767872 [Video] Renderer=OpenGL [BasicWindow] PreviewEnabled=true PreviewProgramMode=false SceneDuplicationMode=true SwapScenesMode=true SnappingEnabled=true ScreenSnapping=true SourceSnapping=true CenterSnapping=false SnapDistance=10 SpacingHelpersEnabled=true RecordWhenStreaming=false KeepRecordingWhenStreamStops=false SysTrayEnabled=true SysTrayWhenStarted=false SaveProjectors=false ShowTransitions=true ShowListboxToolbars=true ShowStatusBar=true ShowSourceIcons=true ShowContextToolbars=true StudioModeLabels=true VerticalVolControl=false MultiviewMouseSwitch=true MultiviewDrawNames=true MultiviewDrawAreas=true MediaControlsCountdownTimer=true WarnBeforeStartingStream=false WarnBeforeStoppingStream=false WarnBeforeStoppingRecord=false geometry=AdnQywADAAAAAA8AAAAAAAAAFn8AAAQ3AAARNgAAACAAABVsAAAC2AAAAAICAAAAB4AAAA8AAAAAIAAAFn8AAAQ3 DockState=AAAA/wAAAAD9AAAAAwAAAAAAAAB0AAAC1/wCAAAAAfsAAAAiAEMAaABhAHQAXwBlAHgAdAByAGEAQgByAG8AdwBzAGUAcgEAAAAXAAAC1wAAAFAA////AAAAAQAAAY4AAALX/AIAAAAB/AAAABcAAALXAAAAUAD////8AQAAAAL7AAAAMABSAGUAZABlAG0AcAB0AGkAbwBuAHMAXwBlAHgAdAByAGEAQgByAG8AdwBzAGUAcgEAAAXyAAAAwwAAAFAA////+wAAACgAQQBjAHQAaQBvAG4AcwBfAGUAeAB0AHIAYQBCAHIAbwB3AHMAZQByAQAABrkAAADHAAAAUAD///8AAAADAAAHgAAAAQT8AQAAAAf7AAAAFABzAGMAZQBuAGUAcwBEAG8AYwBrAQAAAAAAAAE1AAAAoAD////7AAAAFgBzAG8AdQByAGMAZQBzAEQAbwBjAGsBAAABOQAAATIAAACgAP////sAAAASAG0AaQB4AGUAcgBEAG8AYwBrAQAAAm8AAAGSAAAA3gD////7AAAAHgB0AHIAYQBuAHMAaQB0AGkAbwBuAHMARABvAGMAawEAAAQFAAABHwAAAIIA////+wAAACIARgBlAGUAZABfAGUAeAB0AHIAYQBCAHIAbwB3AHMAZQByAQAABSgAAAExAAAAUAD////7AAAAGABjAG8AbgB0AHIAbwBsAHMARABvAGMAawEAAAZdAAABIwAAAJ4A////+wAAABIAcwB0AGEAdABzAEQAbwBjAGsCAAACYgAAAbgAAAK8AAAAyAAABXYAAALXAAAABAAAAAQAAAAIAAAACPwAAAAA ExtraBrowserDocks=[{"title": "Redemptions", "url": "https://www.twitch.tv/popout/naomilgbt/reward-queue", "uuid": "redacted"}, {"title": "Feed", "url": "https://dashboard.twitch.tv/popout/u/naomilgbt/stream-manager/activity-feed?uuid=redacted", "uuid": "redacted"}, {"title": "Chat", "url": "https://dashboard.twitch.tv/popout/u/naomilgbt/stream-manager/chat?uuid=redacted", "uuid": "redacted"}, {"title": "Actions", "url": "https://dashboard.twitch.tv/popout/u/naomilgbt/stream-manager/quick-actions?uuid=redacted", "uuid": "redacted"}] AlwaysOnTop=false EditPropertiesMode=false DocksLocked=false SideDocks=false [Basic] Profile=Naomi ProfileDir=Naomi SceneCollection=Naomi SceneCollectionFile=Naomi ConfigOnNewProfile=true [OBSWebSocket] [Accessibility] SelectRed=255 SelectGreen=65280 SelectBlue=16744192 MixerGreen=2522918 MixerYellow=2523007 MixerRed=2500223 MixerGreenActive=5046092 MixerYellowActive=5046271 MixerRedActive=5000447 [PropertiesWindow] cx=720 cy=580 [ScriptLogWindow] geometry=AdnQywADAAAAAAABAAAAGQAAAlgAAAGoAAAAAQAAABkAAAJYAAABqAAAAAEAAAAAB4AAAAABAAAAGQAAAlgAAAGo [Appearance] Theme=com.obsproject.Yami.Light ```