From fd4aa97b1f39cc0d696e382b66f01cc6bc6f9d1e Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sat, 20 Nov 2021 19:56:46 -0500 Subject: Update playbook for restreaming --- playbook.md | 160 +++++++++++++++++++++++-------------------- playbook.org | 122 +++++++++++++++++---------------- playbook/restream-flv.sh | 2 + playbook/restream-lowres.sh | 2 +- playbook/restream-youtube.sh | 2 +- 5 files changed, 153 insertions(+), 135 deletions(-) create mode 100644 playbook/restream-flv.sh diff --git a/playbook.md b/playbook.md index b8acb94a..9a509c39 100644 --- a/playbook.md +++ b/playbook.md @@ -56,7 +56,7 @@ ${stream-status} -file://ssh:live:/var/www/html/index.html +file://ssh:front:/var/www/live.emacsconf.org/index.html @@ -72,6 +72,12 @@ + +${playbook} +playbook.org shared over CRDT + + + ${dump} file://ssh:live:/data/ @@ -88,14 +94,23 @@ # Pre-conference dry run -- [ ] [Start streaming](#org653abcb) -- [ ] [Check in a speaker](#org3e96be5) +- - DONE Working together via upcoming.org + - DONE Streaming [main.webm](https://live0.emacsconf.org/main.webm) + - DONE Streaming [main-480p.webm](https://live0.emacsconf.org/main-480p.webm") + - CXLD Streaming [alt.webm](https://live0.emacsconf.org/alt.webm") + - Doesn’t really work for corwin because of some weird setting problem + - STRT Streaming to YouTube + +- [X] [Start streaming](#org0bb33b4) + - Ugh, need to figure out ffmpeg for streaming +- [ ] [Check in a speaker](#orgd6f46ac) - [ ] Try streaming the organizer room, HOST rehearses opening remarks -- [ ] Play a prerec +- [X] Play a prerec with subtitles - [ ] Try switching to talk room and streaming pretend Q&A - [ ] Try playing another prerec - [ ] Try publication process - [ ] Start alternate stream and check (?) + - No alternate streams at the moment - [ ] Review the playbook @@ -113,10 +128,16 @@ ### Arrange screens - CHECK: - - Share ${upcoming} and ${conf} via CRDT: `conf-crdt-connect-and-share` + - Share ${upcoming}, ${playbook}, and ${conf} via CRDT: `conf-crdt-connect-and-share` - Current schedule, filenames/commands for playing, Q&A preference, IRC nick, pronunciation, intro notes, prerec duration, emergency contact information - `conf-upcoming-add-subtree` - Have #emacsconf-org and #emacsconf open + - Start backup process for pad + + 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 - HOST: - Check OBS scenes for sharing windows/tabs as a virtual camera: - chat.emacsconf.org with #emacsconf @@ -129,7 +150,6 @@ - \#emacsconf-org and #emacsconf channels - Join organizer room S - STREAM: - - Set up MPV with the profile - Join organizer BBB room - Check OBS scenes - MPV and audio from MPV @@ -137,48 +157,38 @@ - 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 - - 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 - + ### Start streaming :stream: - 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 , update +- CHECK: Confirm that the stream is live at +- STREAM: Update the status page to say that the stream is live - CHECK: Start low-resolution stream, confirm at - Call this on live0 with the password as the first parameter. The Icecast configuration is on `live0` at `/etc/icecast2/icecast.xml`. + Call this on live0 with $CONF480PASS as the first parameter. The Icecast configuration is on `live0` at `/etc/icecast2/icecast.xml`. 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 -- CHECK: Start Youtube stream. Call this with the Youtube streaming key as the first parameter. + while true; do ffmpeg -loglevel 24 -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@localhost:8000/main-480p.webm; done +- CHECK: Start Youtube stream. Call this with $YOUTUBE1PASS, $YOUTUBE2PASS, or $TOOBNIX as the parameter - 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 -- CHECK: Try toobnix stream. Call this with the Toobnix streaming key as the first parameter. (key from ) - - 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 -- CHECK: Verify the load on live0. + MOUNT=$1 + while true; do ffmpeg -loglevel 24 -i http://localhost:8000/main.webm -cluster_size_limit 2M -cluster_time_limit 5100 -b:v 1M -crf 30 -g 125 -deadline good -threads 4 -vcodec libx264 -acodec libmp3lame -f flv $MOUNT; done +- CHECK: Verify the alternate streams and the load on live0. - CHECK: Verify with #emacsconf that the stream is active ## Talk process - + ### Check in a speaker -Exception: [CHECK is unavailable](#org83454f0) +Exception: [CHECK is unavailable](#orga2b0fce) - Speaker checks in on #emacsconf-org via IRC or via e-mail ~30m before - CHECK notes IRC nick for speaker. @@ -198,7 +208,8 @@ Exception: [CHECK is unavailable](#org83454f0) - 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 + can skip; coach possible responses for awkward things) or asking HOST to read questions to them + - HOST can share the pad or IRC; speaker shares screen only if doing demo - encouragement of webcam, although it's optional - how STREAM will join shortly before the prerec ends and then give them the go-ahead @@ -208,53 +219,39 @@ Exception: [CHECK is unavailable](#org83454f0) collects emergency contact information (in case of technical issues) and shares it with HOST in the CRDT buffer - 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-. + - CHECK updates ${upcoming} with link to the talk room and preferences for Q&A-. CHECK will also /msg the relevant information. - + -### Transition to talk +### Present 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. - - STREAM plays prerec in MPV. -- [? next talk is live] - - HOST and STREAM switch to the talk BBB room. - - HOST starts recording or confirms that it's already on. - - STREAM gives the go-ahead. - - HOST introduces next talk. - PAD clears pad colours. -- Exception: [Speaker does not have a prerec and has not checked in](#org8618b0e) - - -### Present talk - - [? 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](#org55fd5da) - - Exception: [Last-minute caption update](#org4b9364c) - - [CHECK publishes information](#org65abe69) - - [HOST gets a head start on handling Q&A](#orgb1598e9) - - When prerec finishes, [STREAM joins Q&A](#orgb1598e9) + - 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) - [? live] - - Exception: [Speaker does not have a prerec and has not checked in](#org8618b0e) + - Exception: [Speaker does not have a prerec and has not checked in](#orgf5536c3) - 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](#org23a132d) + - Exception: [Technical issues during a live presentation](#org489104b) - [? talk needs to be wrapped up] - HOST nudges speaker verbally. - + ### Publish information @@ -275,7 +272,7 @@ Exception: [CHECK is unavailable](#org83454f0) ${url} ${description} - - Reupload subtitles. + - Reupload subtitles if needed. - Mark it as public. - Add it to EmacsConf 2021 playlist. - CHECK publishes the video on ToobNix. @@ -290,13 +287,13 @@ Exception: [CHECK is unavailable](#org83454f0) - wiki page for talk - + ### Handle Q&A Exceptions: -- [Speaker has not checked in](#org01714e9) +- [Speaker has not checked in](#org686cb61) - [? live] - HOST joins the BBB room @@ -315,7 +312,7 @@ Exceptions: - HOST and STREAM switch to organizer BBB meeting (room S) - HOST describes Q&A method and shows it on the screen - While there's buffer time before the next talk, HOST can read out - questions and answers + questions and answers, or transition to the next talk early - HOST: It's time for the next talk, but if you want to keep discussing the previous talk, please feel free to continue doing so on IRC or the pad. @@ -324,16 +321,17 @@ Exceptions: - HOST says the speaker is not available right now, but we'll forward the questions to the speaker and we'll post the speaker's answers on the wiki page. Leave your contact information if you - want to be notified, or subscribe to the emacsconf-org mailing + 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. -- [Transition to next talk](#org00547c8) +- [Present next talk](#org6aeec48) ## Break time - 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 @@ -346,7 +344,7 @@ Exceptions: ## In case of… - + ### Last-minute prerecording submission @@ -354,7 +352,7 @@ Exceptions: - CHECK will notify STREAM with the scp command and the mpv command so that STREAM can choose. - + ### Last-minute caption update @@ -363,7 +361,7 @@ Exceptions: - STREAM uses the provided commands to download the VTT file and load it into MPV with `--sub-file` - + ### Speaker has not checked in @@ -374,7 +372,7 @@ Exceptions: - Can play next prerec a few minutes early - + ### Speaker does not have a prerec and has not checked in @@ -384,17 +382,18 @@ Exceptions: - 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 + - invite another speaker for an impromptu extension; mplsCorwin will keep a list of possible speakers who are still active - replay a short prerec + - let mplsCorwin or zaeph fill in -### Speaker whose talk was reallocated shows up and has a prerec +### CANCELLED 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 +### CANCELLED 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 @@ -403,9 +402,9 @@ Exceptions: post-conference communication -### Alternate stream volunteer wants to stream +### Alternate stream volunteer wants to stream (nice to have, at risk) -- CHECK gives ALTERNATE the BBB room URL for the talk they are interest in +- CHECK gives ALTERNATE the BBB room URL for the talk they are interested in - ALTERNATE starts streaming to assigned end point - CHECK confirms stream - CHECK updates ${stream-status} @@ -433,10 +432,10 @@ Exceptions: ### Conduct guidelines issue -- HOST addresses it (on-camera if needed) with a reminder +- HOST addresses it (on-camera if needed) with a reminder and/or a kick or a ban - + ### CHECK is unavailable @@ -453,14 +452,14 @@ Exceptions: - 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 extra time]: CHECK fiddles with buffer of following talks in conf.org and updates schedule - [? need too much extra time (ex: 10min)]: HOST acknowledges technical issues and says we may be able to follow up after the conference @@ -470,7 +469,7 @@ Exceptions: ### Big technical issues with streaming -- CHECK notifies #emacsconf and #emacsconf-org +- HOST notifies #emacsconf and #emacsconf-org and pad - HOST updates the 2021.md wiki page - CHECK publishes prerecordings - media.emacsconf.org @@ -484,9 +483,10 @@ Exceptions: - OR: - Redirect some viewers via asking in #emacsconf: - - watch via Toobnix - watch via main-480p + - watch via Toobnix (if we can get that working) - Consider dropping the restream to Toobnix (lower audience?) or to Youtube + - Add additional node to Linode account for shared transfer pool (TODO: doublecheck) # Before the conference @@ -528,3 +528,15 @@ Exceptions: ## TODO STREAM: Scale up the server and doublecheck the setup + +## sachac + + +### TODO Figure out the YouTube/Toobnix stuff + + +## bandali + + +### + diff --git a/playbook.org b/playbook.org index 88bd2633..1083a52e 100644 --- a/playbook.org +++ b/playbook.org @@ -13,21 +13,31 @@ | 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:front:/var/www/live.emacsconf.org/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/]] | +| ${playbook} | playbook.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]] +- - DONE Working together via upcoming.org + - DONE Streaming [[https://live0.emacsconf.org/main.webm][main.webm]] + - DONE Streaming [[https://live0.emacsconf.org/main-480p.webm"][main-480p.webm]] + - CXLD Streaming [[https://live0.emacsconf.org/alt.webm"][alt.webm]] + - Doesn’t really work for corwin because of some weird setting problem + - STRT Streaming to YouTube + +- [X] [[*Start streaming][Start streaming]] + - Ugh, need to figure out ffmpeg for streaming - [ ] [[*Check in a speaker][Check in a speaker]] - [ ] Try streaming the organizer room, HOST rehearses opening remarks -- [ ] Play a prerec +- [X] Play a prerec with subtitles - [ ] Try switching to talk room and streaming pretend Q&A - [ ] Try playing another prerec - [ ] Try publication process - [ ] Start alternate stream and check (?) + - No alternate streams at the moment - [ ] Review the playbook * Thursday or Friday before the conference @@ -39,10 +49,17 @@ *** Arrange screens - CHECK: - - Share ${upcoming} and ${conf} via CRDT: =conf-crdt-connect-and-share= + - Share ${upcoming}, ${playbook}, and ${conf} via CRDT: =conf-crdt-connect-and-share= - Current schedule, filenames/commands for playing, Q&A preference, IRC nick, pronunciation, intro notes, prerec duration, emergency contact information - =conf-upcoming-add-subtree= - Have #emacsconf-org and #emacsconf open + - 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 - HOST: - Check OBS scenes for sharing windows/tabs as a virtual camera: - chat.emacsconf.org with #emacsconf @@ -55,7 +72,6 @@ - #emacsconf-org and #emacsconf channels - Join organizer room S - STREAM: - - Set up MPV with the profile - Join organizer BBB room - Check OBS scenes - MPV and audio from MPV @@ -63,38 +79,26 @@ - 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: - 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: Confirm that the stream is live at https://live.emacsconf.org/main.webm +- STREAM: Update the status page to say that the stream is live - 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=. + Call this on live0 with $CONF480PASS 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 + while true; do ffmpeg -loglevel 24 -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@localhost:8000/main-480p.webm; 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 +- CHECK: Start Youtube stream. Call this with $YOUTUBE1PASS, $YOUTUBE2PASS, or $TOOBNIX as the parameter + #+begin_src sh :eval no :tangle "playbook/restream-flv.sh" + MOUNT=$1 + while true; do ffmpeg -loglevel 24 -i http://localhost:8000/main.webm -cluster_size_limit 2M -cluster_time_limit 5100 -b:v 1M -crf 30 -g 125 -deadline good -threads 4 -vcodec libx264 -acodec libmp3lame -f flv $MOUNT; done #+end_src -- CHECK: Verify the load on live0. +- CHECK: Verify the alternate streams and the load on live0. - CHECK: Verify with #emacsconf that the stream is active ** Talk process @@ -120,7 +124,8 @@ Exception: [[*CHECK is unavailable][CHECK is unavailable]] - 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 + can skip; coach possible responses for awkward things) or asking HOST to read questions to them + - HOST can share the pad or IRC; speaker shares screen only if doing demo - encouragement of webcam, although it's optional - how STREAM will join shortly before the prerec ends and then give them the go-ahead @@ -130,28 +135,16 @@ Exception: [[*CHECK is unavailable][CHECK is unavailable]] collects emergency contact information (in case of technical issues) and shares it with HOST in the CRDT buffer - 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-. + - CHECK updates ${upcoming} with link to the talk room and preferences for Q&A-. CHECK will also /msg the relevant information. + -*** Transition to talk +*** Present 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. - - STREAM plays prerec in MPV. -- [? next talk is live] - - HOST and STREAM switch to the talk BBB room. - - HOST starts recording or confirms that it's already on. - - STREAM gives the go-ahead. - - HOST introduces next talk. - 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]] - -*** Present talk - - [? 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). @@ -191,7 +184,7 @@ ${url} ${description} #+end_example - - Reupload subtitles. + - Reupload subtitles if needed. - Mark it as public. - Add it to EmacsConf 2021 playlist. - CHECK publishes the video on ToobNix. @@ -227,7 +220,7 @@ Exceptions: - HOST and STREAM switch to organizer BBB meeting (room S) - HOST describes Q&A method and shows it on the screen - While there's buffer time before the next talk, HOST can read out - questions and answers + questions and answers, or transition to the next talk early - HOST: It's time for the next talk, but if you want to keep discussing the previous talk, please feel free to continue doing so on IRC or the pad. @@ -236,13 +229,17 @@ Exceptions: - HOST says the speaker is not available right now, but we'll forward the questions to the speaker and we'll post the speaker's answers on the wiki page. Leave your contact information if you - want to be notified, or subscribe to the emacsconf-org mailing + 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. -- [[*Transition to talk][Transition to next talk]] +- [[*Present talk][Present next talk]] + ** Break time + - 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 - CHECK stops ffmpeg process for Youtube @@ -255,6 +252,7 @@ Exceptions: - 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 - CHECK uploads the --main.vtt file to ${protected} @@ -274,19 +272,20 @@ Exceptions: - 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 + - invite another speaker for an impromptu extension; mplsCorwin will keep a list of possible speakers who are still active - replay a short prerec -*** Speaker whose talk was reallocated shows up and has a prerec + - let mplsCorwin or zaeph fill in +*** CANCELLED 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 +*** CANCELLED 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 for the talk they are interest in +*** Alternate stream volunteer wants to stream (nice to have, at risk) +- CHECK gives ALTERNATE the BBB room URL for the talk they are interested in - ALTERNATE starts streaming to assigned end point - CHECK confirms stream - CHECK updates ${stream-status} @@ -311,8 +310,8 @@ Exceptions: *** Conduct guidelines issue -- HOST addresses it (on-camera if needed) with a reminder - +- HOST addresses it (on-camera if needed) with a reminder and/or a kick or a ban + *** CHECK is unavailable - HOST does check-ins @@ -331,7 +330,7 @@ Exceptions: - 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 extra time]: CHECK fiddles with buffer of following talks in conf.org and updates schedule - [? need too much extra time (ex: 10min)]: HOST acknowledges technical issues and says we may be able to follow up after the conference @@ -340,7 +339,7 @@ Exceptions: *** Big technical issues with streaming -- CHECK notifies #emacsconf and #emacsconf-org +- HOST notifies #emacsconf and #emacsconf-org and pad - HOST updates the 2021.md wiki page - CHECK publishes prerecordings - media.emacsconf.org @@ -353,10 +352,11 @@ Exceptions: - OR: - Redirect some viewers via asking in #emacsconf: - - watch via Toobnix - watch via main-480p + - watch via Toobnix (if we can get that working) - Consider dropping the restream to Toobnix (lower audience?) or to Youtube - + - Add additional node to Linode account for shared transfer pool (TODO: doublecheck) + * Before the conference ** Help speakers with tech checks - Explain process @@ -381,3 +381,7 @@ Exceptions: ** Review Youtube videos ** TODO STREAM: Scale up the server and doublecheck the setup SCHEDULED: <2021-11-26 Fri> +** sachac +*** TODO Figure out the YouTube/Toobnix stuff +** bandali +*** diff --git a/playbook/restream-flv.sh b/playbook/restream-flv.sh new file mode 100644 index 00000000..dc632762 --- /dev/null +++ b/playbook/restream-flv.sh @@ -0,0 +1,2 @@ + MOUNT=$1 + while true; do ffmpeg -loglevel 24 -i http://localhost:8000/main.webm -cluster_size_limit 2M -cluster_time_limit 5100 -b:v 1M -crf 30 -g 125 -deadline good -threads 4 -vcodec libx264 -acodec libmp3lame -f flv $MOUNT; done diff --git a/playbook/restream-lowres.sh b/playbook/restream-lowres.sh index 3ee7c20d..bd6f5bfb 100644 --- a/playbook/restream-lowres.sh +++ b/playbook/restream-lowres.sh @@ -1,2 +1,2 @@ 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 + while true; do ffmpeg -loglevel 24 -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@localhost:8000/main-480p.webm; done diff --git a/playbook/restream-youtube.sh b/playbook/restream-youtube.sh index c1fee46c..1cc2994b 100644 --- a/playbook/restream-youtube.sh +++ b/playbook/restream-youtube.sh @@ -1,2 +1,2 @@ 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 + while true; do ffmpeg -loglevel 8 -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 -- cgit v1.2.3