OK, if you can believe it, it’s the fifth Podcast with Paul we’ve done and we tried out the first guest podcast so we had me life and then two remote people. Our guess and a new person. This is actually quite a bit harder than it looks, but here’s a quick guide:
VDO.Ninja Not
Well, I thought we would try to use VDO.ninja, formerly obs.ninja to do this. It seems like a good thing, you get essentially whatever bandwidth you want (I set it for 2Mbps) and you can have multiple guests and it is all peer-to-peer. Unfortunately in trying to stitch something between Malta, Barcelona, and Seattle, this didn’t work great. The easiest way to do this is to start vdo.ninja and create a new room. Since this is ephemeral, you don’t really need a password, etc, but you can add both a password and then obfuscate the URL (just like Zoom).
Also, it is a little confusing, but you need to use Chrome (not Safari), anyway, it’s pretty simple with one trick, you go to create room and make sure to select, “The director will be performing as well…” so that you can send out your OBS Virtual camera feed. It does say you should disable video sharing between guests to improve performance (otherwise everyone is sending everyone else their feed).
Now here is the tricky part, you will see a screen with an Invite a guest URL at the top, click on customize and I allow the guest to see HD video (this is set in the URL). Then you copy the link and send it to folks. And the layout is great.
I also set it up to do a screen share and thanks to the new Audio Capture feature that’s part of MacOS Capture, if you do a Display Capture, you get the “System Audio” that is everything that is output (not just for that display). If you do Application Capture or Window Capture, then all the audio from that Application will appear so this is just great. Same as Browser capture, it captures all output from the Browser application.
But the part that is not obvious is how to enable your feed, you click at the bottom of the screen, “enable director’s microphone or video” and the browser will ask if this is ok. Then the Gear icon appears and you can choose your Video Source which should be OBS Virtual Camera and then the audio source. Since you have enabled guests can hear each other, I just leave it at my microphone. This means that you can’t hear things like videos playing back (you need to add a virtual cable thingy which I’ve not quite figured out with NDI to make this work as the OBS virtual camera doesn’t include audio output).
Performance and Color space on VDO.Ninja
What we found is that with three people on, my M1 Max was just nailed to the wall, literally running at 99% GPU and 99% CPU using 75% of 64GB of memory. More importantly, one of the remote folks was getting about 1 frame every 10 seconds and I could see the quality of the link was poor. The conclusion is that actually pushing that much data, 2Mbps per stream is a lot, so I can’t really recommend it but will experiment more.
It was a shame, because the advice of hooking up the browser input capture worked really well. You just copy the link for each feed. and push it into OBS and it works great.
The other problem (which Zoom also has) is the HDR output of the OBS Virtual Camera is in the wrong color space, so it looks very dull for SDR input applications like VDO.Ninja (or Zoom for that matter).
Zoom with two remote users performance OK, but still lags
OK, so that didn’t work, so we went back to Zoom. This uses a central server and the bit rates are much lower, we were doing 720p at 15 fps on Zoom and the reason to try vdo.ninja was to get a full 1080p with 60 fps. Also, Zoom has a lag problem where the Virtual camera gets behind on the local feed and it is may 1-2 seconds behind.
And also you have to completely re-layout the Windows. The best thing to do is to set Zoom for Dual monitor mode. Then you can pin one person in a window and then hide the self-view to get the other person. So you can basically use two Windows Captures.
Also, you have to remember to switch your Zoom settings in this mode. For instance, I have to remember to turn off green screen detection, background additions, and stuff like that when using OBS. It would be much better to have modes for Zoom, but that isn’t possible. Sigh.
Noise Gate and Noise Suppression problems on remote
Then I hit another bug, the noise gate and suppression seem to work fine with a local and a remote, but with two remotes, it will fail. Since Zoom is already doing these two, I just removed it, but it is pretty weird to see everything cut out. It might be some strange interaction with the Zoom corrections.
My voice sounds weird and low levels from Zoom
I think I have too many filters attached, so I need to do the fixes there. Also, the input from Zoom is very low, I had to apply a 15db Gain to get it to something like my levels.
Biggest open issue: Flat output
So the net I think is that with a single remote, having a vdo.ninja setup has higher resolution, but Zoom is more reliable, so I think I’ll stick with Zoom for a while (and avoid Noise Gate and Suppression filters but add the gain).
But, I need to fix the flat output of the virtual camera. I’m not even sure how to query that. But it looks like there is not an option to do tone mapping just for the virtual camera that is Rec.2020 PQ color space to Rec.709 Color space on the Virtual Camera, so we may need to just to live with that now.
So I could either switch to SDR, but I think I’d rather just live with that during broadcast to have good archival footage. What’s needed is something like NDI which does this.