diff options
author | Sacha Chua <sacha@sachachua.com> | 2021-11-18 00:40:31 -0500 |
---|---|---|
committer | Sacha Chua <sacha@sachachua.com> | 2021-11-18 00:40:31 -0500 |
commit | 2e41189258df30746e6e240f66e7d5321891596c (patch) | |
tree | 9765c17fcac0fd5af426910c079d51d44a3b083a | |
parent | 384dafa18987dd03b4c47806418e9ed69cc40a71 (diff) | |
download | emacsconf-wiki-2e41189258df30746e6e240f66e7d5321891596c.tar.xz emacsconf-wiki-2e41189258df30746e6e240f66e7d5321891596c.zip |
Starting the playbook
Diffstat (limited to '')
-rw-r--r-- | playbook.md | 251 | ||||
-rw-r--r-- | playbook.org | 157 | ||||
-rw-r--r-- | playbook/restream-lowres.sh | 1 | ||||
-rw-r--r-- | playbook/restream-youtube.sh | 1 |
4 files changed, 410 insertions, 0 deletions
diff --git a/playbook.md b/playbook.md new file mode 100644 index 00000000..951c3900 --- /dev/null +++ b/playbook.md @@ -0,0 +1,251 @@ +<!-- This file was automatically generated from playbook.org. Instead of editing the .md, please edit the .org and republish. Thanks! --> +[[!toc levels=4]] + +- [Export and tangle]((progn (org-md-export-to-markdown) (org-babel-tangle))) +- [Execute buffer]((org-babel-execute-buffer)) + + +# Roles/values + +<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> + + +<colgroup> +<col class="org-left" /> + +<col class="org-left" /> + +<col class="org-left" /> +</colgroup> +<tbody> +<tr> +<td class="org-left">STREAM</td> +<td class="org-left">main organizer</td> +<td class="org-left">bandali</td> +</tr> + + +<tr> +<td class="org-left">CHECK</td> +<td class="org-left">check-ins</td> +<td class="org-left">sachac</td> +</tr> + + +<tr> +<td class="org-left">HOST</td> +<td class="org-left">hosting, intros, reading, moving questions/answers around</td> +<td class="org-left">zaeph</td> +</tr> +</tbody> +</table> + +<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> + + +<colgroup> +<col class="org-left" /> + +<col class="org-left" /> +</colgroup> +<tbody> +<tr> +<td class="org-left">${protected}</td> +<td class="org-left"><code>front:/var/www/media.emacsconf.org/2021/protected/</code></td> +</tr> +</tbody> +</table> + + +# Pre-conference dry run + +- [ ] [Start streaming](#orgf5a1ede) +- [ ] [Start low-resolution stream](#org1ab1def) +- [ ] [Start Youtube stream](#org09ec554) + + +# Thursday or Friday before the conference + +- STREAM: Download prerecorded videos from front:/var/www/media.emacsconf.org/2021/protected + + +# On the day of the conference + + +## Set up + + +<a id="orgf5a1ede"></a> + +### Start streaming :stream: + +- Start streaming from OBS to local Icecast, relay to live0 icecast +- Display current time on screen: `watch TZ=America/Toronto date` + +Update <file://ssh:live:/var/www/html/index.html> + + +<a id="org1ab1def"></a> + +### 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`. + + 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 + + +<a id="org09ec554"></a> + +### Start Youtube stream :check: + +Call this on live0 with the Youtube RTMP streaming key as the first parameter. + + 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 + + +## Talk process + + +### Check in speaker + +- Speaker checks in on #emacsconf-org via IRC or via e-mail ~30m before +- CHECK notes IRC nick: `/conf set <slug> irc <nick>` or `M-g t <slug> C-. p IRC <nick>` +- 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! +- [? Etherpad] The Etherpad is at ${etherpad-url} . Would you like to find the section for your talk and get comfortable? We'll copy questions from IRC over to the pad so that you can see them. Feel free to answer, skip answering, tell people that you'll follow up afterwards, etc. Let us know if you need help! +- [? live] Our notes say you're thinking of handling questions live. I'll set you up in a BigBlueButton room so that you can get settled in. + - CHECK directs speaker to available room with `/checkin <room> <nick>` + - Speaker joins talk room + - CHECK makes speaker presenter and moderator, does last-minute tech check + - Hello, thanks + - Speaker tries screen sharing and webcam (optional) + - check screen readability + - CHECK briefs speaker on process, including: + - live Q&A: reading questions themselves (can do in any order, can skip) or asking HOST to read questions to them + - encouragement of webcam, although it's optional + - how STREAM will join shortly before the prerec ends and then give them the go-ahead + - closing any tabs watching the stream as their talk starts (otherwise the audio is confusing) + - If the speaker will be live for more than 10 minutes, CHECK collects emergency contact information (in case of technical issues) + - Okay to do other things until the prerec ends + - CHECK notifies STREAM and HOST with link to the talk room and preferences for Q&A- + - STREAM joins meeting and gives go-ahead + - CHECK starts recording in BBB + - CHECK announces on IRC + - PAD clears the pad colours + + +### Play the prerec + + +### Transition to next talk + +- When it's time to wrap up, HOST writes in Etherpad/IRC or nudges speaker verbally. +- [? next talk is prerec] + - HOST introduces next talk. + - STREAM switches OBS scene to MPV. + - STREAM plays prerec in MPV. +- [? next talk is live] + - Host stops recording in this room. + - HOST and STREAM switch to the other BBB room. + - Host starts recording in the other room. + - HOST introduces next talk. + + +## In case of… + + +### Last-minute prerecording submission + +- CHECK will copy it from the FTP upload server to ${protected} and name it appropriately. +- CHECK will /msg STREAM with the scp command and the mpv command so that STREAM can choose. + +- TODO Shortcut for moving things around + +- TODO Shortcut for notifying STREAM + + +### Speaker has not checked in for live Q&A + +- 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 + +- 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 + - HOST: The next speaker might be having some difficulty connecting. In the meantime, let's… + - OR: + - highlight ongoing discussions + - invite another speaker for an impromptu extension + - replay a short prerec + + +### Speaker whose talk was reallocated shows up and has a prerec + +- CHECK copies it to ${protected} +- Plan to play prerec at the end of the day, or in any gaps if a live talk falls through + + +### Speaker whose talk was reallocated shows up and wants to do it live + +- See if there's enough time if buffers are shuffled back; if so, set up for a live presentation +- Check for alternate stream volunteers +- [? not enough time] Offer to set up a BBB room for recording or to + accept a prerecording afterwards, then include it on the site and in + post-conference communication + + +### Alternate stream volunteer wants to stream + +- CHECK gives ALTERNATE the BBB room URL +- ALTERNATE starts streaming to assigned end point +- CHECK confirms stream +- CHECK updates live:/var/www/html/index.html +- CHECK notifies STREAM and HOST + - After prerec plays: + - HOST: This talk has an extended demo/Q&A. You can go to URL to watch it, and we'll post a recording afterwards. + - HOST sends URL to IRC + + +# Before the conference + + +## Help speakers with tech checks + +- Explain process +- Test audio, webcam, screensharing, collaborative pad + - Music demos and other things that use system audio will need to be prerecorded (or done through virtual loopback device, maybe? Technical risk.) + - Multi-monitor setups might not be handled well by BBB; share window instead of desktop +- Check if comfortable checking into IRC: chat.emacsconf.org/?join=emacsconf,emacsconf-org +- Get IRC nick, phone number for emergency contact, store in private wiki +- Try to record name pronunciation +- Encourage webcam for Q&A, although make it clear that it's totally optional +- Possible picture-in-picture approach to maximize screen real estate + + +## Set up the Etherpad + + +## Reallocate times for radio-silence talks + + +## E-mail missing prerecs + + +## Set up for alternate stream volunteers + +- username +- password +- endpoint + +- Test stream + + +## Review Youtube videos + diff --git a/playbook.org b/playbook.org new file mode 100644 index 00000000..48e95688 --- /dev/null +++ b/playbook.org @@ -0,0 +1,157 @@ +#+PROPERTY: header-args:emacs-lisp :tangle playbook/emacsconf-playbook.el :eval no +#+begin_export md +<!-- This file was automatically generated from playbook.org. Instead of editing the .md, please edit the .org and republish. Thanks! --> +[[!toc levels=4]] +#+end_export + +- [[elisp:(progn (org-md-export-to-markdown) (org-babel-tangle))][Export and tangle]] +- [[elisp:(org-babel-execute-buffer)][Execute buffer]] + +* Roles/values + +| STREAM | main organizer | bandali | +| CHECK | check-ins | sachac | +| HOST | hosting, intros, reading, moving questions/answers around | zaeph | + +| ${protected} | =front:/var/www/media.emacsconf.org/2021/protected/= | + +* Pre-conference dry run +- [ ] [[*Start streaming][Start streaming]] +- [ ] [[*Start low-resolution stream][Start low-resolution stream]] +- [ ] [[*Start Youtube stream][Start Youtube stream]] + +* Thursday or Friday before the conference + +- STREAM: Download prerecorded videos from front:/var/www/media.emacsconf.org/2021/protected + +* On the day of the conference +** Set up +*** Start streaming :stream: + +- Start streaming from OBS to local Icecast, relay to live0 icecast +- Display current time on screen: =watch TZ=America/Toronto date= + +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 + +- Speaker checks in on #emacsconf-org via IRC or via e-mail ~30m before +- CHECK notes IRC nick: =/conf set <slug> irc <nick>= or =M-g t <slug> C-. p IRC <nick>= +- 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! +- [? Etherpad] The Etherpad is at ${etherpad-url} . Would you like to find the section for your talk and get comfortable? We'll copy questions from IRC over to the pad so that you can see them. Feel free to answer, skip answering, tell people that you'll follow up afterwards, etc. Let us know if you need help! +- [? live] Our notes say you're thinking of handling questions live. I'll set you up in a BigBlueButton room so that you can get settled in. + - CHECK directs speaker to available room with =/checkin <room> <nick>= + - Speaker joins talk room + - CHECK makes speaker presenter and moderator, does last-minute tech check + - Hello, thanks + - Speaker tries screen sharing and webcam (optional) + - check screen readability + - CHECK briefs speaker on process, including: + - live Q&A: reading questions themselves (can do in any order, can skip) or asking HOST to read questions to them + - encouragement of webcam, although it's optional + - how STREAM will join shortly before the prerec ends and then give them the go-ahead + - closing any tabs watching the stream as their talk starts (otherwise the audio is confusing) + - If the speaker will be live for more than 10 minutes, CHECK collects emergency contact information (in case of technical issues) + - Okay to do other things until the prerec ends + - CHECK notifies STREAM and HOST with link to the talk room and preferences for Q&A- + - STREAM joins meeting and gives go-ahead + - CHECK starts recording in BBB + - CHECK announces on IRC + - PAD clears the pad colours + +*** Play the prerec + +*** Transition to next talk + +- When it's time to wrap up, HOST writes in Etherpad/IRC or nudges speaker verbally. +- [? next talk is prerec] + - HOST introduces next talk. + - STREAM switches OBS scene to MPV. + - STREAM plays prerec in MPV. +- [? next talk is live] + - Host stops recording in this room. + - HOST and STREAM switch to the other BBB room. + - Host starts recording in the other room. + - HOST introduces next talk. + +** In case of... + +*** Last-minute prerecording submission + +- CHECK will copy it from the FTP upload server to ${protected} and name it appropriately. +- CHECK will /msg STREAM with the scp command and the mpv command so that STREAM can choose. +**** TODO Shortcut for moving things around +**** TODO Shortcut for notifying STREAM +*** Speaker has not checked in for live Q&A +- 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 +- 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 + - HOST: The next speaker might be having some difficulty connecting. In the meantime, let's... + - OR: + - highlight ongoing discussions + - invite another speaker for an impromptu extension + - replay a short prerec +*** Speaker whose talk was reallocated shows up and has a prerec +- CHECK copies it to ${protected} +- Plan to play prerec at the end of the day, or in any gaps if a live talk falls through +*** Speaker whose talk was reallocated shows up and wants to do it live +- See if there's enough time if buffers are shuffled back; if so, set up for a live presentation +- Check for alternate stream volunteers +- [? not enough time] Offer to set up a BBB room for recording or to + accept a prerecording afterwards, then include it on the site and in + post-conference communication +*** Alternate stream volunteer wants to stream +- CHECK gives ALTERNATE the BBB room URL +- ALTERNATE starts streaming to assigned end point +- CHECK confirms stream +- CHECK updates live:/var/www/html/index.html +- CHECK notifies STREAM and HOST + - After prerec plays: + - HOST: This talk has an extended demo/Q&A. You can go to URL to watch it, and we'll post a recording afterwards. + - HOST sends URL to IRC + +* Before the conference +** Help speakers with tech checks +- Explain process +- Test audio, webcam, screensharing, collaborative pad + - Music demos and other things that use system audio will need to be prerecorded (or done through virtual loopback device, maybe? Technical risk.) + - Multi-monitor setups might not be handled well by BBB; share window instead of desktop +- Check if comfortable checking into IRC: chat.emacsconf.org/?join=emacsconf,emacsconf-org +- Get IRC nick, phone number for emergency contact, store in private wiki +- Try to record name pronunciation +- Encourage webcam for Q&A, although make it clear that it's totally optional +- Possible picture-in-picture approach to maximize screen real estate + +** Set up the Etherpad +** Reallocate times for radio-silence talks +** E-mail missing prerecs +** Set up for alternate stream volunteers +- username +- password +- endpoint + +- Test stream +** Review Youtube videos diff --git a/playbook/restream-lowres.sh b/playbook/restream-lowres.sh new file mode 100644 index 00000000..6312b9eb --- /dev/null +++ b/playbook/restream-lowres.sh @@ -0,0 +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:${1}:8000/main-480p.webm; done diff --git a/playbook/restream-youtube.sh b/playbook/restream-youtube.sh new file mode 100644 index 00000000..7609305e --- /dev/null +++ b/playbook/restream-youtube.sh @@ -0,0 +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/$1; done |