[Win11/OBS 28] Seemingly Random Audio Issue While Live Streaming

Questje

New Member
Dear OBS Community!

I've got an audio issue with my OBS that has been bugging me for months now and I hope somebody can help me out.
I stream on Twitch using OBS.28.1.2 on Windows 11 on a Dell Laptop (2.60Ghz/16GB RAM), streaming at 3000 Kbps/30 FPS.

The issue: Once in a while, usually a couple times per 8-hour long stream the music I'm playing gets super distorted. Almost so bad you can't listen to it normally. Like crackling up. Sometimes it happens twice per hour, sometimes not for hours in a row.

My voice and other sounds stay normal. And the issue is that it's only on the live stream. I hear the music normally on my own headphones.
So chat has to tell me something is wrong, then I often restart the song and the problem goes away. I use Nightbot to play YouTube videos. I've tried using YouTube directly and the same problem occurs, so it's not related to Nightbot.

What I've tried to solve the issue:
- Update OBS from 27 to 28
- Update Windows from 10 to 11
- Sync all my Audio Hz. Everything is now 48k Hz, except my mic which I can only set to 32k Hz max.
- Disable filters on my Microphone

The issue occured again at timestamp 23:32 last night. Log file of this stream here: https://obsproject.com/logs/TmDbrRwvXhdbxhmv

There's nothing relevant to be found about audio in the Log tho, afaik.. I'm aware there's other issues (OBS Browser stuff and something related to Blerp), but I can't imagine that's super relevant. I'm aware I'm losing some frames too (0.9%) but my stream is usually perfectly watchable, except the audio issue.

I'm aware audio quality is super important for giving my viewers a pleasant experience so I really wanna tackle the issue :)


Thanks in advance,

Questje

P.S. I can't really make an audio example of the issue, since it's only happening live. I haven't been able to reproduce this with a recording.
My VODs are available but music is automatically muted so you won't hear the issue there either.
 

Questje

New Member
I'd like to add the issue is still there so any advice would still be great.

Last stream the first 7 hours (!) there was 0% problem and suddenly it started to occur a couple times again. So weird.
Again, restarting of the music player seems to fix the issue. But that's not good enough :)

Thanks! <3
 

Questje

New Member
Bump, this issue is still happening sadly.

Sometimes 5 times per stream.

Any tips still welcome :)
 

AaronD

Active Member
I wonder if you have a background noise remover, "somewhere" in the chain. Those are known to get confused with music and try to remove it, or part of it, as "background noise".

Voice usually stays, as they're designed specifically to keep that, and transient sounds usually stay too, as the noise is assumed to be at least somewhat constant. One example of that is a machine gun that starts off perfect and then becomes muffled as the noise remover decides that it's part of the "background noise".

Stopping the song probably resets the noise remover, so it sees that that "noise" isn't there anymore and doesn't need to be removed, and now that it's no longer removing it, restarting the song works.

If that's really what it is though, I'm surprised it's lasting that long before it becomes a problem. Maybe there's a volume threshold as well???
 

Questje

New Member
Thanks for your insights!

I only have a Limiter Filter on the Audio Source (but the problem existed before I had this Filter).

I'm not aware of any background noise remover being active. Could this be added in the chain somewhere without me being aware?
 

AaronD

Active Member
It might be the streaming platform. Does Twitch do that?

Video calls and remote meetings are famous for it. Zoom, Skype, Jitsi, etc. I would think that a one-to-many streaming platform would not noise-suppress the soundtrack, but maybe yours does? What settings do you have there?
 

rockbottom

Active Member
Errors & failures start almost immediately, not 6 hours later. I follow KISS when using OBS, simple set-ups easy to fix, but that's just me.
 

Questje

New Member
It might be the streaming platform. Does Twitch do that?

Video calls and remote meetings are famous for it. Zoom, Skype, Jitsi, etc. I would think that a one-to-many streaming platform would not noise-suppress the soundtrack, but maybe yours does? What settings do you have there?

I'm not aware either Twitch does something like that.
I'm afraid "what settings do you have" is a bit too broad to answer I'm sorry :)
 

Questje

New Member
Errors & failures start almost immediately, not 6 hours later. I follow KISS when using OBS, simple set-ups easy to fix, but that's just me.

I'm not sure what the use of this comment is. The issue sometimes happens quick, sometimes it actually takes 6 hours for it to occur. I'm not making this shit up :)
 

