Skip to content

Commit 4d7c35c

Browse files
committed
Misc updates for broadcaster and OBS for latest standards
(still not fully up to date)
1 parent df2fc30 commit 4d7c35c

File tree

2 files changed

+67
-40
lines changed

2 files changed

+67
-40
lines changed

broadcaster.rst

Lines changed: 57 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ Broadcaster
33

44
This page explains the setup and how-to guide for the OBS broadcaster.
55
This person manages the technical setup of :doc:`OBS <obs>` and thus
6-
the streaming. This person often is, but does not have to be, the OBS
7-
director [todo: link] who switches the scenes and manages the
8-
broadcast after it has started.
6+
the streaming. This person often is, but does not have to be, the
7+
:doc:`director` who switches the scenes and manages the broadcast
8+
after it has started.
99

1010

1111

@@ -55,16 +55,13 @@ Prerequisites:
5555
without much `jitter
5656
<https://en.wikipedia.org/wiki/Jitter#Packet_jitter_in_computer_networks>`__.
5757
However, OBS settings can be tuned to have a larger buffer to
58-
handle this.
58+
handle this (but that introduces latency in the broadcast).
5959

6060

6161
Software installation:
6262

6363
* `Install OBS <https://obsproject.com/>`__ (Linux, Mac, Windows -
6464
this is a mass market product so there is good support)
65-
* Install `obs-websocket
66-
<https://github.com/obsproject/obs-websocket/>`__. This is also
67-
fairly widespread, but slightly less so than OBS.
6865
* Zoom (but you likely already have that)
6966

7067
Zoom setup:
@@ -75,7 +72,9 @@ Zoom setup:
7572

7673
* General → Use dual monitors → yes. Despite the name, this gives
7774
Zoom two *windows*: one for the gallery view, one for the
78-
screenshare (or active speaker if there is no screenshare).
75+
screenshare (or active speaker if there is no screenshare). You
76+
need two monitors plugged in, though, otherwise the mode doesn't
77+
work.
7978

8079
* General → Enter full screen automatically when starting or joining
8180
a meeting → false
@@ -87,12 +86,12 @@ Zoom setup:
8786

8887
OBS setup:
8988

90-
* Clone the `obs-scenes repository
91-
<https://github.com/coderefinery/obs-scenes>`__. This contains some
89+
* Clone the `obs-config repository
90+
<https://github.com/coderefinery/obs-config/>`__. This contains some
9291
pre-made scenes which will set your OBS up for teaching nicely.
9392

94-
* Import the TeachingStreaming profile
95-
(Profile → Import → ``obs-scenes/profiles/Teaching_Streaming``). This contains things
93+
* Import the latest TeachingStreaming profile
94+
(Profile → Import → ``obs-config/profiles/TeachingStreaming-v*``). This contains things
9695
like audio and encoder settings
9796

9897
* TODO: this may need adjustment for your particular situation. At
@@ -104,29 +103,21 @@ OBS setup:
104103

105104
* Import the Teaching_Streaming_ZoomCapture scene collection (Scene
106105
Collection → Import →
107-
``obs-scenes/scenes/Teaching_Streaming_ZoomCapture``).
106+
``obs-scenes/scenes/TeachingStreaming-v*``).
108107

109108
* You now need to configure some window captures, for example, you
110109
need to tell OBS which window has the gallery of all instructors in
111110
it. From the "Scenes"
112111

113-
* Scene ``_GalleryCapture[hidden]`` → source ``ZoomMeeting-Gallery``
114-
right click → Properties → Window → select the Zoom gallery view
115-
(for me it is titled "Zoom meeting"). TODO: adjust the size of
116-
this window until it fits the pre-made scene [it looks nice and
117-
large]
112+
* In one of the scenes like ``Screenshare``, change the sources
113+
``ZoomMeetingCapture`` to the window named ZoomMeeting, and the
114+
source ``ZoomCapture`` to the window named Zoom.
118115

119-
* Scene ``_Screenshare-Zoom-Capture[hidden]`` → source
120-
``Zoom-SecondWindow`` right click → Properties → Window → select
121-
the Zoom screenshare/active speaker window (for me it is titled
122-
only "Zoom"). Adjust the size of this window until it nicely
123-
fills the preview pane (the ideal size is 840×1080).
116+
* In the scene scene ``Notes``, change the ``HackMDCapture``
117+
source to the notes window you are capturing
124118

125-
* (optional) Scene ``_Hackmd-Capture[hidden]``: similar, select the
126-
shared HackMD
127-
128-
* (optional) Scene ``_Broadcaster-Screen[hidden]``: configure your
129-
local desktop capture.
119+
* (optional) In the scene scene ``BroadcasterScreen``: configure
120+
your local desktop capture.
130121

131122
* Configure the audio
132123

@@ -155,9 +146,15 @@ OBS setup:
155146
* Configure obs-websocket (set the listening socket + authentication).
156147

