phandasm / waveform

Audio spectral analysis plugin for OBS
https://obsproject.com/forum/resources/waveform.1423/
GNU General Public License v3.0
505 stars 34 forks source link

Waveform responds too early to VLC OBS integration music #29

Open EpicLPer opened 1 year ago

EpicLPer commented 1 year ago

I'm using the VLC OBS Integration to play some music in the beginning of my streams, however since I updated to this Waveform plugin (from Spectralizer) and OBS 28 there's a bit of a delay between the music and the visuals. If you look closely you can see that the Waveform in the background responds "too early" to what's actually being recorded. The network cache setting is set to just 100ms, not sure what's going wrong here.

Here's the video where I noticed this: https://twitter.com/EpicLPer/status/1576314747410169857

phandasm commented 1 year ago

Huh, I do see the desync (most noticeable around 0:11), but I can't reproduce it.

The most obvious quirk I noticed with the VLC source is that the preview seems to be heavily delayed (wrt the moment you press the start/stop button) but the actual recording is properly synced. Using a plain "Media Source" instead fixes the preview delay and is also synced in the recording.

Unfortunately there's several places this could have gone wrong, my guess would be that the delay got introduced during muxing but that's just speculation.

EpicLPer commented 1 year ago

Sorry for late reply!

Yeah, I noticed the VLC plugin being wonky with delays pretty much all the time, tho checked right now and it's definitely not a muxing desync.
Tbh wish I could just drop the VLC plugin all together, but don't want to move to an external player since I kind of have a thing for "keeping everything local" :) And the Media Source sadly doesn't support playlists nor random play (even tho random play in the VLC plugin is borked anyways if you initially load it since it plays one after another, not random...).

phandasm commented 1 year ago

Ah, I see what happened. In my test setup I have waveform's audio input set to "Output Bus" which seems to not have the sync issue. Setting it to monitor the VLC input specifically does indeed cause a desync. Swapping VLC for a plain media source fixes it, so it seems to be specific to VLC.

I guess VLC is somehow piping audio to plugins well before the actual output, not sure how I'd go about fixing that atm. Setting waveform to monitor the output bus should serve as a workaround if your use case allows for it.