# Connecting OBS with Zoom without AV syncing issues



## Function (Jun 6, 2020)

Hi everyone! Sorry for the 1,000th post about audio and video syncing issues but I have been trying to address them for three days without any luck. I primarily use OBS to capture video from my digital camera to use in video conference calls on Zoom. I do not record or stream.
There is a ~500ms lag on the video coming through the capture card and I would love to eliminate it by delaying the audio being sent to Zoom. No matter how much I've tried to fiddle with different settings, I haven't been able to get everything to work in harmony. I think the difficulty has been with how to properly route the microphone audio through OBS, add the delay, and then send it out to Zoom. Virtual audio cables are tough to work with!
If anyone could offer up any suggestions for what's worked for them, I would be super super thankful!

I mirrored my setup based on the guide here: Streamgeeks Tutorial and associated YouTube video.

This is my getup:

Modestly powered computer with i3 processor and W10 v10.0.19041 (Release 2004)
OBS 25.0.08 64-bit
Zoom 5.0.2 (24046.0510), an older version so that it works with VirtualCam
Sony a6000
AverMedia LGP Lite (GL310)
Fifine USB microphone
VB-Audio Cable A and B
These are my settings:




 -- Virtualcam enabled and no buffered frames


 -- Capture card Source Properties. I disabled buffering under the source properties as some have claimed it helped them get rid of AV sync problems, but not in my case.
-- OBS Settings
 -- Advanced Audio Properties


 -- Audio mixer shows incoming sound from the microphone but none relaying through Audio Cable A or B (Mic 1 and Mic 2).
 -- Zoom Settings

I have also tried fiddling with the input/outputs in Windows without much luck:




Any suggestions or advice would be greatly appreciated! Thanks everyone.


----------



## Function (Jun 8, 2020)

Log file


----------



## nottooloud (Jun 9, 2020)

I didn't quite follow what you were trying to do with your routing, but OBS's audio delay is right there in Advanced Audio Properties.


----------



## Function (Jun 9, 2020)

Simple. I am trying to output my webcam to Zoom and have the audio and video synced up.
My video comes from a webcam and audio comes from a USB mic.

Happy to start over by replicating someone else's setup that works. I feel like I've overcomplicated things for a fairly simple issue....


----------



## BensTechLab (Jun 10, 2020)

Function said:


> Simple. I am trying to output my webcam to Zoom and have the audio and video synced up.
> My video comes from a webcam and audio comes from a USB mic.
> 
> Happy to start over by replicating someone else's setup that works. I feel like I've overcomplicated things for a fairly simple issue....



@Function On the screenshot you provided labelled "Advanced Audio Properties" you can see a column labelled "Sync Offset" for which all rows were set to 0ms in your provided screenshot. You want to increase that sync offset for the microphone you are using to something likely in the 100-300ms range. That will delay that microphone's capture some ms to ideally lineup with the video processing delay you are experiencing.


----------



## Function (Jun 11, 2020)

Ahh sorry about that. I must've posted the wrong image. The delay is set to 500Ms and does not have any effect. I tried longer delays and it leads to the same result.


----------



## Function (Jun 22, 2020)

Hi does anyone have a suggestion on how to fix this, happy to start over with a guide or link to another post that covers the topic well.


----------



## BensTechLab (Jun 25, 2020)

@Function I think you have all the information and just need to experiment a bit more. 

I've been having the same problem and bought a video clapper board off amazon (but you can probably just clap your hands or grab two children's blocks and bang them together - the sharper the clap the more pointed it will be on the audio waveform). I then recorded a clip in OBS, with sync offset set to 0, to hard drive with me talking for a few seconds, 2 or 3 claps in a rows and finish. Then I remuxed this recording to MP4 and loaded it into my video editor (Davinci Resolve Free version). Then I stepped through the timeline and compared number of frames difference between the visual clap on the video and the audio clap in the audio waveform. On my computer it was around 167ms (2 core Microsoft Surface Pro 5 with a USB HDMI capture device). Faster computers with better graphics card/pcie lanes and more direct USB connectivity will be lower delay below 100ms. But apparently no HDMI capture devices are any faster than about 60-70ms minimum just for the capture device itself (not counting any delay in the computer you are using).

After I measured my delay, I repeated the above, record OBS to disk with sync offset set as calculated. Then review the recording. Does the lip sync look good now? You must confirm the recorded version looks good before moving on to streaming, as streaming can add more points of latency. The recorded version sync offset should be a very reproduceable number from one session to the next.

