Question / Help Streaming Tennis with OBS

edoroom

New Member
Hi,It's my second time coming to this great forum ;) last time I asked and got some information before my first stream and what's the most common answer I got in my question was that I must trial and error on my own..
Well after doing 2 streams I always had a feeling that I'm missing something..
First stream was using the recommanded autosetup settings from OBS which recommanded me a little less from 720p and a 2900bitrate..
That's what I did on my first tennis stream and I did it to 2 platforms one twitch and second youtube (Most of my friends watched on youtube so later I stopped doing twitch) however I noticed that youtube didnt recongize the video as 720p and gave only 480p when on twitch it showed the actual resolution I was doing and there the quality was better..Later I understood that I must give youtube normal resolution so next stream I did the setup on my own and configured OBS to stream 1280x720 60 FPS when settings was on "x264,Very Fast" bitrate of 3100..
(A sample of how it was on youtube https://youtu.be/kMoewa2gRSw?t=2947 )
And still I had a feeling I'm missing somemthing..Now I just discovered that using my phone internet on 4G I could get upload speeds to europe of around 12-14mbps which means I can try to setup a stable stream with 10000Bitrate which should be much more better and here I came again to the forum learned more and then went to the field and tried streaming with different settings to see the affect...
Now that I now that I'm having a nice upload speed on the outside I tested 2 options..
One is 720p60fps with bitrate of 6000
Second is 1080p60fps with bitrate of 10000..

Let me explain at quick on my setup..I know usually you are used for people who stream games but here I'm doing something different..

GoPro Hero 7 output to Elgato cam link which connected with usb to my laptop (XPS 15 9570,I7 8750H,16GB,1050TI) The gopro output the video signal on 1080p60fps..
And my phone connected with usb to the laptop for usb tether of the internet..

Now the main question after all the testing I do is how to get the max quality possible..
With 720p60fps bitrate 6000 I could go with x264 Medium preset,But it still felt low quality when I did one on one compare with the 1080p60fps bitrate 10000 on x264 faster (Trying fast gives encoder overload message and cpu usage of 80-90%)

Again I know it might be a question that many asked before,
I also read that article from example
https://obsproject.com/forum/threads/comparison-of-x264-nvenc-quicksync-vce.57358/

But usually all the references here are for people who stream games, and here when it's stream of the camera output the GPU is pretty much free for use and same as the CPU which I wont really care if it's on let's say 70% usage as it's not that I play & stream..

My question is because I need the stream to be stable and without "Blurry" image due to maybe fast motion move (Like the ball moves)
If how set it up now is okay?

I also tried for example 1080p60fps 10k bitrate when it's encoding using the 1050ti gpu,using NVENC H.264 new setting..
There I did - Max Quality and profile high,Also turned on "Look -ahead" as recommanded for fast motion stream and CPU was at around 7% usage and GPU was on around 30-40% usage (On the stream) what was weird to me that in NVENC even that I did on the "Best" preset which was the max quality the GPU load was only around 30%,I mean if it still have space to work on then why it's not utilize everything it can to get better quality per bitrate?
*I did compare with 1080p60fps using nvenc and using cpu x264 faster and couldnt notice really any difference..*

Hopefully can get some answers from people who has more experience then me and hope that my questions would help people who might ask the same for their setup ;)
 

Narcogen

Active Member
"Also turned on "Look -ahead" as recommanded for fast motion stream"

It is recommended to turn look ahead OFF for high motion content.
  • Look-ahead: Unchecked for most content, checked for low motion games. This allows the encoder to dynamically select the number of B-Frames, between 0 and the number of B-Frames you specify. B-frames are great because they increase image quality, but they consume a lot of your available bitrate, so they reduce quality on high motion content. Look-ahead enables the best of both worlds, but struggles with high motion content as it needs to change too often. This feature is CUDA accelerated; toggle this off if your GPU utilization is high to ensure a smooth stream.
https://www.geforce.com/whats-new/guides/broadcasting-guide

"CPU was at around 7% usage and GPU was on around 30-40% usage (On the stream) what was weird to me that in NVENC even that I did on the "Best" preset which was the max quality the GPU load was only around 30%,I mean if it still have space to work on then why it's not utilize everything it can to get better quality per bitrate?"

That is not how that works. You will not see the work the dedicated hardware encoder does reflected in GPU load.

