@@ -3,9 +3,9 @@ Broadcaster
33
44This page explains the setup and how-to guide for the OBS broadcaster.
55This 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
6161Software 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
7067Zoom 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
8887OBS 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
179179Before 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
199199Before 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+
282307See also
283308--------
284309
0 commit comments