After this success, I started testing more in-app use mostly in Microsoft Teams. However, I did find the sync offset would drift based on computer load (remember this is a 2 core microsoft surface - not a multitasking beast). So just having Microsoft Teams open with a bunch of other people in the meeting would make my latency worse and I bumped up the sync offset another 30 ms. I haven't yet figured out if it makes a difference how many people are in my Microsoft Teams meeting, but I think it does. Because I went back to a 1 on 1 meeting and he said my audio was way delayed after my video. (where it may have been spot on in a 6 person teams meeting).

Ultimately, I'm going to build an OBS Streaming machine with more cores/better graphics to get rid of the variability in the sync offset. But at least with the above recording test, you should be able to prove to yourself that your configuration works! You can always try delays of various amounts to see if its working (even set the sync offset to like 2 seconds just to prove that it is working in your audio path).


----------



## Function (Jun 25, 2020)

I cannot get the sync offset to work at all. No matter what value I set it to, the delay continues. This appears to be a configuration issue that I still have not been able to tackle. Can you share with me your setup and/or how you have all of the virtual cables connected. Thanks.


----------



## BensTechLab (Jun 29, 2020)

@Function Hope this helps, consider giving my post a like for doing this up.





So in the picture you can see:
 - Mic input goes to OBS
 - OBS Audio output ("monitor out") goes to Zoom input ("microphone")

Starting at the OBS input side, moving from left to right on my diagram above:

Open OBS, Go to menu File -> Settings, choose "Audio" on settings dialog.
Under "Devices" section, disable all devices except the one you want to test (in your case "Fifine (USB PnP Audio Device)"). This is mostly just to eliminate confusion, you will now only see 1 audio device in your OBS mixer area. In my case I have a Steinberg UR12 USB Audio interface listed under "Mic/Auxilliary Audio" which lets me attach an XLR mic to the computer via USB.
Still on the OBS Audio Settings, scroll down to "Advanced" and set the "Monitoring Device" to your chosen virtual audio cable. In my case this is called "VoiceMeeter Aux Input (VB-Audio Cable)". I also have "Disable Windows Audio Ducking" checked.
Click "Apply" -> "OK" to close OBS Settings.
Back on your main OBS View, you should now just see your preferred Audio device in the "Audio Mixer" area as we disabled any distractions earlier. Click the "Gear" icon to configure this audio device, and from the menu select "Advanced Audio Properties".
Look for your audio device in the advanced audio properties dialog and adjust the "Sync Offset" to perhaps 150ms (see above notes about measuring this and testing with an OBS recording before trying streaming). In my case I also checked the "Mono" option as my audio input is not stereo. For this audio device I also set "Audio Monitoring" option to "Monitor and Output" so that it both goes to the virtual audio cable and to recordings so I can test the settings.
Click close on the Advanced Audio Settings dialog to return to the main OBS screen. You may test the configuration to this point, by recording a sample video in OBS using the settings we just configured - see my above post about measure the delay with a video editing software. Then when your local recordings have perfect lip sync, move on to configuring Zoom or other meeting software.
Now in Zoom, configure the "Microphone" to be the output of the virtual audio cable that you configure for OBS to send monitoring audio to. In my case the microphone says "VoiceMeeter VAIO3 Ouput (VB-Audio Virtual Cable)". At this point the Zoom output "Speakers" should just be any normal computer output (speakers or headphones).
You should now have one direction of audio all working with sync offset. From Mic -> OBS -> Zoom. You need to get to this point before you try adding any more complexity to your setup (such as a return audio path).

P.S. In my case I also learned that having a lot of browser tabs open with some poorly coded websites, can hog your *GPU* resources, not just CPU. I downloaded "HWiNFO64" hardware monitoring app and monitored both my CPU and GPU usage while testing various setups. The reason my video delay was "variable" number of milliseconds is because my GPU was maxing out at 100% usage. Closing all browsers and restarting the computer, the GPU now stays at 0-20% usage with OBS even on a low-ish power Microsoft Surface. So watch out if you are running too many background processes it may be very frustrating as the "Sync Offset" value will be changing continuously if your hardware is maxed out.


----------



## LXsource (Jul 1, 2020)

I am (at last setup) I have the audio going though OBS and I can confrim this as if I adjust the input level of the mic in obs the volume adjusts on the differnt computer via zoom. However I have the same issue that the delay is just not working I can see how and where you put the sync off set in bit even when set 9000ms the picture is still 2.5 seconds behind. 

Any ideas how I can delay the sound??


----------



