Route Audio to Zoom on Linux with Pipewire

jroc

New Member
Having spent the entire afternoon working on this, and not coming across a direct solution that matched what worked for me I thought I'd post here in case it helps others.

I am on a fresh install of fedora-35, KDE spin; running X11 display server. But I assume this will work on any distro running PipeWire.

I did first set up the virtual video camera for use in Zoom, as per many posts on the internet. (I.e., install the v4l2loopback package appropriate for your distro. For fedora you need to get this from the RPM Fusion repo. Then in a terminal execute sudo modprobe v4l2loopback to load the module so OBS can see it).

Next I installed qjackctl. This is a utility that enables you to graphically see and configure the 'wiring diagram' between audio inputs (sinks) and outputs (sources). There are a few other utilities you could use to do this - I use qjackctl because I am familiar with it.

Fire up OBS. Fire up Zoom and open a Zoom meeting. Run qjackctl and click on the 'graph' button. You'll now get a display of all the inputs/outputs on your system, with lines between them showing what is routed to what. You'll likely need to resize the window and drag the objects around to untangle the mess of wires. You should see Zoom and an OBS objects on the graph. To 'wire' the output of OBS into Zoom, drag a wire out of the 'OBS Monitor' object's 'monitor_FL' and 'monitor_FR' ports over to the Zoom input ports. Zoom should now be getting any audio that OBS is producing or processing.

You can, of course, continue to tune the wiring for your OBS session - maybe you'd want to remove any wire that connects your mic to Zoom and instead wire the mic into OBS so that Zoom gets it's audio only from OBS. Depending on your needs you can mess around with the wiring. One thing you will need to consider is how you'll listen to audio that isn't your own mic. If you want to hear a video you're playing into OBS you'll want to be sure that the web browser is wired to feed into the 'Built in Audio Analog Stereo.'

Note that you can also create Jack inputs in OBS by adding a 'Jack Input Client.' When you do that it will show up in the qjackctl graph and you can then wire other audio sources to feed into it - thus feeding into an OBS scene. E.g., in a case where you'd only want your web browser's audio to be present in a specific scene and always on.

Hope this helps anyone else struggling with this as I was.
 

bnordgren

New Member
I was messing with this a while back but a youtube video called my attention to the fact that OBS's "monitor" outputs represent the raw microphone feed into OBS. Processed audio and video go to the stream, the recording, or both. However, the patchbay is essentially doing the same task that picking the microphone directly from zoom is doing.
See: https://www.youtube.com/watch?v=wr9PdkX93WM

Windows users can solve this with NDI, but I bet there's a linux solution that includes ffmpeg, a virtual camera via v4l2loopback (https://stackoverflow.com/questions...mp-stream-and-convert-into-a-live-webcam-v4l2), and a virtual device ala Pipewire (https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Virtual-Devices).

I haven't yet cracked this but this is the approach I'm taking given the limitations alleged in the video above.
 
Top