I ended up spending a few more hours debugging OBS last night, and this is what I came up with. The previous bugfix fixed a pathological bug that broke audio persistently, but this fixes the underlying problem that allows that to happen at all.https://github.com/obsproject/obs-studio/pull/3863 …
-
-
It seemed it was just accepted that buggy or misbehaving audio sources could cause that situation, and when they did, all of OBS's audio processing was expected to stop working properly, and you had to restart the whole app.
Show this thread -
This always rubbed me the wrong way. First, because I *knew* from logs that I had gotten that error *hours* before the stream actually fell over. Second, because something is clearly wrong if a buffer never shrinks, can only grow, and once it reaches a max your app falls over.
Show this thread -
Obviously if multiple audio sources cannot be reconciled in time due to time slip, *some* audio drop-outs need to happen. But they should neither affect everything globally, nor cause a persistent problem forever.
Show this thread -
Now I know that it was just another dumb bug. The buffer size increase codepath corrects those slipping sources, but once that no longer runs or sources slip too much, OBS's audio mixing code just... couldn't deal with them, instead breaking entirely.
Show this thread -
So the patch just makes it detect that situation and drop late audio from that source (and possibly reset it to pending) before the whole audio mixing tree gets poisoned by audio data from the past. And now everything is fine.
Show this thread -
FWIW, this particular bug has been basically known as "the bug that has crashed every long-running DJ (or similar RTMP re-streaming) show at least once" within the community. I'm very happy to see it gone. Or at least I hope so anyway. We'll see at
@AnimeltUP! this Sunday!Show this thread
End of conversation
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.