NVEnc Feedback thread (2014)

Status
Not open for further replies.

theGuruWithin

New Member
What is the best way to have this and v0.592b installed side by side so i can test .60 and still have use of .592b if i need stable stream. I would love to do this without installing and uninstalling each time i need to make a shift!

Thanks for this awesome product... LOVE OBS its the best!
 

Jim

Jim
Developer
"Stable stream"? It would probably be better to explain what your problem with 0.60b is rather than ask for how to use both. 0.60b should be just as stable.

Also, if you want both installed at the same time, just download the binaries for both and have them in separate locations, and avoid the auto-update.
 

BtbN

Member
MazingerZ said:
Not necessarily a question on the build itself, but the feature using the Nvidia hardware feature...

I have a 1st gen i5 on a capture machine and its just barely pushing the bounds of good taste when streaming... That is, I get up to about 80-90% utilization on the most used core when encoding to Twitch. I'm not really in the position to do a Haswell build, but a moderately priced 6xx card priced just under 200 (I've currently got a GT 460 in the box) could, in theory, do the trick.

Any numbers on how the performance of using a dedicated graphics card that's not running a game would hold up on encoding speed and utilization? Would this be a good stop-gap measure? Obviously, I'd spend more money in the long run, but if OBS can off-load the encoding to other hardware, it'd give me the space to meet my goals for now.

The cheapest card you can get which supports nvenc is a GT630 Rev. 2(Make sure it's rev 2, which has a Kepler chip), which is like 50~60€ here.
The nvenc part is a dedicated part of hardware, which is allways the same on all card. So there is no encoding performance difference between a GT630r2 and a GTXTITAN.
 

DanSyor

New Member
I've been using NVENC as of when it was in the test releases and it's pretty good (for CPU usage when doing local 1080p@60fps recordings) thanks to BtbN's post on page 2 of this thread.
Now that it is in the "current stable" release, OBS constantly (every other restart or so) wants to update and thus overwriting the 'working' NVENC dll (well, the DLL with the license key, the other one probably works the same ^^). For now, I just remove the new dll and copy+rename the 'working' one. I could also write a small bat file that does this, but is there a more 'permanent' solution?
or does someone has any news about how to get/buy a license key (for what price)? what about the GeForce Experience files? I assume that, like the NVENC DLL I'm using with OBS, the license key is built in the ShadowPlay program (which I don't like since it makes multiple 4GB files instead of one big file with the whole video, plus not enough settings imho)...
 

Xphome

Member
DanSyor said:
I've been using NVENC as of when it was in the test releases and it's pretty good (for CPU usage when doing local 1080p@60fps recordings) thanks to BtbN's post on page 2 of this thread.
Now that it is in the "current stable" release, OBS constantly (every other restart or so) wants to update and thus overwriting the 'working' NVENC dll (well, the DLL with the license key, the other one probably works the same ^^). For now, I just remove the new dll and copy+rename the 'working' one. I could also write a small bat file that does this, but is there a more 'permanent' solution?
or does someone has any news about how to get/buy a license key (for what price)? what about the GeForce Experience files? I assume that, like the NVENC DLL I'm using with OBS, the license key is built in the ShadowPlay program (which I don't like since it makes multiple 4GB files instead of one big file with the whole video, plus not enough settings imho)...
The newest Nvidia beta drivers removes the need for a license. I've not tried it myself but that's what people say.
 

Spellruler

New Member
I'm not super Tech Savvy, but the NVENC Thing just popped up on my OBS. (Always glad to see you guys are working hard on OBS <3 )

I am however confused whether I should use it or not, can someone explain to me the benefits of using NVENC in OBS? I ask this because I write guide on OBS for a fairly large org and want to keep the guide up-to-date, it's also for my personal knowledge.

I use an i5-3570K with a GeForce GTX 780. The games streamed primarily are League or Legends on the highest quality, along with some HearthStone.

If I need to provide anything else, please tell me what and I will do so!
 

Xphome

Member
Spellruler said:
I'm not super Tech Savvy, but the NVENC Thing just popped up on my OBS. (Always glad to see you guys are working hard on OBS <3 )

I am however confused whether I should use it or not, can someone explain to me the benefits of using NVENC in OBS? I ask this because I write guide on OBS for a fairly large org and want to keep the guide up-to-date, it's also for my personal knowledge.

