I have a virtual camera going to Zoom and do not have a lag to speak of. The computer is M1 Macbook Air.
I recall that I had some issues. After fiddling a while, I disabled all the 4K options, etc. from camera and selected 1080p output. This is cropped down to 1280x720 output resolution. It's enough.
Generally speaking, video resolution is not important for the sense of quality. Just have decent lighting and don't frame your face like an idiot. To get sense of quality, I recommend investing a little bit to a microphone. People don't realize it but audio quality is the king.
Tracking down what's causing lag in OBS can be quite difficult. I've seen people using the same capture hardware as me get input lag for local display down to one or two frames when I never got it under two seconds.
Not sure why this is being downvoted. I have a colleague who uses an OBS virtual webcam setup like this, and it's really disconcerting having a conversation with them, compared to others who don't use it, because of the additional lag. Their setup may have some specific problem though.
That's a configuration problem, and not hard to correct. Tell him to go into the audio settings, then "advanced audio settings", and add the "sync offset" in milliseconds required to bring the audio and video into sync.
Also, it's likely that his camera is mostly at fault; OBS with my Logitech camera doesn't have any significant lag. OBS itself has very little lag.
That’s desync, not latency/lag. They’re different things, and this solution will actually make the lag worse as it deepens the buffer. OBS virtual cameras definitely have noticeable lag with most people I have seen using them on Teams/Zoom.
I've experimented with OBS at well and decided not to use it for this specific reason. The lag is kinda subtle but on the other side of a test call (with someone else at my own desk) I was able to notice it quite well in interactions and it felt kinda annoying. Since I want the whole thing to feel as natural and positive as possible for the lager end, that was a non-starter. I can do without multiple cameras and gimmicky be-right-back screens.
The meaning of lag is notoriously varied--I think GP understood it as a consistent delay, and you and GGP are saying that OBS introduces an inconsistent delay, i.e., dropped frames or stuttering. The one using the virtual camera should be able to diagnose through the stats 'Frames missed due to rendering lag', 'Skipped frames due to encoding lag', and 'Dropped Frames (Network)', unless the virtual camera driver is somehow the culprit.
Or does one of you mean that even the constant delay is significant enough to be noticed on top of the video call latency?
I just realized that I don't know how the missed/skipped counters are actually defined--presumably frames are skipped for encoding if the encoder can't keep up with the framerate and missed for encoding if if any other part of the pipeline preceding it cannot.
> Or does one of you mean that even the constant delay is significant enough to be noticed on top of the video call latency?
That's what I meant. Video call latency is noticeable but in most cases is not detrimental to conversation (or I have gotten used to mentally correcting for it). Colleagues who have used virtual webcams often have a noticeable additional 100-300ms steady-state latency which goes over the threshold for easy conversation, for me at least.
I glanced earlier at the source for the OBS MacOS virtual webcam plugin and from what I could tell it read the webcam data into a buffer and fed that as the "virtual webcam" stream. If that's true, the extra reading and writing could be taking up cycles causing additional latency.
I haven't upgraded my Mac for a while and been wondering about what the measured range of delay might be for M1 (or M2) over 1080p video at 24fps.
My experience on an older Mac (late 2014) was that even at 320x240 I'd get non-negligible delay.
I ended up getting a Magewell Capture. As far as I know Magewell and Blackmagic are the only HDMI to USB devices that perform hardware h.264 encoding. It works perfectly and even has configurable video processing options, but I can't currently use it with OBS without introducing a delay.
Regardless of whether newer machine might make OBS encoding delay negligible, I wonder if a layered approach might work: I'm not well versed in video streaming technologies, but perhaps _layered streams_ approach which I think is supported in some video formats could allow OBS to work faster as a tool that combine multiple encoded video streams into a single video.
One such stream for example might be the main video camera + additional say keyboard facing camera and finally a text layer which should be much faster to encode than having to re-encode the entire output.