summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--playbook.md57
-rw-r--r--playbook.org75
-rw-r--r--playbook/stream-desktop-and-audio.sh1
3 files changed, 110 insertions, 23 deletions
diff --git a/playbook.md b/playbook.md
index 9a509c39..bcd3ab83 100644
--- a/playbook.md
+++ b/playbook.md
@@ -101,9 +101,9 @@
- Doesn’t really work for corwin because of some weird setting problem
- STRT Streaming to YouTube
-- [X] [Start streaming](#org0bb33b4)
+- [X] [Start streaming](#start-streaming)
- Ugh, need to figure out ffmpeg for streaming
-- [ ] [Check in a speaker](#orgd6f46ac)
+- [ ] [Check in a speaker](#check-in)
- [ ] Try streaming the organizer room, HOST rehearses opening remarks
- [X] Play a prerec with subtitles
- [ ] Try switching to talk room and streaming pretend Q&A
@@ -159,7 +159,7 @@
- Backchannel for easy viewing
-<a id="org0bb33b4"></a>
+<a id="start-streaming"></a>
### Start streaming :stream:
@@ -184,11 +184,11 @@
## Talk process
-<a id="orgd6f46ac"></a>
+<a id="check-in"></a>
### Check in a speaker
-Exception: [CHECK is unavailable](#orga2b0fce)
+Exception: [CHECK is unavailable](#check-gone)
- Speaker checks in on #emacsconf-org via IRC or via e-mail ~30m before
- CHECK notes IRC nick for speaker.
@@ -222,7 +222,7 @@ Exception: [CHECK is unavailable](#orga2b0fce)
- CHECK updates ${upcoming} with link to the talk room and preferences for Q&A-. CHECK will also /msg the relevant information.
-<a id="org6aeec48"></a>
+<a id="present"></a>
### Present talk
@@ -234,24 +234,24 @@ Exception: [CHECK is unavailable](#orga2b0fce)
- [? prerec]
- STREAM and HOST switch to the organizer room in BBB.
- STREAM switches to MPV scene in OBS and plays the video (with captions if available).
- - Exception: [Last-minute prerecording submission](#org154e440)
- - Exception: [Last-minute caption update](#orgc98e265)
- - [CHECK publishes information](#org48b1df1)
- - [HOST gets a head start on handling Q&A](#org5a65313)
- - When prerec finishes, [STREAM joins Q&A](#org5a65313)
+ - Exception: [Last-minute prerecording submission](#last-minute-prerec)
+ - Exception: [Last-minute caption update](#last-minute-captions)
+ - [CHECK publishes information](#publish)
+ - [HOST gets a head start on handling Q&A](#questions)
+ - When prerec finishes, [STREAM joins Q&A](#questions)
- [? live]
- - Exception: [Speaker does not have a prerec and has not checked in](#orgf5536c3)
+ - Exception: [Speaker does not have a prerec and has not checked in](#really-missing)
- HOST joins the BBB room and double-checks that recording is on
- STREAM joins the BBB room and gives the go-ahead
- CHECK notes that this is a live presentation and that the recording will be posted after the conference.
- CHECK notes the time that the presentation started, recalculates schedule, and publishes it.
- Speaker presents.
- - Exception: [Technical issues during a live presentation](#org489104b)
+ - Exception: [Technical issues during a live presentation](#live-issues)
- [? talk needs to be wrapped up]
- HOST nudges speaker verbally.
-<a id="org48b1df1"></a>
+<a id="publish"></a>
### Publish information
@@ -287,13 +287,13 @@ Exception: [CHECK is unavailable](#orga2b0fce)
- wiki page for talk
-<a id="org5a65313"></a>
+<a id="questions"></a>
### Handle Q&A
Exceptions:
-- [Speaker has not checked in](#org686cb61)
+- [Speaker has not checked in](#missing)
- [? live]
- HOST joins the BBB room
@@ -324,7 +324,7 @@ Exceptions:
want to be notified, or subscribe to the emacsconf-? mailing
list to get the announcement. Please feel free to continue
discussing the talk on IRC or the pad.
-- [Present next talk](#org6aeec48)
+- [Present next talk](#present)
## Break time
@@ -344,7 +344,7 @@ Exceptions:
## In case of&#x2026;
-<a id="org154e440"></a>
+<a id="last-minute-prerec"></a>
### Last-minute prerecording submission
@@ -352,7 +352,7 @@ Exceptions:
- CHECK will notify STREAM with the scp command and the mpv command so that STREAM can choose.
-<a id="orgc98e265"></a>
+<a id="last-minute-captions"></a>
### Last-minute caption update
@@ -361,7 +361,7 @@ Exceptions:
- STREAM uses the provided commands to download the VTT file and load it into MPV with `--sub-file`
-<a id="org686cb61"></a>
+<a id="missing"></a>
### Speaker has not checked in
@@ -372,7 +372,7 @@ Exceptions:
- Can play next prerec a few minutes early
-<a id="orgf5536c3"></a>
+<a id="really-missing"></a>
### Speaker does not have a prerec and has not checked in
@@ -414,6 +414,17 @@ Exceptions:
- HOST sends ${alternate-url} to IRC: Alternate stream for ${title}: ${alternate-url}
- ALTERNATE notifies #emacsconf-org when the stream is done.
- CHECK updates ${stream-status} to note that the alternate stream is finished.
+
+ FFMPEG process for sending the desktop and audio to the $CONFALT mountpoint on Linux with X11 and Alsa:
+
+ 1. Set the CONFALT environment variable to icecast://user:password@live0.emacsconf.org:8000/alt.webm
+ 2. Install pavucontrol if you don't have it already.
+ 3. Start the following command:
+
+ while 1; do ffmpeg -reconnect_at_eof 1 -reconnect_streamed 1 -loglevel 0 -ar 48000 -f alsa -channels 2 -sample_rate 48000 -i default -re -video_size 1280x720 -framerate 25 -f x11grab -i :0.0 -cluster_size_limit 2M -cluster_time_limit 5100 -content_type video/webm -c:v libvpx -b:v 1M -crf 30 -g 125 -deadline good -threads 4 -f webm $CONFALT; done
+ 4. Use pavucontrol to set the recording source for the ffmpeg
+ command to be the audio monitor, so you get system output as
+ well.
### Pad malfunction or mess-up
@@ -435,7 +446,7 @@ Exceptions:
- HOST addresses it (on-camera if needed) with a reminder and/or a kick or a ban
-<a id="orga2b0fce"></a>
+<a id="check-gone"></a>
### CHECK is unavailable
@@ -452,7 +463,7 @@ Exceptions:
- Either STREAM or CHECK does hosting
-<a id="org489104b"></a>
+<a id="live-issues"></a>
### Technical issues during a live presentation
diff --git a/playbook.org b/playbook.org
index 1083a52e..49281f95 100644
--- a/playbook.org
+++ b/playbook.org
@@ -81,6 +81,9 @@
- Backchannel for easy viewing
*** Start streaming :stream:
+:PROPERTIES:
+:CUSTOM_ID: start-streaming
+:END:
- HOST: Display getting-ready message
- STREAM: Set up BBB view in organizer room to have HOST's webcam maximized
@@ -103,6 +106,9 @@
** Talk process
*** Check in a speaker
+:PROPERTIES:
+:CUSTOM_ID: check-in
+:END:
Exception: [[*CHECK is unavailable][CHECK is unavailable]]
@@ -139,6 +145,9 @@ Exception: [[*CHECK is unavailable][CHECK is unavailable]]
*** Present talk
+:PROPERTIES:
+:CUSTOM_ID: present
+:END:
- CHECK marks previous talk as done and notes the time finished:
- ${conf}
@@ -165,6 +174,9 @@ Exception: [[*CHECK is unavailable][CHECK is unavailable]]
- HOST nudges speaker verbally.
*** Publish information
+:PROPERTIES:
+:CUSTOM_ID: publish
+:END:
- CHECK updates the schedule in:
- ${conf}
@@ -199,6 +211,9 @@ ${description}
- wiki page for talk
*** Handle Q&A
+:PROPERTIES:
+:CUSTOM_ID: questions
+:END:
Exceptions:
- [[*Speaker has not checked in][Speaker has not checked in]]
@@ -235,12 +250,18 @@ Exceptions:
- [[*Present talk][Present next talk]]
** Break time
+:PROPERTIES:
+:CUSTOM_ID: break
+:END:
- CHECK stops and restarts the Toobnix restreaming process, and re-checks the stream
- CHECK uses =conf-upcoming-add-subtree= to add the afternoon talks to upcoming.org
- HOST doublechecks network transfer limit and server health
** End of stream
+:PROPERTIES:
+:CUSTOM_ID: end
+:END:
- CHECK stops ffmpeg process for Youtube
- CHECK stops ffmpeg process for main-480p
@@ -249,23 +270,35 @@ Exceptions:
** In case of...
*** Last-minute prerecording submission
+:PROPERTIES:
+:CUSTOM_ID: last-minute-prerec
+:END:
- CHECK will copy it from the FTP upload server to ${protected} and name it appropriately.
- CHECK will notify STREAM with the scp command and the mpv command so that STREAM can choose.
*** Last-minute caption update
+:PROPERTIES:
+:CUSTOM_ID: last-minute-captions
+:END:
- CHECK uploads the --main.vtt file to ${protected}
- CHECK notifies STREAM via ${upcoming}
- STREAM uses the provided commands to download the VTT file and load it into MPV with =--sub-file=
*** Speaker has not checked in
+:PROPERTIES:
+:CUSTOM_ID: missing
+:END:
- Let the previous talk run a little longer for Q&A; end at least in time for the prerec
- After the previous Q&A wraps up, play the prerec
- [? still not around after prerec finishes]
- HOST: Speaker might be having some difficulty connecting, but we'll collect your questions on the pad and send them afterwards.
- Can play next prerec a few minutes early
*** Speaker does not have a prerec and has not checked in
+:PROPERTIES:
+:CUSTOM_ID: really-missing
+:END:
- Let the previous talk do live Q&A/demo if ready
- Close to the time of the missing talk:
- See if any of the previous speakers want to be set up for an impromptu talk/extension in a BBB room, just in case
@@ -285,6 +318,9 @@ Exceptions:
accept a prerecording afterwards, then include it on the site and in
post-conference communication
*** Alternate stream volunteer wants to stream (nice to have, at risk)
+:PROPERTIES:
+:CUSTOM_ID: alternate
+:END:
- CHECK gives ALTERNATE the BBB room URL for the talk they are interested in
- ALTERNATE starts streaming to assigned end point
- CHECK confirms stream
@@ -295,24 +331,48 @@ Exceptions:
- HOST sends ${alternate-url} to IRC: Alternate stream for ${title}: ${alternate-url}
- ALTERNATE notifies #emacsconf-org when the stream is done.
- CHECK updates ${stream-status} to note that the alternate stream is finished.
+
+ FFMPEG process for sending the desktop and audio to the $CONFALT mountpoint on Linux with X11 and Alsa:
+
+ 1. Set the CONFALT environment variable to icecast://user:password@live0.emacsconf.org:8000/alt.webm
+ 2. Install pavucontrol if you don't have it already.
+ 3. Start the following command:
+ #+begin_src sh :eval no :tangle playbook/stream-desktop-and-audio.sh
+ while 1; do ffmpeg -reconnect_at_eof 1 -reconnect_streamed 1 -loglevel 0 -ar 48000 -f alsa -channels 2 -sample_rate 48000 -i default -re -video_size 1280x720 -framerate 25 -f x11grab -i :0.0 -cluster_size_limit 2M -cluster_time_limit 5100 -content_type video/webm -c:v libvpx -b:v 1M -crf 30 -g 125 -deadline good -threads 4 -f webm $CONFALT; done
+ #+end_src
+ 4. Use pavucontrol to set the recording source for the ffmpeg
+ command to be the audio monitor, so you get system output as
+ well.
*** Pad malfunction or mess-up
+:PROPERTIES:
+:CUSTOM_ID: pad-broken
+:END:
- PAD resets the pad using https://etherpad.wikimedia.org/p/emacsconf-2021/timeslider
- [? still not recovered]
- PAD reimports the pad from backup
*** CRDT malfunctions
+:PROPERTIES:
+:CUSTOM_ID: crdt-broken
+:END:
- HOST notifies CHECK and tries reconnecting
- [? still doesn't work]
- Switch to backup Etherpad
*** Conduct guidelines issue
+:PROPERTIES:
+:CUSTOM_ID: conduct
+:END:
- HOST addresses it (on-camera if needed) with a reminder and/or a kick or a ban
*** CHECK is unavailable
+:PROPERTIES:
+:CUSTOM_ID: check-gone
+:END:
- HOST does check-ins
- HOST refers to conf.org for Q&A preference etc.
@@ -322,10 +382,16 @@ Exceptions:
- Updating schedule/wiki on the fly
*** HOST is unavailable
+:PROPERTIES:
+:CUSTOM_ID: host-gone
+:END:
- Either STREAM or CHECK does hosting
*** Technical issues during a live presentation
+:PROPERTIES:
+:CUSTOM_ID: live-issues
+:END:
- HOST tries to contact the speaker
- [? back on track]
@@ -338,6 +404,9 @@ Exceptions:
be able to follow up after the conference
*** Big technical issues with streaming
+:PROPERTIES:
+:CUSTOM_ID: stream-issues
+:END:
- HOST notifies #emacsconf and #emacsconf-org and pad
- HOST updates the 2021.md wiki page
@@ -349,6 +418,9 @@ Exceptions:
- STREAM e-mails the mailing list
*** live0 can't handle the load or is close to network transfer limit
+:PROPERTIES:
+:CUSTOM_ID: network
+:END:
- OR:
- Redirect some viewers via asking in #emacsconf:
@@ -358,6 +430,9 @@ Exceptions:
- Add additional node to Linode account for shared transfer pool (TODO: doublecheck)
* Before the conference
+:PROPERTIES:
+:CUSTOM_ID: before
+:END:
** Help speakers with tech checks
- Explain process
- Test audio, webcam, screensharing, collaborative pad
diff --git a/playbook/stream-desktop-and-audio.sh b/playbook/stream-desktop-and-audio.sh
new file mode 100644
index 00000000..38f50025
--- /dev/null
+++ b/playbook/stream-desktop-and-audio.sh
@@ -0,0 +1 @@
+ while 1; do ffmpeg -reconnect_at_eof 1 -reconnect_streamed 1 -loglevel 0 -ar 48000 -f alsa -channels 2 -sample_rate 48000 -i default -re -video_size 1280x720 -framerate 25 -f x11grab -i :0.0 -cluster_size_limit 2M -cluster_time_limit 5100 -content_type video/webm -c:v libvpx -b:v 1M -crf 30 -g 125 -deadline good -threads 4 -f webm $CONFALT; done