157148
* Tools → Websocket server settings → {Enable websockets
158-
server=true, Server port=(something), Enable authentication=true,
159-
Password=something}. Share your IP address, server port, and
160-
password with your other instructors.
149+
server=true, Server port=4455, Enable authentication=true,
150+
Password=something}.
151+
152+
* Begin the websocket proxy. This accepts incoming connections with
153+
SSL, filters to only allow known safe requests, and then forwards
154+
the connection to OBS. The password authentication is proxied to
155+
OBS, so there isn't a separate password set here. ``python3
156+
obs_cr/websocket_proxy.py 127.0.0.1:4456 [other options]``
157+
161158

162159
* Allow outside connections. On of these two:
163160

@@ -174,6 +171,9 @@ OBS setup:
174171

175172
* Verify the obs-tablet-remote connection (see TODO director-setup).
176173

174+
* Share your IP address, server port, and
175+
password with your other instructors.
176+
177177

178178

179179
Before each day checklist
@@ -193,7 +193,7 @@ Before each day checklist
193193
* attendee hackmd:
194194
* notes hackmd:
195195
* live preview:
196-
* control panel:
196+
* control panel:
197197

198198

199199
Before each broadcast checklist
@@ -279,6 +279,31 @@ Common problems
279279

280280

281281

282+
Broadcaster practice
283+
--------------------
284+
285+
1. Start OBS and import the scenes
286+
2. Start Zoom and configure OBS to capture the Zoom windows.
287+
3. Now we try to get the control panel working.
288+
289+
a. Clone obs-cr
290+
a. Run obs_cr/websocket_proxy.py with the right arguments
291+
292+
4. Get the local headless client working (this listens to signals and does
293+
stuff like run the xdotool command to resize windows or scroll notes.)
294+
295+
a. obs_cr/headless.py
296+
297+
5. Practice switching scenes
298+
6. Practice making scene presets and switching to them
299+
7. Practice scrolling the notes
300+
8. Use your headphones to monitor the sound (audio advanced settings)
301+
9. Include the music/jingle in the recorded video. Now remove it from
302+
the recorded video. (I found it's better to leave it out because
303+
it affects transcription.)
304+
305+
306+
282307
See also
283308
--------
284309

obs.rst

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -290,11 +290,11 @@ can make some uniform scripting tools):
290290
* **Gallery**, a gallery of the people presenting (or the one). When
291291
presenting from a Zoom meeting, this is a capture of the gallery
292292
view in dual-monitor mode.
293-
* **Local** is a local screenshare, that you get by capturing your own
294-
screen.
295-
* **Remote** is a screenshare by someone remote. If you are capturing
293+
* **Screenshare** is a screenshare by someone remote. If you are capturing
296294
from a Zoom meeting, it is the capture of the second window of the
297295
dual-monitor mode.
296+
* **BroadcasterScreen** is a local screenshare, that you get by capturing your own
297+
screen.
298298
* **Notes** is some HackMD or other material you might want to show
299299
during discussion periods or breaks.
300300

@@ -374,7 +374,7 @@ guides:
374374
High-quality audio is quite important. I've spent far too long
375375
playing with it, and my conclusion is that I don't know enough to make
376376
it better than what I have now. What I know is in the "instructor
377-
tech setup, online" page linked above. I propose a central
377+
audio" page linked above. I propose a central
378378
recommendation: *talk about audio quality*. Start meetings early and
379379
test it. Communicate about problems early, don't ignore and think
380380
it's "good enough for now".
@@ -409,7 +409,8 @@ monitor or window.
409409

410410
* The **windowed projector** does similar, but makes a new window that
411411
can be moved and resized. This can be captured as a single-window
412-
screenshare in an online meeting.
412+
screenshare in an online meeting. Or it can be a smaller preview of
413+
the scene if the main OBS window is too large for your space.
413414

414415

415416
The **loopback output** creates a **virtual camera device**. This
@@ -432,7 +433,8 @@ Example configurations
432433
Recording your own demo
433434
~~~~~~~~~~~~~~~~~~~~~~~
434435

435-
Scenes: Title, Gallery, Local. Variable bitrate.
436+
Scenes: Title, Gallery, BroadcasterScreen. Variable bitrate
437+
recording.
436438

437439
Online teaching event
438440
~~~~~~~~~~~~~~~~~~~~~
@@ -441,9 +443,9 @@ Scenes:
441443

442444
* Title
443445
* Gallery - contains galleryCapture
444-
* Local - capture of your screen, when you need to teach. Has
446+
* BroadcasterScreen - capture of your screen, when you need to teach. Has
445447
galleryCapture in top-right corner
446-
* Remote: capture of Zoom second window (which has been
448+
* Screenshare: capture of Zoom second window (which has been
447449
adjusted to be same resolution as your base canvas size). Also has
448450
galleryCapture in top-right corner.
449451
* Notes: contains HackMD + galleryCapture

0 commit comments

Comments
 (0)