AaronD

Active Member
I'm not aware either Twitch does something like that.
I'm afraid "what settings do you have" is a bit too broad to answer I'm sorry :)
I wouldn't think so either, but that's kinda what it sounds like. Your local recording is fine, and that's also what you're sending to Twitch. If the output of Twitch is bad, then it's probably something that Twitch is doing, not you, or you're sending it a format that it (sometimes) doesn't like.

Check the settings on Twitch's side for how to process the stream that you send them, and their recommendations for what format to send them (technical details, not just frame size and rate), and compare with what you're actually sending them.

Yes, it's broad, but you're the only one that has access to that information, as it has to do with your Twitch account and your copy of OBS. Look at all of it.
 

Questje

New Member
I appreciate your insights.

Since the last time I posted I've been in contact with an OBS expert through the OBS Discord and they told me it's a known problem in the Audio Application Capture Source that will get resolved at some point but it's not high priority.

They told me I can get rid of the issue, for now, by just using a single Audio Output Capture instead of capturing separate programs. I will probably try this out, but it's not preferred because I love being able to control volume per separate program inside OBS. This way I can make some sounds lower in volume for the viewers (but still loud for me), like Poker table notifications (they annoy viewers).

Ironically, my last stream was 15 hours long and the problem didn't occur at all. And I didn't change settings. The plot thickens :)

Will update here when I have info.
 

AaronD

Active Member
...it's a known problem in the Audio Application Capture Source that will get resolved at some point but it's not high priority.
Interesting. I wouldn't have thought of that, as I've solved that problem differently: a separate loopback for every app that I want to capture, and I tell each app in its own settings to use the appropriate one.

I guess that capture source eventually gets itself into a weird state? Out of sync with its own stream? If there's no clear separation between consecutive samples, and the code is expected to always know, then I can see how that could happen. Lots of systems work like that, reliably forever, but if it ever gets out of sync, it can't (easily) know that so as to correct itself. And then it produces garbage.

The fixes usually focus on not getting out of sync in the first place, because it's so hard to actually check for that. Guarantee both that the pointer *always* advances by *exactly* one sample or a multiple of it, and that *all* of the data arrives correctly, with no gaps that close automatically and thus cause a correctly-advanced pointer to look at the wrong data. The pointer-advancement part is easy, but data-integrity can be surprisingly hard.

I can make some sounds lower in volume for the viewers (but still loud for me), like Poker table notifications (they annoy viewers).
Can't say that I'd be comfortable doing that. Sending something different to the audience than what I hear myself. As an experienced live sound guy, I'd want to monitor *exactly* what they're getting so I can know about and fix problems immediately. But I guess if it works, it works...until it doesn't, which is why you're asking.
 

Questje

New Member
Interesting. I wouldn't have thought of that, as I've solved that problem differently: a separate loopback for every app that I want to capture, and I tell each app in its own settings to use the appropriate one.

You imply you solved a similar issue like mine? I don't see how I can apply your solution to my streaming setup tho, sadly.
You seem to know what you're talking about, and I appreciate you talking the time, but I'm not sure it's helping me or others with the same audio distorting problem through OBS. :)

I guess that capture source eventually gets itself into a weird state? Out of sync with its own stream? If there's no clear separation between consecutive samples, and the code is expected to always know, then I can see how that could happen. Lots of systems work like that, reliably forever, but if it ever gets out of sync, it can't (easily) know that so as to correct itself. And then it produces garbage.

The fixes usually focus on not getting out of sync in the first place, because it's so hard to actually check for that. Guarantee both that the pointer *always* advances by *exactly* one sample or a multiple of it, and that *all* of the data arrives correctly, with no gaps that close automatically and thus cause a correctly-advanced pointer to look at the wrong data. The pointer-advancement part is easy, but data-integrity can be surprisingly hard.

This part is even harder for me to use or even understand. You are probably right, I have no way to check :)

Can't say that I'd be comfortable doing that. Sending something different to the audience than what I hear myself. As an experienced live sound guy, I'd want to monitor *exactly* what they're getting so I can know about and fix problems immediately. But I guess if it works, it works...until it doesn't, which is why you're asking.

My problem is not related to this. I have no problem maintaining good audio levels of the sources I wanna stream. OBS shows me the audio levels for all these sources so I can keep an eye.

