Audio slowly drifts out of synch with video Mac OS

Hi Everyone,

It looks like people have brought up this issue before, but I think my setup is different enough to warrant a new post!

Here is an example of a stream with the exact problem I'm here to ask about - https://www.youtube.com/watch?v=cYuo4_0ZZdk
If you watch a couple seconds at the beginning and a few seconds toward the end, you can see how out of synch it gets.

Teaching like this is my job, so I've got some crazy gear, but the relevant gear and signal chain goes like this:

Computer:
Mac Studio
OS Monterey 12.6
plenty of horsepower

Visuals are captured like this
Camera---->BlackMagic Decklink---->Mac Studio

Audio is all captured from Tascam Model 12 mixing board/audio interface

In OBS, I have only one audio source - The Tascam Model 12 - even my headphone jack output is connected to the tascam

For video sources, I'm only using decklink inputs via PCIE enclosure AND OBS window share - everything else is PNG graphics


For streaming, I'm not using the computer for encoding. I have a BlackMagic Web Presenter that my computer sees as an external monitor

I've been using the "fullscreen projector" function in OBS to send video and audio to this "external monitor"

From there, all the encoding is done on the Web Presenter.

Everything is set to 48hz as far as I can tell - nothing is mismatched.

I have one idea I haven't tried, and that is to create an aggregate audio device that attaches to the audio from one of my cameras and then clicking the "drift correction" box in my "Audio Midi Setup" utility.

Does anyone else have a better idea? I am stumped
 

AaronD

Active Member
Does the audio path that you're measuring include OBS's Monitor? Based on its behavior, it had to have been written by someone that understood software and networking, but not live media.

If anything goes slightly wrong, it increases the buffer. Period. No limit.

So, even if you have everything set to the same nominal rate, slight differences in the clocks that different things use, will still occasionally cause a hiccup. And so the Monitor increases the buffer. Again. And again. ...

There are three general solutions to that:
  1. Don't use OBS's Monitor. Only use the stream and recording outputs from OBS.
  2. Send the Monitor to an intermediate device, that is not the final destination, but uses the same clock as the rest of OBS. This is probably a virtual device. Then send it from there to where you actually want it to go. This gives something *else* a chance to get it right, and it usually does.
  3. Periodically interrupt the flow of audio to the Monitor, to reset the buffer. There are many ways you could do that:
    • Blink the mute button for each source.
    • Change the Monitor setting for each source, and change it back.
    • Change the Monitor device, and change it back.
    • Etc.
 
Send the Monitor to an intermediate device, that is not the final destination, but uses the same clock as the rest of OBS. This is probably a virtual device. Then send it from there to where you actually want it to go. This gives something *else* a chance to get it right, and it usually does.
I think I get what you're saying, but would you mind giving an example of the kind of software that does that?
Also, thank you SO much for replying
 

AaronD

Active Member
I've never really been a Mac guy; I switched recently from Windows to Linux (again). So I don't know what the equivalent name would be on Mac or how to use it. But maybe a Windows app would get you started on a search for an equivalent?

Two different sizes of the same thing. I filled the big one in a Windows OBS rig, plus some more processing in OBS, before I ported it all to Linux. The Linux version uses a full-fledged DAW to do *all* of the audio work, while OBS does none.

Anyway, the way that you would use that on Windows is to send OBS's Monitor to one of VoiceMeeter's virtual speakers, which feeds one of the virtual mixer's inputs, and then send that virtual input to a physical output that you set up in VM.

If you can find an equivalent to that for Mac, or if you go with a DAW, then you should be good to go. Or, if all you really need is a do-nothing passthrough, as a virtual device, then maybe you can find that too. You're only using it for its physical device sync, while the thing itself is locked to OBS by nature of being virtual, and thus using the same clock.
 
I've never really been a Mac guy; I switched recently from Windows to Linux (again). So I don't know what the equivalent name would be on Mac or how to use it. But maybe a Windows app would get you started on a search for an equivalent?

Two different sizes of the same thing. I filled the big one in a Windows OBS rig, plus some more processing in OBS, before I ported it all to Linux. The Linux version uses a full-fledged DAW to do *all* of the audio work, while OBS does none.

Anyway, the way that you would use that on Windows is to send OBS's Monitor to one of VoiceMeeter's virtual speakers, which feeds one of the virtual mixer's inputs, and then send that virtual input to a physical output that you set up in VM.

If you can find an equivalent to that for Mac, or if you go with a DAW, then you should be good to go. Or, if all you really need is a do-nothing passthrough, as a virtual device, then maybe you can find that too. You're only using it for its physical device sync, while the thing itself is locked to OBS by nature of being virtual, and thus using the same clock.
I found a software called CASTER by Ginger Audio - I'll test it out and report back. Thanks for your help.
 
Top