## ByronWillis (Jul 8, 2020)

Hey guys,
Went through this myself and was able to find a solution.  The sync offset that you apply in OBS only applies to either the recording from OBS or the output stream from OBS.  It does not apply to the monitor.  When you use a virtual cable, and you set it up as a monitor in OBS, you will hear the inputs without any sync delay.  As far as I know there is no way to apply your delays to the audio monitor output.  So what I did, and what I recommend you try, is to separate your sounds in Voicemeeter into two mixes.  One mix is everything but your mic that you want sent to Zoom, and the other mix is your mic.  Apply delays in Voicemeeter, menu > system settings / option... > Monitoring Synchro Delay.  You can then input a number of milliseconds on both your mic and your other sounds and that will apply before sending to OBS.  Then you mix them in OBS to one audio monitor output and take that to Zoom using a virtual cable.


----------



## dnatale (Jul 9, 2020)

BensTechLab said:


> @Function Hope this helps, consider giving my post a like for doing this up.
> 
> View attachment 58211
> 
> ...




This saved my life.  I couldn't figure out why my audio was passing to my virtual cable (I use Loopback by Rogue Amoeba) even though I had the virtual cable selected as my monitor.  It's that last step where you have to check the box in "Advanced Audio Properties" - for that specific device.  THANKS!!!!!


----------



## BensTechLab (Jul 15, 2020)

ByronWillis said:


> Went through this myself and was able to find a solution. The sync offset that you apply in OBS only applies to either the recording from OBS or the output stream from OBS. It does not apply to the monitor. When you use a virtual cable, and you set it up as a monitor in OBS, you will hear the inputs without any sync delay. As far as I know there is no way to apply your delays to the audio monitor output. So what I did, and what I recommend you try, is to separate your sounds in Voicemeeter into two mixes. One mix is everything but your mic that you want sent to Zoom, and the other mix is your mic. Apply delays in Voicemeeter, menu > system settings / option... > Monitoring Synchro Delay. You can then input a number of milliseconds on both your mic and your other sounds and that will apply before sending to OBS. Then you mix them in OBS to one audio monitor output and take that to Zoom using a virtual cable.



Thanks @ByronWillis!! I ended up same as you figuring out to add the audio sync in VoiceMeeter. I had installed the full Voice Meeter Banana first, then downgraded to just the audio cable and then back and must have mixed these up.

But I can confirm the sync offset in OBS applies to recordings and streaming, but not monitoring. Voice Meeter can do it there though!


----------



## Function (Jul 17, 2020)

Thanks for the write-up @BensTechLab . Tried this and the audio delay is still not being added.
I do not use VoiceMeeter, and don't want to given the added complexity that it adds (happy to guess and check what a 'close enough' delay is needed).

As an FYI I do not do any recording or streaming, only output to Zoom.


----------



## KelsangChodor (Jul 21, 2020)

Function said:


> Thanks for the write-up @BensTechLab . Tried this and the audio delay is still not being added.
> I do not use VoiceMeeter, and don't want to given the added complexity that it adds (happy to guess and check what a 'close enough' delay is needed).
> 
> As an FYI I do not do any recording or streaming, only output to Zoom.


I'm having exactly the same problem. It's a shame there's not a way to set a delay on the virtual cable.


----------



## frob (Jul 21, 2020)

I am looking for the virtual cam equivalent for audio out of OBS. The only things that I have found require monitoring through OBS which means hearing myself in my headphones with the delay which isn't desirable for me.

One thing that you might try is a VST plugin that adds the delay to the audio source.


----------



## ByronWillis (Jul 27, 2020)

frob said:


> I am looking for the virtual cam equivalent for audio out of OBS. The only things that I have found require monitoring through OBS which means hearing myself in my headphones with the delay which isn't desirable for me.
> 
> One thing that you might try is a VST plugin that adds the delay to the audio source.



I second this recommendation from frob.  If you don't want to add Voicemeeter to your software lineup, and you prefer to do all your audio mixing in OBS, then I think you'll want to look into VST plugins for OBS that can apply sync delay on audio inputs.

I also think that a virtual output for audio (similar to virtual cam for video) would be super handy.


----------



## Duevelocita (Sep 30, 2020)

frob said:


> I am looking for the virtual cam equivalent for audio out of OBS. The only things that I have found require monitoring through OBS which means hearing myself in my headphones with the delay which isn't desirable for me.
> 
> One thing that you might try is a VST plugin that adds the delay to the audio source.


@frob, have you found a VST plugin that works well for adjusting the sync delay?


