|January 2nd, 2021
|audio, bucket_brigade, tech
Before showing your video to anyone else, it will ask you whether you are OK with it:
Since I have an external camera with a better angle, I'll press "Switch camera":
Now I'm happy, so I'll choose "Use this camera", but it will also work fine if you choose "Continue without camera".
Once you're in, you'll see all the people in their buckets:
During a song you hear people via Bucket Brigade, and the rest of the time you'll hear people through the video call. Since we aren't doing anything custom for the videos, you'll see people out of sync with their singing. At some point it would be nice to try routing videos through a server we control, so we can add appropriate amounts of latency. Adding latency on the server would not be precise enough for audio, which we need aligned at the millisecond level, but I think it would be ok for video? Of course there's nothing you can do for video for buckets after you...
The hardest part of the integration was getting it to behave correctly around people turning their video on and off. Twilio's recommended approach doesn't turn the camera light off when you turn your video off, which seems broken to me, so I took their not recommended approach of unpublishing video tracks. This changed which events I need to listen to for video being re-enabled, but once I got it all working it seems reliable.
Previously Bucket Brigade was cheap to run: it essentially only needs CPU and bandwidth, and the bottom-tier VPS (~$5/month) that powers jefftk.com can handle about 40 simultaneous users. Twilio calls cost 25¢/person/hour, which is reasonable but not negligible. I'm hoping to keep it free to play with, and if the cost starts adding up we'll probably ask if frequent users could chip in?