For high motion content, it's always better to do 60fps than 30. That isn't an issue for you.

If you can do 1080p60 as easily as 720p60, there is no reason not to.

If you can sustain a 10k bitrate without issue and all your viewers are on YouTube, you can should absolutely do that.

So the only remaining question is x264 faster vs new NVENC; Nvidia claims that the new NVENC gives quality equivalent to the Medium preset; I think this may be a slight exaggeration, but I think it's certainly equivalent to fast and better than faster or veryfast.

I would turn off look-ahead, use the highest quality setting, and use NVENC without worrying about unused GPU headroom, that's not a thing. The tools that display GPU utilization are only going to show the work that OBS is doing to render frames, it's not going to show the encoding work.
 

edoroom

New Member
It is recommended to turn look ahead OFF for high motion content.
  • Look-ahead: Unchecked for most content, checked for low motion games. This allows the encoder to dynamically select the number of B-Frames, between 0 and the number of B-Frames you specify. B-frames are great because they increase image quality, but they consume a lot of your available bitrate, so they reduce quality on high motion content. Look-ahead enables the best of both worlds, but struggles with high motion content as it needs to change too often. This feature is CUDA accelerated; toggle this off if your GPU utilization is high to ensure a smooth stream.
https://www.geforce.com/whats-new/guides/broadcasting-guide



That is not how that works. You will not see the work the dedicated hardware encoder does reflected in GPU load.

For high motion content, it's always better to do 60fps than 30. That isn't an issue for you.

If you can do 1080p60 as easily as 720p60, there is no reason not to.

If you can sustain a 10k bitrate without issue and all your viewers are on YouTube, you can should absolutely do that.

So the only remaining question is x264 faster vs new NVENC; Nvidia claims that the new NVENC gives quality equivalent to the Medium preset; I think this may be a slight exaggeration, but I think it's certainly equivalent to fast and better than faster or veryfast.

I would turn off look-ahead, use the highest quality setting, and use NVENC without worrying about unused GPU headroom, that's not a thing. The tools that display GPU utilization are only going to show the work that OBS is doing to render frames, it's not going to show the encoding work.

Alright much thanks!
And about the remaining question which is indeed what I'm still trying to figure out..
The new NVENC which nvidia claims to be like medium preset on x264 it's only if the GPU is from their new RTX lineup..The old generation (1050ti) wont benfit from it,So that's why I'm still trying to figure out what should I do,If it's the x264 faster or still NVENC,
Because it's a laptop I dont think I can count on it working 100% well (I mean on x264) as I need the feed from the camera going well also without any drops,So I guess I would just go with the NVENC and hopefully all should be well ;)
And yeah I read it totally wrong,I will disable the "look ahead"
Thanks again!
 

Narcogen

Active Member
Sorry-- you didn't post a log so I thought perhaps you had one of those cards.

In the RTX cards or the GTX 1660Ti, Nvidia claims equivalence with the Medium preset.

Using the "new NVENC" code in OBS with older cards will make operation more efficient, but not increase quality.

However in each case there is no point in seeing low GPU utilization during NVENC use and saying "I need to push the card higher to get more quality".

If your CPU can be pushed harder to use a better preset, then do that, but once you've enabled the maximum quality settings with NVENC you're done, there's no overhead to exploit just because GPU utilization graphs show a low percentage-- encoding capacity with NVENC is non-fungible.

x264 can give you better quality than NVENC; I would probably go with the 10k rate and 720p60 with the slowest preset your CPU can hold (medium may not be worth it but definitely do fast).
 

edoroom

New Member
Sorry-- you didn't post a log so I thought perhaps you had one of those cards.

In the RTX cards or the GTX 1660Ti, Nvidia claims equivalence with the Medium preset.

Using the "new NVENC" code in OBS with older cards will make operation more efficient, but not increase quality.

However in each case there is no point in seeing low GPU utilization during NVENC use and saying "I need to push the card higher to get more quality".

If your CPU can be pushed harder to use a better preset, then do that, but once you've enabled the maximum quality settings with NVENC you're done, there's no overhead to exploit just because GPU utilization graphs show a low percentage-- encoding capacity with NVENC is non-fungible.

x264 can give you better quality than NVENC; I would probably go with the 10k rate and 720p60 with the slowest preset your CPU can hold (medium may not be worth it but definitely do fast).

