From d5170e8cd387f16c97a506b18dbe75ba1828c7e9 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Tue, 23 Nov 2021 23:04:18 -0500 Subject: Add ALSA notes --- playbook.md | 43 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) (limited to 'playbook.md') diff --git a/playbook.md b/playbook.md index 6b16988a..d4f8439b 100644 --- a/playbook.md +++ b/playbook.md @@ -33,6 +33,7 @@ - [live0 can't handle the load or is close to network transfer limit](#network) - [Before the conference](#before) - [Help speakers with tech checks](#tech-checks) + - [Experiment with setup to allow MPV / BBB sound isolation](#org76b68a3) @@ -213,19 +214,20 @@ - 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 +- HOST: 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 $CONF480PASS as the first parameter. The Icecast configuration is on `live0` at `/etc/icecast2/icecast.xml`. PASS=$1 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 +- CHECK: Start Youtube and Toobnix streams. Call this with $YOUTUBE1PASS, $YOUTUBE2PASS, or $TOOBNIX as the parameter 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 +- CHECK: Verify YouTube and Toobnix streams and the CPU load on live0. +- HOST: Verify with #emacsconf that the stream is active. +- CHECK: Start alternate stream on second laptop. Point to main stream for now. @@ -329,7 +331,8 @@ Exception: [CHECK is unavailable](#check-gone) - 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 + - CHECK does a rough-cut of the recording from ${dump} to get the last X minutes or by time range. There's about a 1-2 minute delay. + Ex: `(kill-new (conf-dump-get "alt" "10:24" "10:30" "qa_"))` - 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 @@ -345,6 +348,7 @@ Exceptions: - [Speaker has not checked in](#missing) - [? live] + - CHECK-alternate joins the BBB room. - HOST joins the BBB room - HOST starts recording in BBB or confirms that it's already recording - STREAM joins meeting and gives go-ahead @@ -356,7 +360,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. + - CHECK notes the time that the live Q&A finished and switches back to the main stream on CHECK-alternate. - [? IRC/pad] - HOST and STREAM switch to organizer BBB meeting (room S) - HOST describes Q&A method and shows it on the screen @@ -592,3 +596,30 @@ Exceptions: - Encourage webcam for Q&A, although make it clear that it's totally optional - Possible picture-in-picture approach to maximize screen real estate + + + +## Experiment with setup to allow MPV / BBB sound isolation + +Set MIC and OUTPUT appropriately. + + MIC=alsa_input.usb-046d_0819_A68D6BE0-02.mono-fallback + OUTPUT=alsa_output.pci-0000_00_1b.0.analog-stereo + if [ "$1" == "-u" ]; then + pactl unload-module module-loopback + pactl unload-module module-null-sink + else + pacmd load-module module-null-sink sink_name=recording sink_properties=device.description=recording channels=2 + pacmd load-module module-null-sink sink_name=mpv sink_properties=device.description=mpv + pacmd load-module module-loopback source=$MIC sink=recording + pacmd load-module module-loopback source=mpv.monitor sink=recording + pacmd load-module module-loopback source=recording.monitor sink=$OUTPUT + fi + +You can probably then use `pavucontrol` (choose All Streams instead of +Applications on the Playback tab) or something like the following to +redirect the mpv output to the mpv sink. + + pacmd list-sink-inputs # notice the + pacmd move-sink-input 1 mpv + -- cgit v1.2.3