It's true I could go without it and just capture everything I am hearing. But it would be a less enjoyable viewing experience for my viewers. Some sounds are just meant for me, not for the audience. Pretty sure professional setups have this same kinda system where you don't need to send out everything to the audience or can control volume separately :)

But this completely besides the point of why I started this topic.
 

AaronD

Active Member
You imply you solved a similar issue like mine? I don't see how I can apply your solution to my streaming setup tho, sadly.
You seem to know what you're talking about, and I appreciate you talking the time, but I'm not sure it's helping me or others with the same audio distorting problem through OBS. :)
The audio distorting problem comes from the loopback that you're presently using, not working so well. So the immediate solution or workaround is a different loopback.

The popular thing for Windows seems to be VB-Cable:
If you get all of the offerings on that page, you end up with 5 different loopbacks, each of which is a virtual speaker and a virtual mic. Whatever you send to a virtual speaker, appears in its corresponding virtual mic. Set the apps accordingly.

Another option is Voicemeeter, from the same company, and its larger versions Banana and Potato. They install their own virtual mics and speakers, independently from the loopbacks I just mentioned, and those virtual devices function as additional inputs and outputs to a small audio console in its own right, with processing and mixing/routing of its own. That small audio console is not nearly as flexible as a DAW would be (Digital Audio Workstation: a comprehensive sound studio, all in one app), but if you only need to mix a handful of mics into a single source in OBS, and connect a few apps together, then it might be enough. For one of my rigs:
  • In VM Potato, I mix several physical mics together and send that mix to Virtual Mic 1, which OBS picks up as a single source.
  • In OBS, I send the Monitor output (the only audio output it has, without being embedded in a stream) to Virtual Speaker A.
  • In VM Potato, I send Virtual Speaker A to Virtual Mic 2, which a web browser picks up for an online meeting.
  • In the browser-based meeting, I send the remote audio to Virtual Speaker B.
  • In VM Potato, I send Virtual Speaker B to Virtual Mic 3, which a different copy of OBS picks up for recording. (two copies of OBS on the same machine, using different Profiles and different Scene Collections)
  • In OBS (second copy), I send the Monitor output to Virtual Speaker C.
  • In VM Potato, I send Virtual Speaker C to the physical speakers. This is just an excuse to get Voicemeeter's processing between OBS and the speakers.
  • In VM Potato, I have a different physical output for headphones, so I can check anything I need to without affecting anything else.
    • VM requires at least one physical output, and this is it, not the regular speakers, because this is the built-in sound card and the normal speakers are on HDMI. I could just as easily connect the HDMI speakers to the required #1 slot and have the headphones in a different one, but I consider the built-in card to have the best guarantee of existence. Otherwise, there's no functional difference.
A for-real DAW would run circles around that even, but I really don't need anything more for that rig.

My problem is not related to this. I have no problem maintaining good audio levels of the sources I wanna stream. OBS shows me the audio levels for all these sources so I can keep an eye.
Just saying that if you and the audience heard the same thing, you'd notice it sounding bad immediately, despite the meter looking good, and they wouldn't have to tell you.

It's true I could go without it and just capture everything I am hearing. But it would be a less enjoyable viewing experience for my viewers. Some sounds are just meant for me, not for the audience.
I was thinking the other way: you produce what they want, and you hear that too. Nothing different.

Pretty sure professional setups have this same kinda system where you don't need to send out everything to the audience or can control volume separately :)
Absolutely they do! Only the basic hand-sized things with 3 knobs don't. But the monitoring output is meant to be temporary, not permanent. You're supposed to listen to the audience mix by default, and only momentarily switch to something specific. Once your purpose with that is accomplished (usually, "Who's making that sound?"), you switch back to *exactly* what the audience hears.

If you look at the routing diagram, or even the circuit schematic, of pretty much any analog mixing console, you'll see this behavior hard-wired into the monitoring outputs. If you push the button to focus on a specific input, the monitoring output switches to the specific-listening mix bus. (usually called Solo, or PFL for Pre-Fade Listen, or something similar) When you let all of those buttons up, the monitoring output switches to mirror the main output.
  • For a studio, the main out might go to a tape machine or something like that, and the monitoring output goes to the studio speakers.
  • For a live gig, the main out goes to the PA, and the monitoring output goes to headphones, and you put the 'phones down when you're not listening to something specific.
  • For a broadcast, the main out goes to the viewers, and the monitoring output...huh, that sounds like OBS's terminology, doesn't it? Except that OBS's audio is wacky enough that the long-established professional signal flow doesn't really apply.
 
