@MadMartian have you tried the undocumented setting
_desktopSharingSourceDevice: "Screen Sharing"
config.js (or as a URL parameter, like
https://meet.example.com/RoomName#config._desktopSharingSourceDevice="Screen Sharing" ? This works very well for me. Of course, you have to replace
Screen Sharing with whatever your virtual camera device is called, i.e. if in your
/etc/modprobe.d/v4l2loopback.conf, you have something like
options v4l2loopback devices=4 card_label="Virtual Camera,Screen Sharing,Background Matting,Avatarify" video_nr=2,3,8,9 exclusive_caps=1,1,1,1 max_buffers=10 max_openers=20
then the above
config.js setting would use your
/dev/video3 virtual camera for screen sharing. Hitting the “Desktop Sharing” button (or pressing the “D” shortcut) instantaneously switches between your primary camera and your virtual Screen Sharing one. Compared to the other software you mention, which requires several mouse moves and clicks and sometimes reveals parts of the screen it shouldn’t, this is a painless, smooth user experience.
The only thing I miss a better way to simultaneously share the primary video image in a thumbnail along with the screen share. I know I can use picture-in-picture mode, but that degrades video quality of the screen share. If only the lowest resolution video stream could continue to transmit your camera video which would then show in the film strip instead of the blank rectangle … but I guess that’s a restriction of WebRTC.
So what I do in this scenario is set up two browser windows in the same meeting room, one for the screen share (joining without audio) and another one for my primary camera picture. In the screen share session, I set the camera to use the same virtual device that is preset for screen sharing. That way, with the D shortcut, you can instantaneously switch between
- having the OBS virtual camera show in desktop sharing mode with your primary camera image (from the other browser session) shown in the film strip and
- having the virtual camera transmitted in a lower quality as a normal video stream along with the primary camera image.
Of course, this requires sufficient upstream bandwidth on your part, but is still much smoother than the competition’s screen sharing in my opinion.