I use an i5-3570K with a GeForce GTX 780. The games streamed primarily are League or Legends on the highest quality, along with some HearthStone.

If I need to provide anything else, please tell me what and I will do so!
NVENC uses a special chip on your graphics card to encode instead of your CPU which barely impacts your game (and overall system) performance. However, you are trading quality for performance. To get equal quality of the same settings with the veryfast x264 preset you need a higher bitrate. How much higher bitrate you need I don't know.

Using NVENC to broadcast at 720p 30FPS should be fine, the higher bitrate needed for higher resolution/framerate streams might be too high for non-partners tho. I rarely stream but I always use NVENC for recordings since bitrate isn't an issue when recording to disk.
 

Spellruler

New Member
Thanks for responding, I do stream in 720P and 30 FPS. The stream in question is partnered, my personal stream however, is not.

I do use veryfast X264, with a max bitrate and buffer of 3500 for video encoding. ( I have about 7 upload so that shouldn't be a problem, unless you were referring to something else).

So, should I use NVENC or just leave OBS as it is, I never have had any complaints of the quality of the streams and so on.

Again, thank you for responding!
 

Xphome

Member
Spellruler said:
Thanks for responding, I do stream in 720P and 30 FPS. The stream in question is partnered, my personal stream however, is not.

I do use veryfast X264, with a max bitrate and buffer of 3500 for video encoding. ( I have about 7 upload so that shouldn't be a problem, unless you were referring to something else).

So, should I use NVENC or just leave OBS as it is, I never have had any complaints of the quality of the streams and so on.

Again, thank you for responding!
3500 for 720p 30FPS? We stream that at 2000-2500 without problems, of course it depends on how much motion there is. If you don't need to free up CPU cycles you can just stick with not using NVENC. But I recommend you try and see what works best for you, choosing which settings to stream at should be done on a case-by-case basis.
 

gdlk

Member
Great news about adding NVENC! Working perfect for me on GTX670. Many thanks to all developers, you are great guys.
 

Bosenator

New Member
I have a GeForce GTX 770, and overwritten the ObsNvenc.dll with the license key precompiled dll (page 2). It won't work.

Log file:
21:37:02: Open Broadcaster Software v0.60b - 64bit ( ^ω^)
21:37:02: -------------------------------
21:37:02: CPU Name: Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz
21:37:02: CPU Speed: 2675MHz
21:37:02: Physical Memory: 16381MB Total, 9456MB Free
21:37:02: stepping id: 5, model 30, family 6, type 0, extmodel 0, extfamily 0, HTT 1, logical cores 4, total cores 4
21:37:02: monitor 1: pos={0, 0}, size={1920, 1080}
21:37:02: monitor 2: pos={1920, 0}, size={1920, 1080}
21:37:02: Windows Version: 6.1 Build 7601 S
21:37:02: Aero is Disabled
21:37:02: -------------------------------
21:37:02: OBS Modules:
21:37:02: Base Address Module
21:37:02: 000000003F0F0000 OBS.exe
21:37:02: 00000000EFBE0000 OBSApi.dll
21:37:02: 00000000F8D00000 DShowPlugin.dll
21:37:02: 00000000F8CD0000 GraphicsCapture.dll
21:37:02: 00000000F9080000 NoiseGate.dll
21:37:02: 00000000F9010000 PSVPlugin.dll
21:37:02: ------------------------------------------
21:37:02: Adapter 1
21:37:02: Video Adapter: NVIDIA GeForce GTX 770
21:37:02: Video Adapter Dedicated Video Memory: 2087387136
21:37:02: Video Adapter Shared System Memory: 2147807232
21:37:02: Video Adapter Output 1: pos={0, 0}, size={1920, 1080}, attached=true
21:37:02: Video Adapter Output 2: pos={1920, 0}, size={1920, 1080}, attached=true
21:37:02: =====Stream Start: 2014-02-11, 21:37:02===============================================
21:37:02: Multithreaded optimizations: On
21:37:02: Base resolution: 1920x1080
21:37:02: Output resolution: 1280x720
21:37:02: ------------------------------------------
21:37:02: Loading up D3D10 on NVIDIA GeForce GTX 770 (Adapter 1)...
21:37:02: ------------------------------------------
21:37:02: Audio Format: 44100hz
21:37:02: Playback device {0.0.0.00000000}.{68461c56-2811-4a49-9f96-4f83e31a6222}
21:37:02: ------------------------------------------
21:37:02: Using desktop audio input: Speakers (VIA High Definition Audio)
21:37:02: Using 5.1 speaker setup
21:37:02: ------------------------------------------
21:37:02: Using auxilary audio input: Microphone (Blue Snowball)
21:37:02: ------------------------------------------
21:37:02: Audio Encoding: AAC
21:37:02: bitrate: 128
21:37:02: Using Monitor Capture
21:37:02: Scene buffering time set to 700
21:37:02: Successfully loaded ObsNvenc.dll
21:37:02: ObsNvenc initialized successfully
21:37:02: CUDA loaded successfully
21:37:02: >> cuInit(0) - failed with error code 0x3e7
21:37:02: Couldn't initialize encoder
21:37:02: Number of times waited to send: 0, Waited for a total of 0 bytes
21:37:02: Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
21:37:02: Number of bytes sent: 0
21:37:02: =====Stream End: 2014-02-11, 21:37:02=================================================

6SvV8.png


Edit: Same with beta nvidia driver.

Edit: I derped, ignore this - working perfectly.
 

BtbN

Member
You're most likely using an outdated nvidia driver. Use the latest beta driver.
Also make sure you actualy reboot after updating the driver.
 

Boildown

Active Member
So I finally got around to putting my home theater PC's GT630 in my encoder PC to try out NVEnc with the latest Nvidia beta drivers. And it works, works even though the card is too slow to do any x264 encoding except on UltraFast (capturing to the hard drive at 1080p60 from a Datapath E1S capture card). I've only tried it at high bitrates and the playback afterwards looked fine.

What I'm wondering now: How can I tell NVEnc to use constant quantizer mode (qp) instead of constant bitrate? Do I just put it on the x264 command line like I would for OBS's default x264 (qp=24, for example)?

I also had 20% duplicated frames according to the log when doing 20000/20000 bitrate/buffer. But on playback, it looked pretty decent, so not sure what to make of it. I did re-read this entire thread and someone mentioned using 20000/7000, so I'll try that next, or try QP mode if I can find out how to enable it.
 

BtbN

Member
You can't, nvenc does support it, but there is no way to tell obs to use it.

Edit: Well, in theory you can, by editing the nvenc xconfig files in %appdata%\OBS
 

Boildown

Active Member
BtbN said:
You can't, nvenc does support it, but there is no way to tell obs to use it.

Edit: Well, in theory you can, by editing the nvenc xconfig files in %appdata%\OBS

Looking at those files, there's last_nvenc_config.xconfig and nvenc_config.xconfig . It looks like last_ contains what I used in my last encode or current setup, but nvenc_config.xconfig is zero length. How do I make these changes? I assume changing the last_ file will just be overwritten, and since the other file is zero length... not sure where to do this.

One more thing, isn't it not efficient to have the gopLength set to 30? Or is that just a safe value for people who stream at low framerates? For streams at 30fps, a 2 second keyinterval would mean the goplength could be 60, streams at 60fps could be set to 120 (for Twitch). Is this something I can edit considering I'm just saving to the hard drive, or is it a limitation of NVENC?
 

BtbN

Member
gopLength is calculated from the keyint you have configured in OBS.
You can just put any options from nvenc_last_xconfig into the normal one.
 

Boildown

Active Member
BtbN said:
gopLength is calculated from the keyint you have configured in OBS.
You can just put any options from nvenc_last_xconfig into the normal one.

It seems that goplength is set to 30 no matter what. At least its using 30 even when my fps is 60.

Do I copy and paste a line in or do I need to keep the bracket structure, or copy and paste the whole thing, or what?
 

Boildown

Active Member
I gave up for now, offloading to NVENC for the local capture didn't allow my first OBS instance to software encode at any higher settings than before. Not sure why that was, but it was. I'm thinking of getting a GTX750Ti, on the Maxwell chip, when it comes out on Tuesday, depending on how well its reviewed. And especially if the NVENC encoder on it is improved (like the Quicksync was improved going from Sandy > Ivy > Haswell).

The GT630 is capable of encoding with OBS, but only in NVENC mode. In regular software mode its too damn slow, just like my old GTX260.
 
Status
Not open for further replies.
Top