Question / Help Explanation?

RedTail

New Member
Would anyone mind explaining what a few things in the log file mean? The below samples are pulled from a log file for a recording that, at least to my eyes, appears successful:

Code:
08:20:21: SharedTexCapture hooked
08:25:47: FlushBufferedVideo: Flushing 44 packets over 717 ms
08:25:48: Total frames encoded: 19561, total frames duplicated: 0 (0.00%)
08:25:48: Total frames rendered: 19566, number of late frames: 0 (0.00%) (it's okay for some frames to be late)
08:25:48: Encoder closed
08:25:48: NVENC deinitialized

I take it everything above is good. What I'm kinda still concerned about is what's below:

Code:
08:25:48: video thread frame - [100%] [avg time: 0.349 ms] [children: 80.2%] [unaccounted: 19.8%]
08:25:48: | scene->Preprocess - [0.573%] [avg time: 0.002 ms]
08:25:48: | GPU download and conversion - [79.7%] [avg time: 0.278 ms] [children: 75.1%] [unaccounted: 4.58%]
08:25:48: | | flush - [70.8%] [avg time: 0.247 ms]
08:25:48: | | CopyResource - [1.72%] [avg time: 0.006 ms]
08:25:48: | | conversion to 4:2:0 - [2.58%] [avg time: 0.009 ms]
08:25:48: Convert444Threads - [100%] [avg time: 1.628 ms] [children: 99.4%] [unaccounted: 0.614%]
08:25:48: | Convert444toNV12 - [99.4%] [avg time: 1.618 ms]
08:25:48: encoder thread frame - [100%] [avg time: 3.066 ms] [children: 7.31%] [unaccounted: 92.7%]
08:25:48: | sending stuff out - [7.31%] [avg time: 0.224 ms]

Is having a large amount of frames unaccounted for inherently bad? Or am I just worrying over nothing at this point?
 
Duplicated frames are simply frames the encoder uses a second time because no new frame has arrived from the scene in time. This effect is called late frames. You have none of those, so that is good.

This second thing is a profiler result. This represents the time spent for every frame. So no frames are unaccounted for, some of the time spent encoding the frames is unaccounted for. This means that the time was spent doing something that is not being measured. The main thing you want to look for here is just the top line: video thread frame, the average time to encode a frame is 0.349 ms, which means the encoder, running at full speed could do: 1000/0.349 = 2865 fps. Note that this is not a realistic number, but it does help as a guide: as long as your desired frame rate is well below 1000 / average frame time, you should be good.

If this number starts getting higher, then it might be interesting to look a bit deeper and see which part of the process is taking up most of the time, so you can remedy this specific issue. This could be the copying of data from/to the gpu, the conversion of the image, the actual encoding, etc, or it could be unaccounted for (and then unaccounted for time is annoying, because you don't know what to do to fix it).
 
Duplicated frames are simply frames the encoder uses a second time because no new frame has arrived from the scene in time. This effect is called late frames. You have none of those, so that is good.

This second thing is a profiler result. This represents the time spent for every frame. So no frames are unaccounted for, some of the time spent encoding the frames is unaccounted for. This means that the time was spent doing something that is not being measured. The main thing you want to look for here is just the top line: video thread frame, the average time to encode a frame is 0.349 ms, which means the encoder, running at full speed could do: 1000/0.349 = 2865 fps. Note that this is not a realistic number, but it does help as a guide: as long as your desired frame rate is well below 1000 / average frame time, you should be good.

If this number starts getting higher, then it might be interesting to look a bit deeper and see which part of the process is taking up most of the time, so you can remedy this specific issue. This could be the copying of data from/to the gpu, the conversion of the image, the actual encoding, etc, or it could be unaccounted for (and then unaccounted for time is annoying, because you don't know what to do to fix it).

That's reassuring! Thank you!

When you say "if this number starts getting higher," I assume you're talking about the average time, correct?
 
That's reassuring! Thank you!

When you say "if this number starts getting higher," I assume you're talking about the average time, correct?
Just to give you an idea, 30fps requires no more than 33.33ms. 60fps recording needs at least 16.7ms (half of 33ms).

As @ThoNohT said, Its more of a guide. Mainly because the encoder isn't always stressed and also because this is an average, not the max

I would, make sure that when to watch the duplicate, dropped and video/encoder thread frames that you:
1. are actively recording
2. have a capture source visible
3. are moving around as you would in said game/app.

Having a high duplicate frame count (above 1%) can also mean that OBS can not keep up with the preset, fps or resolution specified.
 
Back
Top