Yeah yeah I got that point.
I'm keep doing some tests and it looks like (When I'm running a video for stream test)
That in some parts if I except the video to be 60fps I see a little sluggish,But still not sure if it's due to the NVENC,Will keep trying x264 also till I see the most stable result but yeah thanks for your respoonse.

What I didnt understand is why you would go with 10k bitrate & 720p60 on medium preset (it can hold it well the CPU)
When youtube for example recommands max 6k bitrate for 720p60 and when everything can be possible for 1080p60fps just need to optimize it the best as I can ;/
 

edoroom

New Member
Please if still here hopefully you can see my test video stream -
https://www.youtube.com/watch?v=GkOVNn7mig0
5:40-6:40 Was with x264.Very fast preset (Seems that faster sometiems giving encode overload message so CPU cant hold well 1080p60 I guess..)
and

25:24-26:24
Was with NVENC Max quality preset..

You see how when in the video the camera moves fast it's like in the NVENC the video looks a bit "laggy" and not really 60fps and on the x264 it's looks fine but a bit blurry,
Any idea why?
NVENC looks fine from logs I mean not overload or something from encoder,Bitrate is stable on 10k on the whole stream so it's just something in the encoder ;/

edit -
here it's a better way to see the difference of both encoders..

6:55-7:25
x264
26:37-27:07
nvenc
 

Narcogen

Active Member
NVENC reduces CPU load at the expense of quality at a given bitrate.

So at the same frame size, frame rate and bitrate, where you will see NVENC quality break up, x264 could hold, if you could set a slow enough speed. NVENC does best with very high bitrate (local recording, not streaming) and CRF/CQP rate control. It's used in streaming mostly where it's simply not practical to have the CPU do it.

You're simply not going to get perfect quality at 60fps 10k with NVENC, at least not with a 1050. You will see artifacting when motion is high-- and your test footage has no players in it, so it's significantly less challenging than an actual shoot is going to be.

The only way to compensate for that other than lowering framesize/framerate is increasing bitrate.
 

edoroom

New Member
NVENC reduces CPU load at the expense of quality at a given bitrate.

So at the same frame size, frame rate and bitrate, where you will see NVENC quality break up, x264 could hold, if you could set a slow enough speed. NVENC does best with very high bitrate (local recording, not streaming) and CRF/CQP rate control. It's used in streaming mostly where it's simply not practical to have the CPU do it.

You're simply not going to get perfect quality at 60fps 10k with NVENC, at least not with a 1050. You will see artifacting when motion is high-- and your test footage has no players in it, so it's significantly less challenging than an actual shoot is going to be.

The only way to compensate for that other than lowering framesize/framerate is increasing bitrate.
I have no issue with less quality as long as it would run well,I just dont get why on nvenc in the parts where you could see in the test video (Yeah I know it's not a real test compared now to real game with 2 players moving with camera connected) when here it's just a video test from drone that I made..But why in the parts where you see the "lag" OBS didnt report any issue with the encoder like maybe encoder overload/dropped frames/skipped frames..Shouldnt it do it? as you could see from the video in the parts of the high motion it just became sluggish compared to what x264 very fast did where it was much more better ;/

I know 60fps 10k 1080p going to be hard but I still dont want to give up on that and go for 720p60 that's why I keep asking questions here and keep trying different things but I just cant understand what's the issue that NVENC Couldnt hold up on that video,As OBS didnt report any issue from it's side ;/
 

Narcogen

Active Member
I'd guess that since OBS hands off encoding to the Nvidia card, it only knows about what the card reports back to it. As long as the card accepts every frame OBS gives it, and the card doesn't complain, OBS thinks everything is OK. I do know that the format for reporting lag is different for the x264 than for NVENC, and still different again for AMF.
 

edoroom

New Member
I will add my findings here just in case someone would have same question in the future..
I kept trial and try,
One of the things I did was changing the Laptop resolution to 1920x1080 (It was 4k,Maybe less load for GPU in that way?)
And also changed the filter to X16 instead of the last option,Retested the stream and now everything looks smooth on the NVENC ;/
 

Narcogen

Active Member
The resolution of the laptop display would probably only affect the performance of the preview rendering-- the more important setting for OBS performance is the canvas resolution-- if that was your display's native resolution it would be chugging a lot more.
 
Top