summaryrefslogtreecommitdiffstats
path: root/playbook.org
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2021-11-18 20:31:36 -0500
committerSacha Chua <sacha@sachachua.com>2021-11-18 20:31:36 -0500
commita1fdc0a844ea50634b264948a014109f5502f0a3 (patch)
tree62951125ffd44d8f35f05122350122b46ef4df38 /playbook.org
parent2c8aede5592773587bf21d269f946cb7c551b3f1 (diff)
downloademacsconf-wiki-a1fdc0a844ea50634b264948a014109f5502f0a3.tar.xz
emacsconf-wiki-a1fdc0a844ea50634b264948a014109f5502f0a3.zip
Add more details, update status for pattern
Diffstat (limited to 'playbook.org')
-rw-r--r--playbook.org188
1 files changed, 147 insertions, 41 deletions
diff --git a/playbook.org b/playbook.org
index 53fb2bb7..9a0bc829 100644
--- a/playbook.org
+++ b/playbook.org
@@ -13,29 +13,34 @@
| HOST | hosting, intros, reading, moving questions/answers around | zaeph |
| ${protected} | [[/ssh:front:/var/www/media.emacsconf.org/2021/protected/]] |
-| ${stream-status} | [[/ssh:live:/var/www/html/index.html]] |
+| ${stream-status} | [[/ssh:live:/var/www/html/index.html]] |
+| ${upcoming} | upcoming.org shared over CRDT |
+| ${conf} | conf.org shared over CRDT |
+| ${dump} | [[/ssh:live:/data/]] |
+| ${media} | [[/ssh:front:/var/www/media.emacsconf.org/2021/]] |
* Pre-conference dry run
- [ ] [[*Start streaming][Start streaming]]
-- [ ] [[*Start low-resolution stream][Start low-resolution stream]]
-- [ ] [[*Start Youtube stream][Start Youtube stream]]
-- [ ] Check in a speaker
-- [ ] Try alternate stream
+- [ ] [[*Check in a speaker][Check in a speaker]]
+- [ ] Try streaming the organizer room, HOST rehearses opening remarks
+- [ ] Play a prerec
+- [ ] Try switching to talk room and streaming pretend Q&A
+- [ ] Try playing another prerec
- [ ] Try publication process
+- [ ] Start alternate stream and check (?)
- [ ] Review the playbook
-- [ ] Sort out CRDT
* Thursday or Friday before the conference
-- STREAM: Download prerecorded videos from front:/var/www/media.emacsconf.org/2021/protected
+- STREAM: Download prerecorded videos from ${protected}
* On the day of the conference
** Set up
*** Arrange screens
- CHECK:
- - Share "upcoming" buffer with HOST and via CRDT
- - Current schedule, filenames/commands for playing
+ - Share ${upcoming} and ${conf} via CRDT
+ - Current schedule, filenames/commands for playing, Q&A preference, IRC nick, pronunciation, intro notes, prerec duration, emergency contact information
- Have #emacsconf-org and #emacsconf open
- HOST:
- Check OBS scenes for sharing windows/tabs as a virtual camera:
@@ -43,9 +48,10 @@
- Etherpad
- Schedule
- next talk page
+ - Clock with current time on screen: =watch TZ=America/Toronto date=
- Set up backchannel for easy viewing
- - "upcoming" CRDT buffer
- - #emacsconf-org channel
+ - ${upcoming}
+ - #emacsconf-org and #emacsconf channels
- Join organizer room S
- STREAM:
- Set up MPV with the profile
@@ -56,33 +62,47 @@
- Browser window with organizer room, audio from organizer room
- Browser window that will have talk room, audio from talk room
- Backchannel for easy viewing
+- CHECK:
+ - Start backup process for pad
+ #+begin_src sh :eval no :tangle playbook/backup-pad.sh
+ while true; do
+ curl https://etherpad.wikimedia.org/p/emacsconf-2021/export/html > emacsconf-$(date +"%Y%m%d-%H%M%S").html
+ sleep 15m
+ end
+ #+end_src
*** Start streaming :stream:
-- Start streaming from OBS to local Icecast, relay to live0 icecast
-- Display current time on screen: =watch TZ=America/Toronto date=
+- HOST: Display getting-ready message
+- STREAM: Set up BBB view in organizer room to have HOST's webcam maximized
+- STREAM: Start streaming from OBS to local Icecast, relay to live0 icecast
+- CHECK: Confirm that the stream is live at https://live.emacsconf.org/main.webm, update [[/ssh:live:/var/www/html/index.html]]
+- CHECK: Start low-resolution stream, confirm at https://live.emacsconf.org/main-480p.webm
+ Call this on live0 with the password as the first parameter. The Icecast configuration is on =live0= at =/etc/icecast2/icecast.xml=.
+ #+begin_src sh :eval no :tangle "playbook/restream-lowres.sh"
+ PASS=$1
+ while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -vf scale=854:480 -f webm -c:a copy -b:v 500k -maxrate 1M -bufsize 1M -content_type video/webm -c:v libvpx icecast://ec2020main480pmu:$PASS:8000/main-480p.webm; done
+ #+end_src
+- CHECK: Start Youtube stream. Call this with the Youtube streaming key as the first parameter.
+ #+begin_src sh :eval no :tangle "playbook/restream-youtube.sh"
+ KEY=$1
+ while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -f webm -c:a copy -c:v copy rtmp://a.rtmp.youtube.com/live2/$KEY; done
+ #+end_src
+- CHECK: Try toobnix stream. Call this with the Toobnix streaming key as the first parameter. (key from https://toobnix.org/videos/upload#go-live)
+ #+begin_src sh :eval no :tangle "playbook/restream-toobnix.sh"
+ KEY=$1
+ while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -f webm -c:a copy -c:v copy rtmp://toobnix.org:1935/live/$KEY; done
+ #+end_src
+- CHECK: Verify the load on live0.
+- CHECK: Verify with #emacsconf that the stream is active
-Update [[/ssh:live:/var/www/html/index.html]]
-
-*** Start low-resolution stream :check:
-
-Call this on live0 with the password as the first parameter. The Icecast configuration is on =live0= at =/etc/icecast2/icecast.xml=.
-
-#+begin_src sh :eval no :tangle "playbook/restream-lowres.sh"
- while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -vf scale=854:480 -f webm -c:a copy -b:v 500k -maxrate 1M -bufsize 1M -content_type video/webm -c:v libvpx icecast://ec2020main480pmu:${1}:8000/main-480p.webm; done
-#+end_src
-*** Start Youtube stream :check:
-
-Call this on live0 with the Youtube RTMP streaming key as the first parameter.
-
-#+begin_src sh :eval no :tangle "playbook/restream-youtube.sh"
- while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -f webm -c:a copy -c:v copy rtmp://a.rtmp.youtube.com/live2/$1; done
-#+end_src
** Talk process
-*** Check in speaker
+*** Check in a speaker
+
+Exception: [[*CHECK is unavailable][CHECK is unavailable]]
- Speaker checks in on #emacsconf-org via IRC or via e-mail ~30m before
-- CHECK notes IRC nick for speaker. =M-g t <slug> C-. p IRC <nick>= (using Embark and conf-go-to-talk)
+- CHECK notes IRC nick for speaker.
- CHECK confirms Q&A preference: live/IRC/Etherpad, preferred way of getting questions
- [? unknown] How would you like to handle questions today? Live video, #emacsconf, Etherpad?
- [? IRC] You can keep an eye on #emacsconf for questions and discussions related to your talk. Feel free to answer, skip answering, tell people that you'll follow up afterwards, etc. We'll also copy questions from the Etherpad so that you can see them in one place. Let us know if you need help or if you want to get set up for live Q&A! (If the volume gets overwhelming, we can copy questions into #emacsconf-questions for you.)
@@ -113,6 +133,10 @@ Call this on live0 with the Youtube RTMP streaming key as the first parameter.
*** Transition to talk
+- CHECK marks previous talk as done and notes the time finished:
+ - ${conf}
+ - ${upcoming} - remove finished one
+ - wiki
- [? next talk is prerec]
- HOST introduces next talk.
- STREAM switches OBS scene to MPV.
@@ -122,9 +146,8 @@ Call this on live0 with the Youtube RTMP streaming key as the first parameter.
- HOST starts recording or confirms that it's already on.
- STREAM gives the go-ahead.
- HOST introduces next talk.
-- PAD backs up a copy of the pad.
- PAD clears pad colours.
-- Exception: [[*Speaker does not have a prerec and has not checked in][Speaker does not have a prerec and has not checked in]]
+- Exception: [[*Speaker does not have a prerec and has not checked in][Speaker does not have a prerec and has not checked in]]
*** Present talk
@@ -134,6 +157,8 @@ Call this on live0 with the Youtube RTMP streaming key as the first parameter.
- Exception: [[*Last-minute prerecording submission][Last-minute prerecording submission]]
- CHECK notes the time that the presentation started, recalculates schedule, and publishes it.
- [[*Publish information][CHECK publishes information]]
+ - [[*Handle Q&A][HOST gets a head start on handling Q&A]]
+ - When prerec finishes, [[*Handle Q&A][STREAM joins Q&A]]
- [? live]
- Exception: [[*Speaker does not have a prerec and has not checked in][Speaker does not have a prerec and has not checked in]]
- HOST joins the BBB room and double-checks that recording is on
@@ -141,9 +166,44 @@ Call this on live0 with the Youtube RTMP streaming key as the first parameter.
- 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][Technical issues during a live presentation]]
- [? talk needs to be wrapped up]
- HOST nudges speaker verbally.
+
+*** Publish information
+ - CHECK updates the schedule in:
+ - ${conf}
+ - ${upcoming}
+ - wiki
+ - CHECK publishes the video to media.emacsconf.org
+ - CHECK updates the wiki page to include the video and any other published files.
+ - CHECK publishes the video on YouTube.
+ - Update description:
+ #+begin_example
+ This video is available under the terms of the
+ Creative Commons Attribution-ShareAlike 4.0 International (CC
+ BY-SA 4.0) license.
+
+ You can view it using free and open source software at
+ talk page URL
+
+ description from wiki page
+ #+end_example
+ - Reupload subtitles.
+ - Mark it as public.
+ - Add it to EmacsConf 2021 playlist.
+ - CHECK publishes the video on ToobNix.
+ - Copy title and description.
+ - Mark it as public.
+ - Add it to the EmacsConf 2021 playlist.
+ - [? live sections ]
+ - CHECK does a rough-cut of the recording from ${dump} to get the last X minutes or by time range
+ - When there's an opportunity to do so:
+ - CHECK finetunes the rough-cut recording (trim start and end) and posts it to:
+ - media.emacsconf.org/2021
+ - wiki page for talk
+
*** Handle Q&A
Exceptions:
@@ -161,6 +221,7 @@ Exceptions:
- HOST adds note to IRC/Etherpad that speakers can answer in any order, skip questions, answer afterwards, etc.
- [? Q&A needs to be wrapped up]
- HOST writes in Etherpad/IRC or nudges speaker verbally.
+ - CHECK notes the time that the live Q&A finished.
- [? IRC/pad]
- HOST and STREAM switch to organizer BBB meeting (room S)
- HOST describes Q&A method and shows it on the screen
@@ -177,16 +238,15 @@ Exceptions:
want to be notified, or subscribe to the emacsconf-org mailing
list to get the announcement. Please feel free to continue
discussing the talk on IRC or the pad.
-- [[*Transition to talk][Transition to talk]]
-*** Publish information
- - CHECK updates the schedule on the wiki
- - CHECK publishes the video to media.emacsconf.org
- - CHECK updates the wiki page to include the video and any other published files.
- - CHECK publishes the video on YouTube
- -
+- [[*Transition to talk][Transition to next talk]]
+** End of stream
+- CHECK stops ffmpeg process for Youtube
+- CHECK stops ffmpeg process for main-480p
+- STREAM stops streaming
+
+
** In case of...
-
*** Last-minute prerecording submission
- CHECK will copy it from the FTP upload server to ${protected} and name it appropriately.
@@ -244,6 +304,50 @@ Exceptions:
- HOST addresses it (on-camera if needed) with a reminder
+*** CHECK is unavailable
+
+- HOST does check-ins
+- HOST refers to conf.org for Q&A preference etc.
+- STREAM checks conf.org for prerec filenames etc.
+- Dropped goals:
+ - Publishing recordings ASAP
+ - Updating schedule/wiki on the fly
+
+*** HOST is unavailable
+
+- Either STREAM or CHECK does hosting
+
+*** Technical issues during a live presentation
+
+- HOST tries to contact the speaker
+- [? back on track]
+ - [? can be squeezed into remaining time]: Continue
+ - [? need extra time]: CHECK fiddles with buffer of following talks
+ - [? need too much extra time (ex: 10min)]: HOST acknowledges
+ technical issues and says we may be able to follow up after the
+ conference
+- [? can't resume]: HOST acknowledges technical issues and says we may
+ be able to follow up after the conference
+
+*** Big technical issues with streaming
+
+- CHECK notifies #emacsconf and #emacsconf-org
+- HOST updates the 2021.md wiki page
+- CHECK publishes prerecordings
+ - media.emacsconf.org
+ - wiki
+ - Toobnix
+ - Peertube
+- STREAM e-mails the mailing list
+
+*** live0 can't handle the load or is close to network transfer limit
+
+- OR:
+ - Redirect some viewers via asking in #emacsconf:
+ - watch via Toobnix
+ - watch via main-480p
+ - Consider dropping the restream to Toobnix (lower audience?) or to Youtube
+
* Before the conference
** Help speakers with tech checks
- Explain process
@@ -266,3 +370,5 @@ Exceptions:
- Test stream
** Review Youtube videos
+** TODO STREAM: Scale up the server and doublecheck the setup
+SCHEDULED: <2021-11-26 Fri>