Last edited:

aelius_l

New Member
Is your issue identical or similar to the one from this post here: https://obsproject.com/forum/threads/application-specific-audio-crackles-randomly-over-time.162894/ ?

I'm encountering this issue after upgrading my PC and doing a fresh installation of my programs and drivers. I haven't seen the new application audio capture source before so I wanted to give that a try after using win-capture-audio for so long.

Since the last time I posted I've been in contact with an OBS expert through the OBS Discord and they told me it's a known problem in the Audio Application Capture Source that will get resolved at some point but it's not high priority.
If it's a known problem, then this is a bummer... I may as well just go back to win-audio-capture at this point.
 

aelius_l

New Member
Sending this message here as well since this thread is identical to this thread and this thread

Updating this with a quick note, but I nagged the #audio-support channel on the OBS Discord and was able to set up a tracelogging program with someone there. I managed to capture the bug happening on stream again today and was recording the events to a tracelog and sent that over along with the VOD, so hopefully we'll hear something about this issue sooner rather than later.
 

DavidGX

New Member
Still having this issue over here, newest version of OBS (29.1.3) and using capture foreground window with a hotkey. Audio will sometimes go weird for a bit.
 

AaronD

Active Member
Still having this issue over here, newest version of OBS (29.1.3) and using capture foreground window with a hotkey. Audio will sometimes go weird for a bit.
Yeah, it's still not fixed. Don't know if it will or not either, since they're looking at how to solve the overall mess that OBS's audio has become. A pile of band-aids over an originally-limited-use toy can only go so far, and that's pretty much where OBS's audio is at this point.

I wouldn't be surprised to see an update a couple of years from now that completely changes everything about OBS's audio system, and I do mean EVERYTHING! Much better performance, workflow, etc., but it breaks everyone's rig because nothing good can be compatible with what it is now, as I see it at least. Between now and then, I don't expect anything to change. Bugs stay as they are, and we just have to work around them.
 

DavidGX

New Member
Yeah, it's still not fixed. Don't know if it will or not either, since they're looking at how to solve the overall mess that OBS's audio has become. A pile of band-aids over an originally-limited-use toy can only go so far, and that's pretty much where OBS's audio is at this point.

I wouldn't be surprised to see an update a couple of years from now that completely changes everything about OBS's audio system, and I do mean EVERYTHING! Much better performance, workflow, etc., but it breaks everyone's rig because nothing good can be compatible with what it is now, as I see it at least. Between now and then, I don't expect anything to change. Bugs stay as they are, and we just have to work around them.

Well at least it's not on my end. It sucks because I don't capture desktop audio as I need a couple things to be at separate volumes. The only way I can think of to get around this is to have an audio capture source for one specific game and then manually switch it every time. That sounds like a huge hassle.
 

AaronD

Active Member
The only way I can think of to get around this is to have an audio capture source for one specific game and then manually switch it every time. That sounds like a huge hassle.
You can have several different loopbacks, that appear as different mics in OBS. Send each app's audio to a different loopback, as if it were a physical speaker.

This one seems to be popular:
The top of that page is a single loopback, and there are two additional pairs farther down the page, for a total of 5 independent audio paths if you really need that much. All of them work the same way: send an app to a virtual speaker as if it were physical, and OBS picks up the corresponding virtual mic as if it were physical.

If you need to split an audio path, like to hear it without the problems of OBS's monitor, then you can use one of these instead of or in addition to the loopbacks above:
Pick the one of those that better fits what you're doing and are likely to do in the future. Either way, you get a virtual audio mixer, much like a small physical console, that can connect to your physical devices in addition to creating more virtual ones of its own. Send an app to one of *those* virtual speakers, as if it were physical, and it appears in the corresponding channel of the virtual mixer. Then you can use the virtual mixer's routing buttons next to each input fader, to feed some virtual mics that OBS can pick up, and some physical devices, with the same signal at the same time.

You can scroll up in this thread, to see what I did with the bigger one of those and two simultaneous instances of OBS, and some other stuff too, all on the same machine. Or click here to jump to it:
 
Top