0.3.0 - Full Hardware Encoding, Lower Latency and more!
Make way, because it's time for full hardware encoding! OBS Studio added this to their built in NVENC a while ago, and today I'm fully releasing it for this plugin. With full hardware encoding, your rendered frame never leaves the GPU, unlike with pseudo hardware encoding where it is first transferred to RAM and then back to the GPU. The benefits of this are much lower GPU usage, reduced game impact, and much lower CPU usage. However due to OBS Studio limitations this restricts you to NV12 without any rescaling except for rescaling set up in the Video tab.
Not only do we have full hardware encoding now, both NVENC encoders now support ultra low latency encoding (as low as 1 frame). This can be enabled by setting B-Frames to 0 and Lookahead Frames to 0, which both control the latency of the encoder (though B-Frames affect latency less than Lookahead Frames). The obvious downside is that it affects quality a lot, which can only be fixed by increasing the bitrate.
Additionally the plugin now sets all color metadata and sets a constant framerate. This should ensure that video editing software can better deal with the footage from the plugin, if they support this kind of metadata. Apple ProRes was also modified to include a workaround for a bug in the FFmpeg version that OBS Studio currently ships with. ProRes content recorded to Matroska (MKV) should now survive one MKV to MKV/MP4/... remux.
Changelog
0.3.0
- Updated the libOBS dependency to 24.0.0. You will need to use OBS Studio 24.0.0 or newer in order to run the plugin.
- Implemented full hardware encoding for all GPU capable encoders (NVENC H264, NVENC H265). This should be perform identical to the OBS included full hardware encoders.
- Reduced the latency for some encoders to be as low as 1 frame, if settings allow. For NVENC, latency is tied to (B-Frames + 1) and Lookahead Frames, whichever is bigger.
- Further improved performance by throwing even less memory away every frame. Almost all memory is now re-used if possible and only released when the encoding is stopped by any means.
- Apple ProRes encoded files should now be remuxable when stored in Matroska (MKV) and survive at least one remuxing. This bug was already fixed in current master FFmpeg, and thanks for discovering this bug go to FRANKIEonPC.
- All color metadata is now set for encoders that support this, such as NVENC. Video players and editors that support this kind of metadata should see an improvement in color quality, especially with 10-bit or higher output.
- Framerate is now set to be fixed, further improving compatibility with players. It was previously left to be guessed by the video player through the timing information.
- Settings are now output to the log file for easier debugging. Please remember to send a log file with any issue you have with the plugin.