├── CNAME ├── README.md ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon.ico ├── index.html ├── obs-studio.html ├── obs-studio.json ├── obs-studio.lua ├── obs-studio └── basic.ini ├── shot-1-trampoline.png ├── shot-2-caller-sender.png ├── shot-3-caller-receiver.png ├── shot-4-production.png ├── shot-5-director.png ├── vdon-call-logo.ai ├── vdon-call-logo.svg └── vdon.css /CNAME: -------------------------------------------------------------------------------- 1 | caller.studio -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | VDON Call 5 | ========= 6 | 7 | **VDON Call** is a [WebRTC](https://en.wikipedia.org/wiki/WebRTC)/[NDI](https://ndi.tv)-based 8 | remote caller ingest solution for live video productions, based on 9 | the two swiss army knifes in their field: the awesome, low-latency, 10 | P2P-based video streaming facility [VDO.Ninja](https://vdo.ninja), 11 | and the awesome, ultra-flexible video mixing software 12 | [OBS Studio](https://obsproject.com). An instance of the landing page, the 13 | corresponding URL trampoline, of **VDON Call** is publically available 14 | under the meaningful name URL [caller.studio](https://caller.studio) 15 | (*caller of the studio*). 16 | 17 | Motivation 18 | ---------- 19 | 20 | The name **VDON Call** (spoken *ViDeO Ninja Call*) is derived from 21 | [vMix Call](https://www.vmix.com/products/vmix-call.aspx), the name of the 22 | great but weaker product **VDON Call** is intended to substitute in 23 | practice, if necessary. The motivation and primary killer feature of 24 | **VDON Call**, in contrast to the otherwise also awesome vMix Call, 25 | is that the callers can ingest their camera and content *in parallel* 26 | and without having to fiddle around with two independent Browser tabs 27 | and that this dual-ingest approach is available for 8 callers in total 28 | instead of just 4 (because vMix Call supports a maximum of 8 incoming 29 | video streams only). The resulting ingested video streams are available 30 | as NDI streams on the local network and can be easily consumed (usually 31 | on a separate computer) with a video mixing software like vMix or OBS 32 | Studio. 33 | 34 | Constraints 35 | ----------- 36 | 37 | The [underlying VDO.Ninja parameterization](https://github.com/rse/vdon-call/blob/master/index.html#L368) 38 | is very opinionated and heavily optimized for a total of 16+1 video 39 | streams, to allow one to ingest up to 8 callers with their camera and 40 | shared content (screen or window) into the video production and to 41 | provide a return feed from the video production back to the callers. The 42 | callers can hear but not see each other, except the provided return feed 43 | is some sort of multiview and shows the callers. This is intentional, 44 | as this is not a general video conferencing solution, but a dedicated 45 | way to ingest remote video callers of a production. Please keep this in 46 | mind. 47 | 48 | There are two particular bottlenecks in this approach, which are 49 | addressed by the particular VDO.Ninja parameterization: 50 | 51 | 1. **CALLER INGEST FEEDS**: 52 | 53 | The caller receiver-side is an OBS Studio, acting as a WebRTC-to-NDI 54 | gateway and has to run on a medium gaming PC (Intel Core i7 11700KF, 55 | NVIDIA RTX 3070Ti, 32GB RAM) with just about a maximum of about 80% 56 | overall resource utilization. As a result, the callers camera use 57 | 720p24 and a bitrate of 2000 kbps with H.264 and the callers content 58 | use 1080p6 and a bitrate of 3000 kbps with H.264. 59 | 60 | 2. **PRODUCTION RETURN FEED**: 61 | 62 | The production sender-side, providing the return feed of the video 63 | production back to the caller, should require no more than half of 64 | the uplink (50 mbps) and downlink (100 mbps) of the usual Internet 65 | connections available in Germany. As a result, the return feed uses 66 | 1080p29.97 and a bitrate of 3000 kbps with VP8. 67 | 68 | Installation 69 | ------------ 70 | 71 | The solution consists of the following parts which have to be installed: 72 | 73 | 1. **URL TRAMPOLINE:** 74 | 75 | This is just the files [index.html](index.html), [vdon.css](vdon.css) and [vdon-call-logo.svg](vdon-call-logo.svg), 76 | which act as a URL trampoline, a 77 | tiny webpage which generates the underlying, heavily parameterized VDO.Ninja 78 | URLs. Install it as `index.html` to an arbitrary Internet service. 79 | The page without any attached parameters is usually only used 80 | by the video production crew to generate URLs. The page 81 | with attached parameters is used by all **VDON Call** components 82 | (see below) to expand the short URLs to the underlying VDO.Ninja URLs. 83 | For convenience reasons, an instance of this URL trampoline 84 | is publically available under the meaningful URL 85 | [caller.studio](https://caller.studio). 86 | 87 | 2. **WEBRTC-TO-NDI GATEWAY:** 88 | 89 | This is an OBS Studio instance, driven by the files [obs-studio/basic.ini](obs-studio/basic.ini), 90 | [obs-studio.json](obs-studio.json), 91 | [obs-studio.lua](obs-studio.lua) and 92 | [obs-studio.html](obs-studio.html). 93 | These are the OBS Studio profile, scene collection, configuration update script and 94 | optional entry page, which establish OBS Studio as a WebRTC-to-NDI gateway. 95 | For this to work, you have to locally install the following 96 | prerequisites: 97 | 98 | - [NDI Tools](https://www.ndi.tv/tools/) 99 | - [OBS Studio](https://obsproject.com/) 100 | - [OBS NDI](https://github.com/Palakis/obs-ndi/) 101 | 102 | Then use *Profile* → *Import* for importing the 103 | [obs-studio/](obs-studio/) directory. Then use *Scene Collection* 104 | → *Import* for importing the [obs-studio.json](obs-studio.json) 105 | file. Then, use *Tools* → *Scripts* → `+` for importing the 106 | [obs-studio.lua](obs-studio.lua) file. 107 | 108 | Once this is done, use *Tools* → *Scripts* → 109 | `obs-studio.lua` to update all browser sources in OBS Studio with 110 | your URL trampoline information. The "Base URL" is either `https://caller.studio/`, 111 | `file:///#https://caller.studio/` (if you want to 112 | use the optional entry page -- usually just for debugging purposes), 113 | or your own URL where you deployed the URL trampoline (see above). 114 | 115 | 3. **VIDEO PRODUCTION:** 116 | 117 | This is the actual video production which requires a video mixing 118 | software like vMix or OBS Studio to consume and mix the NDI streams 119 | of the callers and produce a "program" (aka output) which can act 120 | as the return feed video stream to the callers. This really has to 121 | run on a computer which is separate (but in the same LAN) to the 122 | WebRTC-to-NDI gateway. 123 | 124 | Components 125 | ---------- 126 | 127 | The solution consists of the following logical parts under run-time: 128 | 129 | - **URL Trampoline** 130 | 131 | This is the URL trampoline which is deployed to a publically reachable 132 | URL like `https://caller.studio`, and which can be used by the 133 | production crew to easily generate the required "short" URLs based 134 | on unique organisation name and a room name (unique per organisation). Its 135 | trampoline functionality on access of these "short" URLs expand to the 136 | underlying, technical, heavily-parameterized VDO.Ninja URLs. 137 | 138 | ![](shot-1-trampoline.png) 139 | 140 | - **Caller (Sender)** 141 | 142 | This is the caller sender-side, i.e., Google Chrome opened a URL 143 | like `https://caller.studio/#/example/example/C1`. 144 | The result the VDO.Ninja user interface, configured for a caller 145 | participating in a room where the user can only see its own camera and 146 | shared content preview and the return feed of the production (here 147 | a multiview from vMix). 148 | You can also attach the following optional parameters to the URL (concatenate multiple ones with "&"): 149 | - `vdon=:,...` (apply arbitrary VDO.Ninja options) 150 | - `version=` (force use of a particular VDO.Ninja version: `v20`, `v21`, `v22`, `dev`, `alpha`, `beta`, or even fully-qualified URL to own VDO.Ninja instance) 151 | - `quality=high` (use 30/30 FPS and 3/3 Mbps instead of 24/6 FPS and 2/2 Mbps for camera/screen) 152 | - `codec=` (use codec `x264`, `vp9`, `av1` or `webp` instead of `vp8`) 153 | - `audiocodec=`(use codec `pcm`, or `g722` instead of `opus`) 154 | - `cam=` (camera device) 155 | - `mic=` (microphone device) 156 | - `spk=` (speaker device) 157 | - `lang=` (ISO country code for UI language) 158 | - `bg=` (background replacement: `blur`, `green` or `canvas`) 159 | - `ducking` (use audio ducking/noisegate) 160 | - `audiodelay=` (delay audio) 161 | - `videodelay=` (delay video) 162 | An example sender URL would be 163 | `https://caller.studio/#/example/example/C1?cam=Standard&mic=Standard&lang=de&bg=blur` 164 | 165 | ![](shot-2-caller-sender.png) 166 | 167 | - **Caller (Receiver)** 168 | 169 | This is the heart of the solution, the caller receiver-side, 170 | i.e., OBS Studio with the **VDON Call** profile and 171 | scene collection loaded which accesses URLs like 172 | `https://caller.studio/#/example/example/C1?stream=camera` and 173 | `https://caller.studio/#/example/example/C1?stream=content`. For an 174 | overview, a special multiview scene is in preview (and also exposed 175 | via NDI for inclusion into the multiview of the production -- see 176 | below). 177 | You can also attach the following optional parameters to the URL (concatenate multiple ones with "&"): 178 | - `vdon=:,...` (apply arbitrary VDO.Ninja options) 179 | - `version=` (force use of a particular VDO.Ninja version: `v20`, `v21`, `v22`, `dev`, `alpha`, `beta`, or even fully-qualified URL to own VDO.Ninja instance) 180 | - `quality=high` (use 30/30 FPS and 3/3 Mbps instead of 24/6 FPS and 2/2 Mbps for camera/screen) 181 | - `codec=` (use codec `x264`, `vp9`, `av1` or `webp` instead of `vp8`) 182 | 183 | ![](shot-3-caller-receiver.png) 184 | 185 | - **Production (Sender)** 186 | 187 | This is the video production. It uses a video mixing software 188 | like vMix (shown here) or OBS Studio (as a decent alternative). This 189 | production receives all callers (and the multiview) from OBS 190 | Studio via NDI and mixes them into a resulting program video 191 | stream. For convenience reasons, beside this program video 192 | stream, this vMix instance also exports a multiview video stream 193 | which shows the caller ingest multiview, selected callers, the 194 | program video stream and the clock. Either the program or (as 195 | shown shere) the multiview video stream is then send back to the 196 | callers via a companion Google Chrome instance accessing the URL 197 | `https://caller.studio/#/example/example/A1` (standard) or 198 | `https://caller.studio/#/example/example/A2?mode=meshcast` (using the VDO.Ninja meshcast feature). 199 | Similar to the `mode=meshcast`, you can attach the following optional parameters 200 | to the URL (concatenate multiple ones with "&"): 201 | - `vdon=:,...` (apply arbitrary VDO.Ninja options) 202 | - `version=` (force use of a particular VDO.Ninja version: `v20`, `v21`, `v22`, `dev`, `alpha`, `beta`, or even fully-qualified URL to own VDO.Ninja instance) 203 | - `quality=high` (use 30/30 FPS and 3/3 Mbps instead of 24/6 FPS and 2/2 Mbps for camera/screen) 204 | - `codec=` (use codec `x264`, `vp9`, `av1` or `webp` instead of `vp8`) 205 | - `cam=` (camera device) 206 | - `mic=` (microphone device) 207 | - `spk=` (speaker device) 208 | An example URL would be 209 | `https://caller.studio/#/example/example/A1?cam=vMix Video External 2&mic=Line 2 (Virtual Audio Cable)` 210 | 211 | ![](shot-4-production.png) 212 | 213 | - **Director (Control)** 214 | 215 | This is the optional VDO.Ninja director 216 | view, i.e., Google Chrome accessing the URL 217 | `https://caller.studio/#/example/example/D1` 218 | where the production crew can send messages to the callers, adjust the 219 | parameters of the callers, etc. The director view intentionally has 220 | all incoming video/audio feeds disabled and also does not send an own 221 | outgoing video/audio feed to not cause any additional network traffic 222 | on the callers. 223 | You can also attach the following optional parameters to the URL (concatenate multiple ones with "&"): 224 | - `vdon=:,...` (apply arbitrary VDO.Ninja options) 225 | - `version=` (force use of a particular VDO.Ninja version: `v20`, `v21`, `v22`, `dev`, `alpha`, `beta`, or even fully-qualified URL to own VDO.Ninja instance) 226 | 227 | ![](shot-5-director.png) 228 | 229 | Design Cruxes 230 | ------------- 231 | 232 | The design of **VDON Call** is based on the following cruxes: 233 | 234 | - **OPTIMIZED VIDEO ENCODINGS**: 235 | The *Caller Ingest Feeds* use the video codec H.264, reduced 236 | resolutions (720p and 1080p), and reduced framerates (24 and 6) to 237 | allow the WebRTC-to-NDI gateway to cope with the decoding of 16 video 238 | streams and the re-encoding of 16+1 video streams. In contrast to 239 | this, the *Production Return Feed* uses the video codec VP8 as it 240 | provides better overall quality (H.264 on smaller sizes regularly 241 | degrades the video stream to be greyed or washed out). 242 | 243 | - **MINIMUM TOTAL VIDEO STREAMS**: 244 | The *Director* mode in VDO.Ninja is forced to not use any video 245 | or audio at all, to reduce the minimum number of total video streams 246 | in the room and especially reduce the load on the callers as good 247 | as possible. 248 | 249 | - **REDUCED USER INTERFAC CLUTTER:** 250 | The *Caller* mode in VDO.Ninja is forced to be as simple as 251 | possible from a user interface perspective (many features are 252 | intentionally disabled) to not confuse the callers as good as 253 | possible. 254 | 255 | - **SIMPLE AND INTUITIVE URLS:** 256 | The *Caller URLs* use the meaningful "caller.studio" domain and 257 | are reduced to the absolute minimum of the required information. 258 | All technical aspects of the underlying VDO.Ninja facility are 259 | hidden and are provided on-the-fly by expanding the URLs internally. 260 | 261 | - **NAMESPACE CONFLICT AVOIDANCE:** 262 | The VDO.Ninja room identifiers and stream identifiers are based 263 | on the hashing of an organization and room name. This way **VDON 264 | Call** does not "trash" the namespace of VDO.Ninja too much and is 265 | less likely in conflict with regular VDO.Ninja uses. 266 | 267 | - **USER INTERFACE STYLING:** 268 | The VDO.Ninja user interface, especially the entry page for selecting 269 | devices and the chat module, in dark mode and by default look rather 270 | unpolished. For an improved user acceptance, the appearance of the 271 | user interface of VDO.Ninja is improved with a VDON Call specific 272 | style. 273 | 274 | Simplified Usage 275 | ---------------- 276 | 277 | For just ingesting 1-4 remote guests with VDON Call instead of vMix Call 278 | into vMix, you can alternatively directly run the receiver side inside a 279 | Web Browser type input of vMix (for vMix 25 it is an ancient Chromium 280 | V86, but for vMix 26 it is at least V103). 281 | 282 | For ingesting a guest with 720p24 (camera) and 1080p6 (content) use: 283 | 284 | - Guest URL: `https://caller.studio/#/example/example/C1` 285 | - vMix Input 1 URL: `https://caller.studio/#/example/example/C1?stream=camera` 286 | - vMix Input 2 URL: `https://caller.studio/#/example/example/C1?stream=content` 287 | 288 | For ingesting a guest with 1080p30 (camera) and 1080p30 (content) use: 289 | 290 | - Guest URL: `https://caller.studio/#/example/example/C1?quality=high` 291 | - vMix Input 1 URL: `https://caller.studio/#/example/example/C1?quality=high&stream=camera` 292 | - vMix Input 2 URL: `https://caller.studio/#/example/example/C1?quality=high&stream=content` 293 | 294 | See Also 295 | -------- 296 | 297 | This solution was announced 2022/03 in the following communities: 298 | 299 | - [Reddit: VDO.Ninja](https://www.reddit.com/r/VDONinja/comments/ti8jz4/vdon_call_remote_caller_ingest_via_vdoninja_to/) 300 | - [Reddit: OBS Studio](https://www.reddit.com/r/obs/comments/tihbxz/vdon_call_external_ndibased_remote_caller_ingest/) 301 | - [Reddit: vMix](https://www.reddit.com/r/vmix/comments/ti8r3g/vdon_call_remote_caller_ingest_via_vdoninja_obs/) 302 | - [vMix: vMix Call](https://forums.vmix.com/posts/t28731-VDON-Call--a-vMix-Call-substitute--when-parallel-camera-and-screen-sharing-is-required) 303 | - [Twitter: Engelschall](https://twitter.com/engelschall/status/1505340731593998339) 304 | 305 | Copyright & License 306 | ------------------- 307 | 308 | Copyright © 2022-2025 [Dr. Ralf S. Engelschall](mailto:rse@engelschall.com)
309 | Licensed under [MIT](https://spdx.org/licenses/MIT) 310 | 311 | -------------------------------------------------------------------------------- /favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rse/vdon-call/ac9ed5269235e2872159c4e0d1b59d887571e215/favicon-16x16.png -------------------------------------------------------------------------------- /favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rse/vdon-call/ac9ed5269235e2872159c4e0d1b59d887571e215/favicon-32x32.png -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rse/vdon-call/ac9ed5269235e2872159c4e0d1b59d887571e215/favicon.ico -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | VDON Call 18 | 19 | 20 | 218 | 219 | 220 |
221 |
222 |
223 | 224 |
225 |
226 | 229 |
230 |
231 | Organisation   (unique globally): 232 |

233 | 234 |

235 |
236 | Room   (unique per organisation): 237 |

238 | 239 |

240 |
241 | Parameters   (optional): 242 |

243 | 244 |

245 |
246 |

247 |

248 | Trampoline Links (Fixed Caller Setup)   (unique globally): 249 |

250 |

256 | 266 | 276 | 286 |

287 | Trampoline Links (Dynamic Caller Setup)   (partially unique globally): 288 |

289 |

299 | 309 |
310 |
311 | 317 |
318 |
319 | 320 | 929 | 930 | -------------------------------------------------------------------------------- /obs-studio.html: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | VDON Call 16 | 48 | 49 | 50 |
51 |
52 |
53 | 56 |
57 | 58 | 62 | 63 | -------------------------------------------------------------------------------- /obs-studio.json: -------------------------------------------------------------------------------- 1 | {"current_program_scene":"Multiview","current_scene":"Multiview","current_transition":"Cut","groups":[],"modules":{"auto-scene-switcher":{"active":false,"interval":300,"non_matching_scene":"","switch_if_not_matching":false,"switches":[]},"captions":{"enabled":false,"lang_id":2057,"provider":"mssapi","source":""},"decklink_captions":{"source":""},"output-timer":{"autoStartRecordTimer":false,"autoStartStreamTimer":false,"pauseRecordTimer":true,"recordTimerHours":0,"recordTimerMinutes":0,"recordTimerSeconds":30,"streamTimerHours":0,"streamTimerMinutes":0,"streamTimerSeconds":30},"scripts-tool":[{"path":"obs-studio.lua","settings":{"textOrg":"example","textRoom":"example"}}]},"name":"Ingest","preview_locked":false,"quick_transitions":[{"duration":300,"fade_to_black":false,"hotkeys":[],"id":1,"name":"Cut"},{"duration":300,"fade_to_black":false,"hotkeys":[],"id":2,"name":"Fade"},{"duration":300,"fade_to_black":true,"hotkeys":[],"id":3,"name":"Fade"}],"saved_projectors":[],"scaling_enabled":false,"scaling_level":0,"scaling_off_x":0.0,"scaling_off_y":0.0,"scene_order":[{"name":"Multiview"},{"name":"Caller-1-Camera"},{"name":"Caller-1-Content"},{"name":"Caller-2-Camera"},{"name":"Caller-2-Content"},{"name":"Caller-3-Camera"},{"name":"Caller-3-Content"},{"name":"Caller-4-Camera"},{"name":"Caller-4-Content"},{"name":"Caller-5-Camera"},{"name":"Caller-5-Content"},{"name":"Caller-6-Camera"},{"name":"Caller-6-Content"},{"name":"Caller-7-Camera"},{"name":"Caller-7-Content"},{"name":"Caller-8-Camera"},{"name":"Caller-8-Content"}],"sources":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-8-Content-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"text":" Caller-8-Content "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-8-Camera-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"text":" Caller-8-Camera "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-7-Content-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"text":" Caller-7-Content "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-7-Camera-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"text":" Caller-7-Camera "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-6-Content-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"text":" Caller-6-Camera "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-6-Camera-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"text":" Caller-6-Camera "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-5-Content-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"text":" Caller-5-Content "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-5-Camera-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"text":" Caller-5-Camera "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-4-Content-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"text":" Caller-4-Content "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-4-Camera-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"text":" Caller-4-Camera "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-3-Content-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"text":" Caller-3-Content "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-3-Camera-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"text":" Caller-3-Camera "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-2-Content-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"text":" Caller-2-Content "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-2-Camera-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"text":" Caller-2-Camera "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-1-Content-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4284892194},"sync":0,"versioned_id":"color_source_v3","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-1-Content-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_color":4278190080,"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"text":" Caller-1-Content "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"text_gdiplus","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-1-Camera-ID","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"bk_opacity":90,"font":{"face":"Calibri","flags":0,"size":256,"style":"Regular"},"outline":false,"outline_color":4278190080,"outline_size":5,"text":" Caller-1-Camera "},"sync":0,"versioned_id":"text_gdiplus_v2","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-1-Camera-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4280427042},"sync":0,"versioned_id":"color_source_v3","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-6-Content"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-6-Content-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":6,"fps_custom":true,"height":1080,"reroute_audio":true,"url":"https://caller.studio/#/example/example/C6?stream=content","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-6-Camera"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-6-Camera-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":24,"fps_custom":true,"height":1080,"reroute_audio":true,"url":"https://caller.studio/#/example/example/C6?stream=camera","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-6-Content-BG":[],"libobs.hide_scene_item.Caller-6-Content-ID":[],"libobs.hide_scene_item.Caller-6-Content-VDON":[],"libobs.show_scene_item.Caller-6-Content-BG":[],"libobs.show_scene_item.Caller-6-Content-ID":[],"libobs.show_scene_item.Caller-6-Content-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-6-Content","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":3,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-6-Content-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-6-Content-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-6-Content-ID","pos":{"x":595.0001220703125,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284662961959839,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-6-Camera-BG":[],"libobs.hide_scene_item.Caller-6-Camera-ID":[],"libobs.hide_scene_item.Caller-6-Camera-VDON":[],"libobs.show_scene_item.Caller-6-Camera-BG":[],"libobs.show_scene_item.Caller-6-Camera-ID":[],"libobs.show_scene_item.Caller-6-Camera-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-6-Camera","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":3,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-6-Camera-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-6-Camera-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-6-Camera-ID","pos":{"x":595.0001220703125,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284662961959839,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-Multiview"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-1-Camera":[],"libobs.hide_scene_item.Caller-1-Content":[],"libobs.hide_scene_item.Caller-2-Camera":[],"libobs.hide_scene_item.Caller-2-Content":[],"libobs.hide_scene_item.Caller-3-Camera":[],"libobs.hide_scene_item.Caller-3-Content":[],"libobs.hide_scene_item.Caller-4-Camera":[],"libobs.hide_scene_item.Caller-4-Content":[],"libobs.hide_scene_item.Caller-5-Camera":[],"libobs.hide_scene_item.Caller-5-Content":[],"libobs.hide_scene_item.Caller-6-Camera":[],"libobs.hide_scene_item.Caller-6-Content":[],"libobs.hide_scene_item.Caller-7-Camera":[],"libobs.hide_scene_item.Caller-7-Content":[],"libobs.hide_scene_item.Caller-8-Camera":[],"libobs.hide_scene_item.Caller-8-Content":[],"libobs.show_scene_item.Caller-1-Camera":[],"libobs.show_scene_item.Caller-1-Content":[],"libobs.show_scene_item.Caller-2-Camera":[],"libobs.show_scene_item.Caller-2-Content":[],"libobs.show_scene_item.Caller-3-Camera":[],"libobs.show_scene_item.Caller-3-Content":[],"libobs.show_scene_item.Caller-4-Camera":[],"libobs.show_scene_item.Caller-4-Content":[],"libobs.show_scene_item.Caller-5-Camera":[],"libobs.show_scene_item.Caller-5-Content":[],"libobs.show_scene_item.Caller-6-Camera":[],"libobs.show_scene_item.Caller-6-Content":[],"libobs.show_scene_item.Caller-7-Camera":[],"libobs.show_scene_item.Caller-7-Content":[],"libobs.show_scene_item.Caller-8-Camera":[],"libobs.show_scene_item.Caller-8-Content":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Multiview","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":17,"items":[{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":17,"locked":true,"name":"Caller-8-Content","pos":{"x":1440.0,"y":810.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":16,"locked":true,"name":"Caller-8-Camera","pos":{"x":960.0,"y":810.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":15,"locked":true,"name":"Caller-7-Content","pos":{"x":480.0,"y":810.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":14,"locked":true,"name":"Caller-7-Camera","pos":{"x":0.0,"y":810.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":13,"locked":true,"name":"Caller-6-Content","pos":{"x":1440.0,"y":540.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":12,"locked":true,"name":"Caller-6-Camera","pos":{"x":960.0,"y":540.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":10,"locked":true,"name":"Caller-5-Content","pos":{"x":480.0,"y":540.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":9,"locked":true,"name":"Caller-5-Camera","pos":{"x":0.0,"y":540.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":8,"locked":true,"name":"Caller-4-Content","pos":{"x":1440.0,"y":270.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":7,"locked":true,"name":"Caller-4-Camera","pos":{"x":960.0,"y":270.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":6,"locked":true,"name":"Caller-3-Content","pos":{"x":480.0,"y":270.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":5,"locked":true,"name":"Caller-3-Camera","pos":{"x":0.0,"y":270.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":4,"locked":true,"name":"Caller-2-Content","pos":{"x":1440.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-2-Camera","pos":{"x":960.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-1-Content","pos":{"x":480.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-1-Camera","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":0.25,"y":0.25},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-5-Content"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-5-Content-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":6,"fps_custom":true,"height":1080,"reroute_audio":true,"url":"https://caller.studio/#/example/example/C5?stream=content","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-5-Camera"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-5-Camera-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":24,"fps_custom":true,"height":1080,"reroute_audio":true,"url":"https://caller.studio/#/example/example/C5?stream=camera","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-5-Content-BG":[],"libobs.hide_scene_item.Caller-5-Content-ID":[],"libobs.hide_scene_item.Caller-5-Content-VDON":[],"libobs.show_scene_item.Caller-5-Content-BG":[],"libobs.show_scene_item.Caller-5-Content-ID":[],"libobs.show_scene_item.Caller-5-Content-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-5-Content","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":3,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-5-Content-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-5-Content-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-5-Content-ID","pos":{"x":587.54022216796875,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284668922424316,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-5-Camera-BG":[],"libobs.hide_scene_item.Caller-5-Camera-ID":[],"libobs.hide_scene_item.Caller-5-Camera-VDON":[],"libobs.show_scene_item.Caller-5-Camera-BG":[],"libobs.show_scene_item.Caller-5-Camera-ID":[],"libobs.show_scene_item.Caller-5-Camera-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-5-Camera","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":3,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-5-Camera-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-5-Camera-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-5-Camera-ID","pos":{"x":595.0001220703125,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284662961959839,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-2-Content"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-2-Content-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":6,"fps_custom":true,"height":1080,"reroute_audio":true,"url":"https://caller.studio/#/example/example/C2?stream=content","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-2-Camera"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-2-Camera-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":24,"fps_custom":true,"height":1080,"reroute_audio":true,"url":"https://caller.studio/#/example/example/C2?stream=camera","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-1-Content"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-1-Content-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":6,"fps_custom":true,"height":1080,"reroute_audio":true,"url":"https://caller.studio/#/example/example/C1?stream=content","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-1-Camera"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-1-Camera-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":24,"fps_custom":true,"height":1080,"reroute_audio":true,"url":"https://caller.studio/#/example/example/C1?stream=camera","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-1-Content-BG":[],"libobs.hide_scene_item.Caller-1-Content-ID":[],"libobs.hide_scene_item.Caller-1-Content-VDON":[],"libobs.show_scene_item.Caller-1-Content-BG":[],"libobs.show_scene_item.Caller-1-Content-ID":[],"libobs.show_scene_item.Caller-1-Content-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-1-Content","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":8,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":8,"locked":true,"name":"Caller-1-Content-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-1-Content-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":7,"locked":true,"name":"Caller-1-Content-ID","pos":{"x":587.54022216796875,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284668922424316,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-3-Camera"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-3-Camera-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":24,"fps_custom":true,"height":1080,"reroute_audio":true,"url":"https://caller.studio/#/example/example/C3?stream=camera","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-1-Camera-BG":[],"libobs.hide_scene_item.Caller-1-Camera-ID":[],"libobs.hide_scene_item.Caller-1-Camera-VDON":[],"libobs.show_scene_item.Caller-1-Camera-BG":[],"libobs.show_scene_item.Caller-1-Camera-ID":[],"libobs.show_scene_item.Caller-1-Camera-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-1-Camera","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":3,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-1-Camera-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-1-Camera-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-1-Camera-ID","pos":{"x":595.0,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284662961959839,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-2-Camera-BG":[],"libobs.hide_scene_item.Caller-2-Camera-ID":[],"libobs.hide_scene_item.Caller-2-Camera-VDON":[],"libobs.show_scene_item.Caller-2-Camera-BG":[],"libobs.show_scene_item.Caller-2-Camera-ID":[],"libobs.show_scene_item.Caller-2-Camera-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-2-Camera","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":3,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-2-Camera-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-2-Camera-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-2-Camera-ID","pos":{"x":595.0001220703125,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284662961959839,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-2-Content-BG":[],"libobs.hide_scene_item.Caller-2-Content-ID":[],"libobs.hide_scene_item.Caller-2-Content-VDON":[],"libobs.show_scene_item.Caller-2-Content-BG":[],"libobs.show_scene_item.Caller-2-Content-ID":[],"libobs.show_scene_item.Caller-2-Content-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-2-Content","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":3,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-2-Content-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-2-Content-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-2-Content-ID","pos":{"x":587.54022216796875,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284668922424316,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-3-Camera-BG":[],"libobs.hide_scene_item.Caller-3-Camera-ID":[],"libobs.hide_scene_item.Caller-3-Camera-VDON":[],"libobs.show_scene_item.Caller-3-Camera-BG":[],"libobs.show_scene_item.Caller-3-Camera-ID":[],"libobs.show_scene_item.Caller-3-Camera-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-3-Camera","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":3,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-3-Camera-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-3-Camera-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-3-Camera-ID","pos":{"x":595.0001220703125,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284662961959839,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-3-Content-BG":[],"libobs.hide_scene_item.Caller-3-Content-ID":[],"libobs.hide_scene_item.Caller-3-Content-VDON":[],"libobs.show_scene_item.Caller-3-Content-BG":[],"libobs.show_scene_item.Caller-3-Content-ID":[],"libobs.show_scene_item.Caller-3-Content-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-3-Content","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":3,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-3-Content-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-3-Content-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-3-Content-ID","pos":{"x":587.54022216796875,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284668922424316,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-4-Camera-BG":[],"libobs.hide_scene_item.Caller-4-Camera-ID":[],"libobs.hide_scene_item.Caller-4-Camera-VDON":[],"libobs.show_scene_item.Caller-4-Camera-BG":[],"libobs.show_scene_item.Caller-4-Camera-ID":[],"libobs.show_scene_item.Caller-4-Camera-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-4-Camera","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":3,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-4-Camera-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-4-Camera-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-4-Camera-ID","pos":{"x":595.0001220703125,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284662961959839,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-4-Content-BG":[],"libobs.hide_scene_item.Caller-4-Content-ID":[],"libobs.hide_scene_item.Caller-4-Content-VDON":[],"libobs.show_scene_item.Caller-4-Content-BG":[],"libobs.show_scene_item.Caller-4-Content-ID":[],"libobs.show_scene_item.Caller-4-Content-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-4-Content","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":3,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-4-Content-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-4-Content-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-4-Content-ID","pos":{"x":587.54022216796875,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284668922424316,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-3-Content"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-3-Content-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":6,"fps_custom":true,"height":1080,"reroute_audio":true,"url":"https://caller.studio/#/example/example/C3?stream=content","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-4-Camera"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-4-Camera-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":24,"fps_custom":true,"height":1080,"reroute_audio":true,"shutdown":false,"url":"https://caller.studio/#/example/example/C4?stream=camera","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-4-Content"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-4-Content-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":6,"fps_custom":true,"height":1080,"reroute_audio":true,"url":"https://caller.studio/#/example/example/C4?stream=content","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-7-Camera-BG":[],"libobs.hide_scene_item.Caller-7-Camera-ID":[],"libobs.hide_scene_item.Caller-7-Camera-VDON":[],"libobs.show_scene_item.Caller-7-Camera-BG":[],"libobs.show_scene_item.Caller-7-Camera-ID":[],"libobs.show_scene_item.Caller-7-Camera-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-7-Camera","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":3,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-7-Camera-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-7-Camera-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-7-Camera-ID","pos":{"x":595.0001220703125,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284662961959839,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-7-Content-BG":[],"libobs.hide_scene_item.Caller-7-Content-ID":[],"libobs.hide_scene_item.Caller-7-Content-VDON":[],"libobs.show_scene_item.Caller-7-Content-BG":[],"libobs.show_scene_item.Caller-7-Content-ID":[],"libobs.show_scene_item.Caller-7-Content-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-7-Content","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":3,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-7-Content-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-7-Content-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-7-Content-ID","pos":{"x":587.54022216796875,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284668922424316,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-8-Camera-BG":[],"libobs.hide_scene_item.Caller-8-Camera-ID":[],"libobs.hide_scene_item.Caller-8-Camera-VDON":[],"libobs.show_scene_item.Caller-8-Camera-BG":[],"libobs.show_scene_item.Caller-8-Camera-ID":[],"libobs.show_scene_item.Caller-8-Camera-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-8-Camera","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":3,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-8-Camera-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-8-Camera-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-8-Camera-ID","pos":{"x":595.0001220703125,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284662961959839,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{"OBSBasic.SelectScene":[],"libobs.hide_scene_item.Caller-8-Content-BG":[],"libobs.hide_scene_item.Caller-8-Content-ID":[],"libobs.hide_scene_item.Caller-8-Content-VDON":[],"libobs.show_scene_item.Caller-8-Content-BG":[],"libobs.show_scene_item.Caller-8-Content-ID":[],"libobs.show_scene_item.Caller-8-Content-VDON":[]},"id":"scene","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-8-Content","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":3,"items":[{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":3,"locked":true,"name":"Caller-8-Content-BG","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","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,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":true,"name":"Caller-8-Content-VDON","pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true},{"align":5,"blend_type":"normal","bounds":{"x":1.0,"y":1.0},"bounds_align":0,"bounds_type":0,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":2,"locked":true,"name":"Caller-8-Content-ID","pos":{"x":587.54022216796875,"y":920.0},"private_settings":{},"rot":0.0,"scale":{"x":0.53284668922424316,"y":0.53125},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-7-Camera"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-7-Camera-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":24,"fps_custom":true,"height":1080,"reroute_audio":true,"url":"https://caller.studio/#/example/example/C7?stream=camera","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-7-Content"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-7-Content-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":6,"fps_custom":true,"height":1080,"reroute_audio":true,"url":"https://caller.studio/#/example/example/C7?stream=content","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-8-Camera"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-8-Camera-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":24,"fps_custom":true,"height":1080,"reroute_audio":true,"url":"https://caller.studio/#/example/example/C8?stream=camera","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"filters":[{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"ndi_filter","mixers":0,"monitoring_type":0,"muted":false,"name":"NDI","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"ndi_filter_ndiname":"Caller-8-Content"},"sync":0,"versioned_id":"ndi_filter","volume":1.0}],"flags":0,"hotkeys":{"ObsBrowser.Refresh":[{"key":"OBS_KEY_F5"}],"libobs.mute":[],"libobs.push-to-mute":[],"libobs.push-to-talk":[],"libobs.unmute":[]},"id":"browser_source","mixers":255,"monitoring_type":0,"muted":false,"name":"Caller-8-Content-VDON","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"css":"","fps":6,"fps_custom":true,"height":1080,"reroute_audio":true,"url":"https://caller.studio/#/example/example/C8?stream=content","webpage_control_level":2,"width":1920},"sync":0,"versioned_id":"browser_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-2-Camera-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4280427042},"sync":0,"versioned_id":"color_source_v3","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-3-Camera-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4279308561},"sync":0,"versioned_id":"color_source_v3","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-4-Camera-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4279308561},"sync":0,"versioned_id":"color_source_v3","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-5-Camera-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4280427042},"sync":0,"versioned_id":"color_source_v3","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-6-Camera-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4280427042},"sync":0,"versioned_id":"color_source_v3","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-7-Camera-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4279308561},"sync":0,"versioned_id":"color_source_v3","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-8-Camera-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4279308561},"sync":0,"versioned_id":"color_source_v3","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-2-Content-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4284892194},"sync":0,"versioned_id":"color_source_v3","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-3-Content-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4283773713},"sync":0,"versioned_id":"color_source_v3","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-4-Content-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4283773713},"sync":0,"versioned_id":"color_source_v3","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-5-Content-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4284892194},"sync":0,"versioned_id":"color_source_v3","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-6-Content-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4284892194},"sync":0,"versioned_id":"color_source_v3","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-7-Content-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4283773713},"sync":0,"versioned_id":"color_source_v3","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"color_source","mixers":0,"monitoring_type":0,"muted":false,"name":"Caller-8-Content-BG","prev_ver":453115907,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"color":4283773713},"sync":0,"versioned_id":"color_source_v3","volume":1.0}],"transition_duration":300,"transitions":[]} 2 | -------------------------------------------------------------------------------- /obs-studio.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | ** 3 | ** obs-studio.lua -- OBS Studio Lua Script for VDON Call Configuration 4 | ** Copyright (c) 2022-2023 Dr. Ralf S. Engelschall 5 | ** Distributed under MIT license 6 | ** 7 | --]] 8 | 9 | -- global OBS API 10 | local obs = obslua 11 | 12 | -- global context information 13 | local ctx = { 14 | -- properties 15 | propsDef = nil, 16 | propsDefBase = nil, 17 | propsDefOrg = nil, 18 | propsDefRoom = nil, 19 | propsVal = {}, 20 | propsValBase = "https://caller.studio/", 21 | propsValOrg = "example", 22 | propsValRoom = "example", 23 | } 24 | 25 | -- update a single target browser source 26 | local function updateBrowserSource (name, url) 27 | local source = obs.obs_get_source_by_name(name) 28 | if source ~= nil then 29 | local settings = obs.obs_source_get_settings(source) 30 | obs.obs_data_set_string(settings, "url", url) 31 | obs.obs_source_update(source, settings) 32 | obs.obs_data_release(settings) 33 | obs.obs_source_release(source) 34 | end 35 | end 36 | 37 | -- update entire configuration 38 | local function updateConfiguration () 39 | local baseURL = ctx.propsVal.textBase 40 | local orgName = ctx.propsVal.textOrg 41 | local roomName = ctx.propsVal.textRoom 42 | local url = string.format("%s#/%s/%s", baseURL, orgName, roomName) 43 | updateBrowserSource("Caller-1-Camera-VDON", url .. "/C1?stream=camera") 44 | updateBrowserSource("Caller-1-Content-VDON", url .. "/C1?stream=content") 45 | updateBrowserSource("Caller-2-Camera-VDON", url .. "/C2?stream=camera") 46 | updateBrowserSource("Caller-2-Content-VDON", url .. "/C2?stream=content") 47 | updateBrowserSource("Caller-3-Camera-VDON", url .. "/C3?stream=camera") 48 | updateBrowserSource("Caller-3-Content-VDON", url .. "/C3?stream=content") 49 | updateBrowserSource("Caller-4-Camera-VDON", url .. "/C4?stream=camera") 50 | updateBrowserSource("Caller-4-Content-VDON", url .. "/C4?stream=content") 51 | updateBrowserSource("Caller-5-Camera-VDON", url .. "/C5?stream=camera") 52 | updateBrowserSource("Caller-5-Content-VDON", url .. "/C5?stream=content") 53 | updateBrowserSource("Caller-6-Camera-VDON", url .. "/C6?stream=camera") 54 | updateBrowserSource("Caller-6-Content-VDON", url .. "/C6?stream=content") 55 | updateBrowserSource("Caller-7-Camera-VDON", url .. "/C7?stream=camera") 56 | updateBrowserSource("Caller-7-Content-VDON", url .. "/C7?stream=content") 57 | updateBrowserSource("Caller-8-Camera-VDON", url .. "/C8?stream=camera") 58 | updateBrowserSource("Caller-8-Content-VDON", url .. "/C8?stream=content") 59 | end 60 | 61 | -- script hook: description displayed on script window 62 | function script_description () 63 | return [[ 64 |

VDON Call Configuration

65 | 66 | Copyright © 2022 Dr. Ralf S. Engelschall
68 | Distributed under MIT license 70 | 71 |

72 | This script updates the VDON Call organisation and room configuration 73 | in all OBS Studio browser sources with the provided ones below. 74 | ]] 75 | end 76 | 77 | -- script hook: define UI properties 78 | function script_properties () 79 | -- create new properties 80 | local props = obs.obs_properties_create() 81 | 82 | -- create text fields 83 | ctx.propsDefBase = obs.obs_properties_add_text(props, 84 | "textBase", "Base URL", obs.OBS_TEXT_DEFAULT) 85 | ctx.propsDefOrg = obs.obs_properties_add_text(props, 86 | "textOrg", "Organisation Name", obs.OBS_TEXT_DEFAULT) 87 | ctx.propsDefRoom = obs.obs_properties_add_text(props, 88 | "textRoom", "Room Name", obs.OBS_TEXT_DEFAULT) 89 | 90 | -- create update button 91 | obs.obs_properties_add_button(props, "buttonUpdate", "Update Configuration", function () 92 | updateConfiguration() 93 | return true 94 | end) 95 | 96 | return props 97 | end 98 | 99 | -- script hook: define property defaults 100 | function script_defaults (settings) 101 | -- provide default values 102 | obs.obs_data_set_default_string(settings, "textBase", ctx.propsValBase) 103 | obs.obs_data_set_default_string(settings, "textOrg", ctx.propsValOrg) 104 | obs.obs_data_set_default_string(settings, "textRoom", ctx.propsValRoom) 105 | end 106 | 107 | -- script hook: update state from UI properties 108 | function script_update (settings) 109 | -- fetch property values 110 | ctx.propsVal.textBase = obs.obs_data_get_string(settings, "textBase") 111 | ctx.propsVal.textOrg = obs.obs_data_get_string(settings, "textOrg") 112 | ctx.propsVal.textRoom = obs.obs_data_get_string(settings, "textRoom") 113 | end 114 | 115 | -------------------------------------------------------------------------------- /obs-studio/basic.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | Name=vdon-call 3 | 4 | [Video] 5 | BaseCX=1920 6 | BaseCY=1080 7 | OutputCX=1920 8 | OutputCY=1080 9 | FPSCommon=24 NTSC 10 | 11 | [Panels] 12 | CookieId=2689FB296E9CEC3D 13 | 14 | [Output] 15 | Mode=Advanced 16 | 17 | [AdvOut] 18 | TrackIndex=1 19 | RecType=Standard 20 | RecTracks=1 21 | FLVTrack=1 22 | FFOutputToFile=true 23 | FFFormat= 24 | FFFormatMimeType= 25 | FFVEncoderId=0 26 | FFVEncoder= 27 | FFAEncoderId=0 28 | FFAEncoder= 29 | FFAudioMixes=1 30 | VodTrackIndex=2 31 | -------------------------------------------------------------------------------- /shot-1-trampoline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rse/vdon-call/ac9ed5269235e2872159c4e0d1b59d887571e215/shot-1-trampoline.png -------------------------------------------------------------------------------- /shot-2-caller-sender.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rse/vdon-call/ac9ed5269235e2872159c4e0d1b59d887571e215/shot-2-caller-sender.png -------------------------------------------------------------------------------- /shot-3-caller-receiver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rse/vdon-call/ac9ed5269235e2872159c4e0d1b59d887571e215/shot-3-caller-receiver.png -------------------------------------------------------------------------------- /shot-4-production.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rse/vdon-call/ac9ed5269235e2872159c4e0d1b59d887571e215/shot-4-production.png -------------------------------------------------------------------------------- /shot-5-director.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rse/vdon-call/ac9ed5269235e2872159c4e0d1b59d887571e215/shot-5-director.png -------------------------------------------------------------------------------- /vdon-call-logo.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rse/vdon-call/ac9ed5269235e2872159c4e0d1b59d887571e215/vdon-call-logo.ai -------------------------------------------------------------------------------- /vdon-call-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 11 | 15 | 19 | 20 | 21 | 23 | 25 | 26 | 37 | 40 | 41 | 44 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /vdon.css: -------------------------------------------------------------------------------- 1 | /* 2 | ** VDON Call ~ VDO.Ninja Remote Caller Ingest 3 | ** Copyright (c) 2022-2023 Dr. Ralf S. Engelschall 4 | ** Licensed under MIT license 5 | */ 6 | 7 | body.darktheme #add_camera { 8 | display: none; 9 | } 10 | body.darktheme .card { 11 | background-color: #02050c; 12 | } 13 | body.darktheme .container-inner { 14 | background-color: #02050c; 15 | } 16 | 17 | body.darktheme .gowebcam { 18 | border: 1px solid #cc3333; 19 | background: #990000 !important; 20 | border-radius: 4px; 21 | color: #ffffff; 22 | } 23 | body.darktheme .gowebcam:enabled { 24 | border: 1px solid #6699cc; 25 | background: #336699 !important; 26 | color: #f0f0ff; 27 | } 28 | body.darktheme .gowebcam { 29 | filter: none; 30 | } 31 | 32 | body.darktheme .videoMenu { 33 | background-color: #222222 !important; 34 | border: 1px solid #333333 !important; 35 | border-radius: 4px !important; 36 | } 37 | body.darktheme .videoMenu .las { 38 | color: #ffffff; 39 | } 40 | body.darktheme #videoSourceSelect { 41 | background-color: #444444; 42 | color: #ffffff; 43 | border-radius: 4px; 44 | padding: 4px 8px 4px 8px; 45 | } 46 | body.darktheme #videoSourceSelect:focus { 47 | outline: none; 48 | } 49 | 50 | body.darktheme #audioMenu { 51 | background-color: #222222; 52 | border: 1px solid #333333; 53 | border-radius: 4px; 54 | } 55 | body.darktheme #audioMenu .las, 56 | body.darktheme .audioMenu .las { 57 | color: #ffffff; 58 | } 59 | body.darktheme .audioTitle { 60 | color: #ffffff; 61 | } 62 | body.darktheme .audioTitle:hover { 63 | color: #ffffff; 64 | } 65 | body.darktheme #audioSource { 66 | background-color: #444444; 67 | color: #ffffff; 68 | border-radius: 4px; 69 | padding: 4px 8px 4px 8px; 70 | } 71 | body.darktheme #audioSource label { 72 | color: #ffffff; 73 | background-color: #444444; 74 | } 75 | body.darktheme #audioSource:focus { 76 | outline: none; 77 | } 78 | 79 | body.darktheme #headphonesDiv { 80 | background-color: #222222; 81 | border: 1px solid #333333; 82 | border-radius: 4px; 83 | } 84 | body.darktheme #headphonesDiv button { 85 | background-color: #555555; 86 | border: 1px solid #666666; 87 | color: #ffffff; 88 | } 89 | body.darktheme #outputSource { 90 | background-color: #444444; 91 | color: #ffffff; 92 | border-radius: 4px; 93 | padding: 4px 8px 4px 8px; 94 | } 95 | body.darktheme #outputSource:focus { 96 | outline: none; 97 | } 98 | 99 | body.darktheme #effectsDiv { 100 | background-color: #222222; 101 | border: 1px solid #333333; 102 | border-radius: 4px; 103 | } 104 | body.darktheme #effectSelector { 105 | background-color: #444444; 106 | color: #ffffff; 107 | border-radius: 4px; 108 | padding: 4px 8px 4px 8px; 109 | } 110 | body.darktheme #effectSelector:focus { 111 | outline: none; 112 | } 113 | body.darktheme #effectsDiv label { 114 | color: #ffffff; 115 | } 116 | 117 | /* ==== */ 118 | 119 | body.darktheme #popupSelector { 120 | background: #111111e0; 121 | border-bottom-left-radius: 12px; 122 | } 123 | 124 | body.darktheme #videoMenu3 { 125 | background-color: #222222; 126 | border: 1px solid #333333; 127 | border-radius: 4px; 128 | } 129 | body.darktheme #videoSource3 { 130 | background-color: #444444; 131 | color: #ffffff; 132 | border-radius: 4px; 133 | padding: 4px 8px 4px 8px; 134 | } 135 | body.darktheme #videoSource3:focus { 136 | outline: none; 137 | } 138 | 139 | body.darktheme #audioMenu2 { 140 | background-color: #222222; 141 | border: 1px solid #333333; 142 | border-radius: 4px; 143 | } 144 | 145 | body.darktheme #popupSelector_user_settings { 146 | background-color: #222222; 147 | border: 1px solid #333333; 148 | border-radius: 4px; 149 | } 150 | 151 | body.darktheme .form-group.multiselect { 152 | background-color: #222222; 153 | border: 1px solid #333333; 154 | border-radius: 4px; 155 | } 156 | body.darktheme #audioSource3 { 157 | background-color: #444444; 158 | color: #ffffff; 159 | border-radius: 4px; 160 | padding: 4px 8px 4px 8px; 161 | } 162 | body.darktheme #audioSource3 label { 163 | color: #ffffff; 164 | } 165 | body.darktheme #audioSource3:focus { 166 | outline: none; 167 | } 168 | 169 | body.darktheme #headphonesDiv3 { 170 | background-color: #222222; 171 | border: 1px solid #333333; 172 | border-radius: 4px; 173 | } 174 | body.darktheme #headphonesDiv3 button { 175 | background-color: #555555; 176 | border: 1px solid #666666; 177 | color: #ffffff; 178 | } 179 | body.darktheme #outputSource3 { 180 | background-color: #444444; 181 | color: #ffffff; 182 | border-radius: 4px; 183 | padding: 4px 8px 4px 8px; 184 | } 185 | body.darktheme #outputSource3:focus { 186 | outline: none; 187 | } 188 | 189 | body.darktheme #effectsDiv3 { 190 | background-color: #222222; 191 | border: 1px solid #333333; 192 | border-radius: 4px; 193 | } 194 | body.darktheme #effectSelector3 { 195 | background-color: #444444; 196 | color: #ffffff; 197 | border-radius: 4px; 198 | padding: 4px 8px 4px 8px; 199 | } 200 | body.darktheme #effectSelector3:focus { 201 | outline: none; 202 | } 203 | body.darktheme #effectsDiv3 label { 204 | color: #ffffff; 205 | } 206 | 207 | body.darktheme #popupSelector button { 208 | background-color: #555555 !important; 209 | border: 1px solid #666666; 210 | color: #ffffff; 211 | } 212 | 213 | /* ==== */ 214 | 215 | body.darktheme #chatModule { 216 | background: #111111e0; 217 | border-radius: 12px; 218 | padding: 12px; 219 | width: 600px; 220 | } 221 | body.darktheme #chatInput { 222 | border: 1px solid #6699cc; 223 | background-color: #336699; 224 | color: #ffffff; 225 | padding: 6px 12px 6px 12px; 226 | outline: none; 227 | } 228 | body.darktheme #chatInput::placeholder { 229 | color: #77aadd !important; 230 | } 231 | body.darktheme #welcomeMsg { 232 | background-color: #222222; 233 | color: #999999; 234 | } 235 | body.darktheme .outMessage { 236 | background-color: #336699; 237 | color: #ffffff; 238 | padding: 6px 12px 6px 12px; 239 | } 240 | body.darktheme .inMessage { 241 | background-color: #333333; 242 | color: #ffffff; 243 | padding: 6px 12px 6px 12px; 244 | } 245 | body.darktheme #chatModule button { 246 | border: 1px solid #6699cc !important; 247 | background-color: #336699 !important; 248 | color: #ffffff !important; 249 | padding: 6px 12px 6px 12px !important; 250 | outline: none; 251 | filter: none; 252 | font-size: 100%; 253 | } 254 | 255 | /* ==== */ 256 | 257 | body.darktheme input[type=range] { 258 | padding: 0; 259 | } 260 | 261 | /* ==== */ 262 | 263 | body.darktheme .popup-message { 264 | background-color: #111111e0 !important; 265 | border: 1px solid #333333e0 !important; 266 | border-radius: 12px; 267 | box-shadow: none !important; 268 | padding: 12px !important; 269 | } 270 | body.darktheme .las.la-question-circle { 271 | display: none; 272 | } 273 | body.darktheme [data-translate="add-more-here"] { 274 | display: none; 275 | } 276 | 277 | /* ==== */ 278 | 279 | body.darktheme #connectedUsers { 280 | box-shadow: 2px 2px 8px #313131 !important; 281 | } 282 | 283 | /* ==== */ 284 | 285 | body.darktheme .context-menu { 286 | background-color: #111111e0 !important; 287 | border: 1px solid #333333e0 !important; 288 | border-radius: 6px; 289 | color: #ffffff !important; 290 | box-shadow: 2px 2px 8px #313131 !important; 291 | } 292 | body.darktheme .context-menu .context-menu__link { 293 | color: #ffffff !important; 294 | } 295 | 296 | /* ==== */ 297 | 298 | body.darktheme #overlayClock { 299 | border-radius: 12px; 300 | } 301 | 302 | /* ==== */ 303 | 304 | body.darktheme .directorsgrid .vidcon { 305 | background-color: #222222 !important; 306 | } 307 | body.darktheme .directorsgrid .vidcon button { 308 | background-color: #2c2c2c !important; 309 | } 310 | body.darktheme .directorsgrid .containerGreen { 311 | background-color: #002200 !important; 312 | } 313 | body.darktheme .directorsgrid .containerGreen button { 314 | background-color: #003300 !important; 315 | } 316 | 317 | --------------------------------------------------------------------------------