Question / Help What's the difference between "missed" frames and "skipped" frames?

obsrookie

New Member
Hi there.

I am new to the software and trying to record a 800x600 region of my screen (a live video) at 60 fps (NOT interested in streaming at all).

My stats window is telling me that over half of the frames are "missed" but none are "skipped".

screenshot: http://i.imgur.com/VMZHugq.png
logfile: https://pastebin.com/ZNFksL7y

What's the difference? Should I care about "missed" frames?

Thank you very much.
 

Boildown

Active Member
One specifies "rendering lag" and the other specifies "encoding lag". I'm guessing encoding lag has to do with your CPU and rendering lag has to do with your GPU. So I'd say your GPU is what's causing your video encoding to not be performing well.

Haven't heard of that GPU you have, but googling it says "workstation graphics". OBS is unlike most other video encoders in that it needs certain gaming features on the GPU, instead of all being done in software (for gamers, this makes it faster than the video recording/streaming alternatives). So I'd say you probably need an GPU upgrade to effectively use OBS.
 

obsrookie

New Member
Thanks for your reply.

I am still confused that the logfile says

14:24:31.432: Output 'adv_file_output': Total encoded frames: 8078
14:24:31.432: Output 'adv_file_output': Total drawn frames: 8078
14:24:31.432: Output 'adv_file_output': Number of lagged frames due to rendering lag/stalls: 4825 (59.7%)

Shouldn't that mean that the saved video file has all the frames if they were all drawn?

Could it be that the encoding is just lagging behind, which would be bad for streaming, but a non-issue when I am only interested in the final recording?
 

Simes

Member
I'm sure the video file contains that number of frames. But some of them may be duplicates due to the next frame not being ready in time. And you have to remember that the video still needs to be rendered and encoded in real-time because your game is being played in real-time. It's not possible to buffer old frames indefinitely.
 

obsrookie

New Member
Thanks. Is there any way I could check for duplicate frames in the output video?

In case it makes any difference, I am not trying to record a game, but a 800x600 region of my desktop where a live video from a camera is shown.
 

Simes

Member
Scrubbing through the video and looking at the frames is probably the best way to check for duplicates.

And it doesn't really matter that it's not a game, the point is that it's something you're capturing live.
 

koala

Active Member
Using monitor capture on Windows 7 system has serious performance problems. It's ok only on Windows 8 and later. Use window capture to only record the window of your video software and no monitor capture. Some applications can also be recorded by using game capture. Under Windows 7, every capture method is better than monitor capture. You can still use the crop filter to cut the borders.

About missed and skipped frames: Frames have to be downloaded from GPU memory to CPU memory first, then encoded, then written to disk. As far as I understand, if the download takes too long, frames are "missed", and if the encoding takes to long, frames are "skipped".

In your case, it takes much too long to download the frames from the graphics card. It's not the encoding, it's the access to the graphics card. In your screenshot, it takes 50ms per frame. Usually, on a fair gaming computer setup, this takes only 1 - 1.5 ms. If you want to record at 60 fps, you have 16.6 ms for each frame for download and encoding, so both added must not exceed 16.6 ms.
 
Last edited:

Boildown

Active Member
Try to "game capture" or "window capture" that camera output. Failing that working, you're going to need a better video card.
 

obsrookie

New Member
Thanks for your help, everybody.
I switched from cropped screen recording to cropped window recording. No frames are dropped.
 
Top