From fc25c3b0764cbb1917f5989ee37a845a03099e59 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Fri, 17 Dec 2021 16:54:21 -0500 Subject: update playbook with q=32 --- 2021/prepare.md | 2 +- playbook.md | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- playbook.org | 36 ++++++++++++++++++------ 3 files changed, 114 insertions(+), 11 deletions(-) diff --git a/2021/prepare.md b/2021/prepare.md index 5a24bb17..115d8432 100644 --- a/2021/prepare.md +++ b/2021/prepare.md @@ -120,7 +120,7 @@ WebM format if possible.* If you would like to compress your video before uploading, the following shell script may be useful: - Q=56 + Q=32 ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -aq-mode 2 -an -tile-columns 0 -tile-rows 0 -frame-parallel 0 -cpu-used 8 -auto-alt-ref 1 -lag-in-frames 25 -g 240 -pass 1 -f webm -threads 8 /dev/null && ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -c:a copy -tile-columns 2 -tile-rows 2 -frame-parallel 0 -cpu-used -5 -auto-alt-ref 1 -lag-in-frames 25 -pass 2 -g 240 -threads 8 "$2" diff --git a/playbook.md b/playbook.md index d8c04274..eb9b9833 100644 --- a/playbook.md +++ b/playbook.md @@ -2,6 +2,9 @@ # Table of Contents - [Roles/values](#roles) +- [After the conference](#orgac70a06) + - [Update captions](#org1e43b2c) + - [Update](#org4cfcaec) - [Thursday or Friday before the conference](#days-before) - [On the day of the conference](#day-of) - [Set up](#setup) @@ -33,6 +36,8 @@ - [Before the conference](#before) - [Help speakers with tech checks](#tech-checks) - [Experiment with setup to allow MPV / BBB sound isolation](#sound) + - [Compress video](#orgf31a1d7) + - [Check for video encoding issues](#org7482155) @@ -147,10 +152,64 @@ ${live-alt} file://ssh:front:/var/www/live.emacsconf.org/alt.html + + + +${profile} +file://ssh:live:~/.profile + + + + +${emacsconf-el} +https://git.emacsconf.org/emacsconf-el/ + + + + +  +  + + + +# After the conference + + + + +## Update captions + +- Merge them into the video with `add-captions.sh` + + #!/usr/bin/zsh + BASE="${1%.*}" + BASE="${BASE%--main}" + ffmpeg -y -i "$1" ${BASE}--main.vtt + if [ -f "${BASE}--normalized.webm" ]; then + ffmpeg -y -i "$1" -i "${BASE}--normalized.webm" -c:a copy -c:v copy "${BASE}--captioned.webm" + else + ffmpeg -y -i "$1" -i "${BASE}--compressed.webm" -c:a copy -c:v copy "${BASE}--captioned.webm" + fi + cp ${BASE}--main.vtt ${BASE}--chapters.vtt ~/vendor/emacsconf-wiki/2021/captions + scp "${BASE}--captioned.webm" "${BASE}--main.webm" + scp "${BASE}--main.webm" front:~/protected + scp "${BASE}--main.vtt" front:~/protected + scp "${BASE}--chapters.vtt" front:~/protected + ssh front 'cd protected; chmod ugo+r *' +- Update Toobnix and Youtube captions with `conf-video-share`. +- Update Toobnix and Youtube descriptions with chapters. +- Update ${conf-year}/${captions}/${slug}.md in the wiki. To make this from scratch, use `M-x conf-prepare-transcript-directives` from the talk heading in the conference Org file. + + + + +## Update + + # Thursday or Friday before the conference @@ -188,7 +247,7 @@ done - Computer for alternate streaming: - Open browser for joining BBB - - Open MPV for playing + - Open MPV for playing - HOST: - rsync the newest –main.webm from front: rsync -avze ssh front:/var/www/media.emacsconf.org/2021/protected/\*–main.webm . - Check OBS scenes for sharing windows/tabs as a virtual camera: @@ -404,10 +463,13 @@ Exceptions: ## End of stream +- CHECK removes live Q&A links - CHECK stops ffmpeg process for Youtube - CHECK stops ffmpeg process for Toobnix - CHECK stops ffmpeg process for main-480p - STREAM stops streaming +- B updates the status pages +- bandali figures out the downstream @@ -641,3 +703,26 @@ redirect the mpv output to the mpv sink. pacmd list-sink-inputs # notice the ID for the process you want to redirect pacmd move-sink-input 1 mpv + + + +## Compress video + +Usage: `compress-video.sh original-file output-file`: + + Q=32 + ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -aq-mode 2 -an -tile-columns 0 -tile-rows 0 -frame-parallel 0 -cpu-used 8 -auto-alt-ref 1 -lag-in-frames 25 -g 240 -pass 1 -f webm -threads 8 /dev/null && + ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -c:a copy -tile-columns 2 -tile-rows 2 -frame-parallel 0 -cpu-used -5 -auto-alt-ref 1 -lag-in-frames 25 -pass 2 -g 240 -threads 8 "$2" + +We tried using q56 before, but it was a little too aggressive. Q=32 is the default and is probably a reasonable space vs. quality compromise. + + + + +## Check for video encoding issues + +Sometimes the compression may get cut off. You can use +`compile-media-verify-video-frames` from + to check that videos have +enough frames for their expected duration + diff --git a/playbook.org b/playbook.org index db03fac4..d47dc9e1 100644 --- a/playbook.org +++ b/playbook.org @@ -18,18 +18,19 @@ | HOST | hosting, streaming, intros, reading, moving questions/answers around | zaeph | | ${protected} | [[/ssh:front:/var/www/media.emacsconf.org/2021/protected/]] | -| ${stream-status} | [[/ssh:front:/var/www/live.emacsconf.org/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 | | ${playbook} | playbook.org shared over CRDT | | ${dump} | [[/ssh:live:/data/]] | | ${media} | [[/ssh:front:/var/www/media.emacsconf.org/2021/]] | -| ${live-main} | [[/ssh:front:/var/www/live.emacsconf.org/main.html]] | -| ${live-480p} | [[/ssh:front:/var/www/live.emacsconf.org/main-480p.html]] | -| ${live-index} | [[/ssh:front:/var/www/live.emacsconf.org/index.html]] | -| ${live-alt} | [[/ssh:front:/var/www/live.emacsconf.org/alt.html]] | -| ${profile} | [[/ssh:live:~/.profile]] | - +| ${live-main} | [[/ssh:front:/var/www/live.emacsconf.org/main.html]] | +| ${live-480p} | [[/ssh:front:/var/www/live.emacsconf.org/main-480p.html]] | +| ${live-index} | [[/ssh:front:/var/www/live.emacsconf.org/index.html]] | +| ${live-alt} | [[/ssh:front:/var/www/live.emacsconf.org/alt.html]] | +| ${profile} | [[/ssh:live:~/.profile]] | +| ${emacsconf-el} | https://git.emacsconf.org/emacsconf-el/ | +| | | * After the conference ** Update captions @@ -54,6 +55,9 @@ - Update Toobnix and Youtube captions with =conf-video-share=. - Update Toobnix and Youtube descriptions with chapters. - Update ${conf-year}/${captions}/${slug}.md in the wiki. To make this from scratch, use =M-x conf-prepare-transcript-directives= from the talk heading in the conference Org file. +** Update + + * Thursday or Friday before the conference :PROPERTIES: @@ -540,8 +544,22 @@ redirect the mpv output to the mpv sink. pacmd list-sink-inputs # notice the ID for the process you want to redirect pacmd move-sink-input 1 mpv #+end_src -** Check for video encoding issues +** Compress video + +Usage: =compress-video.sh original-file output-file=: -Sometimes the compression may get cut off. +#+begin_src sh :eval no :tangle compress-video.sh +Q=32 +ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -aq-mode 2 -an -tile-columns 0 -tile-rows 0 -frame-parallel 0 -cpu-used 8 -auto-alt-ref 1 -lag-in-frames 25 -g 240 -pass 1 -f webm -threads 8 /dev/null && +ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -c:a copy -tile-columns 2 -tile-rows 2 -frame-parallel 0 -cpu-used -5 -auto-alt-ref 1 -lag-in-frames 25 -pass 2 -g 240 -threads 8 "$2" +#+end_src + +We tried using q56 before, but it was a little too aggressive. Q=32 is the default and is probably a reasonable space vs. quality compromise. + +** Check for video encoding issues +Sometimes the compression may get cut off. You can use +=compile-media-verify-video-frames= from +https://github.com/sachac/compile-media to check that videos have +enough frames for their expected duration -- cgit v1.2.3