----------



## rolinger (Oct 29, 2020)

Duevelocita said:


> @frob, have you found a VST plugin that works well for adjusting the sync delay?


I've had the same problem and currently testing readelay-standalone from Reaper.fm which works for me, but adds its own 1000ms approx latency. That's OK for me as my setup has longer latency (!). Other options I tried were 

a delay in the mixing desk I was using (Soundcraft Ui series, but it was a bit kludgy to set up and maximum delay was 1000ms) and
a Behringer Shark FBQ (external low-cost does-everything get-you-out-of-trouble audio toolkit), it would work perfectly but for this system lower cost and less hardware is appealing
Hope the VST plugin continues to work for me, and the above alternatives help someone else.

And most of all, please OBS can you add synchronised or independently delayed audio to the virtual camera output? That would be amazingly helpful.


----------



## Patrick Virtual Concerts (Nov 4, 2020)

I'm running a live vocal from obs into Zoom with a video with audio at the same time - not streamng anywhere else just using OBS as a dressing for Zoom. Sent the OBS monitor feed to voicemeeter

Put the video audio through one channel in voicemeeter and the vocal through another then routed both out on BUS A on a virtual cable to Zoom
I sing bang on time but when the zoom client hears it I am still ever so slightly out of time with the audio from the video. Less delay than when I virtual cable to Zoom from OBS - so an improvement but it needs to be exactly right\ and synced. No idea what to do. Any help greatly appreciated. I've tried running just and audio file with the audio from the video but the same thing happens. 


Thanks

Patrick


----------



## therentabrain (Mar 1, 2021)

I'm having similar frustrations to folks here.  I run my audio directly to Zoom but I'm using OBS to make my image better.  What's particularly frustrating is I swear in older versions, or older settings I used to have last year, there was no, or almost no, delay.   I have a top of the line gaming laptop, and largely that purchase was to try to get this delay to go away, but it had no effect.  What on Earth is making OBS so delayed if I have the fastest Windows 10 machine most folks could ever get?  

My friends on their MacBook Pro are able to use OBS for a nice visual over Zoom, but they don't have any noticeable delay.  So frustrating!


----------



## ad1562 (Mar 14, 2021)

Hey, Folks, I suffered with this problem also, and found a solution that works fairly well for me.

OBS -> NDI -> Zoom

Requirements...
*OBS latest version
*OBS-NDI plugin
*NDI Tools (specifically _NDI Webcam Input_)

There are several tutorials on this available on youtube. Here's the one I used as reference:








						How to Send OBS into Zoom - OBS Studio Output in a Zoom Call
					

UPDATE: There is a MUCH easier way to do this now: https://youtu.be/0ujJZFvyYAcThis video explains how to send OBS into a Zoom call, using NDI Tools. Lots of...




					www.youtube.com
				




This solution took care of the major sync issues that I was facing as it enabled me to sync everything in OBS and then send it out to NDI as one output that includes audio and video. In Zoom I select _Newtek NDI Audio _and _Newtek NDI Video _as my microphone and camera, respectively.

Hope this helps... Happy conferencing!


----------



## jleagle94 (Apr 14, 2021)

Hey Function, little late to the party and new to OBS studio but I think I have a solution for you. Instead of adding a source for window capture using Zoom, try instead using the regular display capture. You can then open the properties to the display capture and choose "crop". You can crop to the Zoom meeting window. This removes the time lag but I, too, cannot seem to fix the time lag when I simply using the window capture source directly. The method above should work though. Hope this helps.


----------



## MatLonginow (Jul 26, 2022)

Alright,

Not sure if people are hitting this issue in 2022, but, man, I sure did. Here is my process of fixing it. It is a three step approach.

These are my videos describing my process, bear with me, they are 5min and 7min respectively.
-->  https://www.loom.com/share/5a295735b49b456cbd2105de509629c8
-->  https://www.loom.com/share/bf86e846c2f34440a2c70d6fcfc2aede

While that explains what I did in detail, what I did prior to making that video which explains what worked for me, here is what I followed to actually get to my end solution

*OBS + Virtual Cable*
Check out this dude's awesome tutorial here --> https://youtu.be/Clcq7fk6L1k

*OBS + NDI*
Check out this dude's awesome tutorial here --> https://www.youtube.com/watch?v=wDiFMdfy6FA

*Sync Offset*
I had to set my mic on OBS to 120ms to get my audio and video to match up

---

P.S. Big shout out to @ad1562 for his fix which helped me bring all this together for me


----------

