Software Very Fast Vs Hardware High Quality Obs

The question we all want to know is:

What encoder and which encoder setting should I use for streaming/for recording?

and:

If I use a hardware encoder, does the quality suffer?

In that location are so many configuration options and in that location is and so many unlike hardware available, so this is always very difficult to answer.

And so I made a autohotkey script and created recordings of literally every combination of every encoder setting. Then I compared the quality of the resulting videos to the original lossless recording. The first level of comparing was made with ffmpeg (method see down below).

This is the result for OBS elementary settings for streaming. I did the tests on 2 machines:

- i5-3570k with GTX 670 (QSV_IvyBridge with NVENC_Kepler)
- i7-6700k with GTX 1070 (QSV_Skylake with NVENC_Pascal)
- [no AMD-VCE, since I don't ain ane.] run across mail service #25 for a comparing that includes VCE

Bitrates tested: 2000, 2500, 3500
Resolutions tested: 1280x720 (xxx and sixty fps), 1920x1080 (xxx fps)

The report only includes the ane preset that gives the best quality for each encoder. This was done to non clutter the report with settings i volition non use anyway. Notwithstanding, I tested all presets (for example for NVENC such equally: "Depression-Latency", "Low-Latency Loftier Performance").

stream encoder comparison 1280x720 30fps 60fps.png

stream encoder comparison 1920x1080 30fps.png

Excel-Canvass

From this computer-generated rating with mainly the mse as criteria, you may come to the conclusion that NVENC is on par with x264 preset=veryfast (the default in OBS), or even a fleck better, but unfortunately it isn't. At least for high motion scenes.

Download the bitrate 2500 x264 and nvenc video and compare them with your eyes, and you will see more details in the 2nd half of the video with x264 than with NVENC. I was mislead by the mse numbers myself, simply I cannot deny the x264 video definitely shows a fleck more more than detail in high movement parts. Depression motion looks the same with both.

All the same correct is the ordering of NVENC and Quicksync: NVENC provides better visual quality than Quicksync. Quicksync on Skylake is better than on IvyBridge, only NVENC is however a bit ameliorate than both.

So I recommend the encoders in this order:

  1. if your computer is able to encode x264 preset=veryfast or meliorate while running your game, employ this. This will interfere with your game and your stream, if your CPU is not powerful enough. But desktop i5 and i7 processors are probably able to encode better than veryfast while a CPU-demanding game is run in parallel.
  2. if you lot accept NVENC bachelor, employ NVENC with preset=highquality. This will not interfere with your game at all.
  3. if yous have Quicksync available, apply Quicksync with preset=balanced. This volition not interfere with your game at all.
  4. don't employ x264 preset=superfast or ultrafast for streaming, as they produce manner worse output than even Quicksync.

rating:

x264 faster = 80/100
x264 veryfast = 75/100
nvenc highquality = 70/100
quicksync balanced = 60/100
x264 superfast = 40/100
x264 ultrafast = 30/100​

***​

You lot tin download the encoded videos here and do a visual comparing yourself:

http://www.wombaz.de/uploads/2016/11/obs-codec-test/

A user-friendly table for visual comparison between codecs is in this post:
https://obsproject.com/forum/posts/252221

If you lot do all-encompassing visual comparison, delight don't watch the videos though the browser but practice a "Salve equally" and download them to your disk. So watch them with your media player locally.
In the directories included are "analyis2.txt" files, which contain the car-generated ratings from every unmarried test.

***​

The method:

  • I created a 2 minute long reference video of my favorite game. 2560x1440p60 lossless recording with OBS (unproblematic output way->"Lossless Quality, Tremendously Large File Size"). The video includes 2 low movement scenes and 2 high motion scenes, each nigh the same length.
  • for the test of 1280x720p30 create a 1280x720p30 reference video by downscaling the original reference video to 1280x720p30 with ffmpeg. Output codec again lossless (video codec utvideo, aforementioned every bit OBS uses)
  • selection 2 reference frames, 1 from near the start of the video and one from near the end. Record the frame numbers.
  • in OBS, create a new scene with one vlc video source and add the 1280x720p30 reference video
  • In OBS, prepare base and output resolution to 1280x720 and frame charge per unit to thirty
  • at present create a agglomeration of recordings of the reference video by permutating every output setting. A autohotkey script was used for this.

Perform the side by side steps with each video:

  • search for the 2 reference frames and record the frame numbers. This is done with ffmpeg and the psnr filter.
  • to meet by how many frames the recorded video is shifted in relation to the reference video, get the difference betwixt the frame numbers of the high movement reference frame. For example, if the reference frame is number 2400 in the reference video but 2420 in the recorded video, the recorded video is offset by 20 frames and whatsoever frame-by-frame comparison must start these 20 frames after.
  • compare the reference video and the recorded video and accept the offset into business relationship. "compare" means use the psnr filter of ffmpeg. Salve the psnr statistics file. This style, each original frame is compared with its respective encoded frame and we make up one's mind the mse ("mean foursquare fault") of each frame. The lower the mse, the meliorate the encoded frame. The improve the mse of all frames of a video, the better is the quality of a video.

After processing of all videos:

  • now we have all mse comparisons. For each video, we accept a list of the mse of all frames of this video.
  • To order our videos by quality, compare the mse list of each video with the mse list of each other video.
  • a comparison of two videos looks similar this: for each pair of frames (one frame from video 1 and 1 frame from video 2), look which has lower mse. Count the frames which have lower mse. The video that has more than frames with lower mse is declared "ameliorate" than the other video.
  • by using the this comparison method, it is possible to sort all videos by some sort of visual quality. Information technology doesn't sort by boilerplate mse of each video but by answering the question: "which video has more than frames that are meliorate than the rest of the videos?"

***​

I besides fabricated recordings with advanced settings. But the analysis is extremely difficult to translate, because videos with varying encoding quality (x264 with crf, Quicksync with icq) inherently score worse than videos with abiding quality (CQP with hardware encoders), although they don't await worse to the eyes of a human.

But even with bitrate-based streams, the comparison method can only be a rough guess. The truthful guess can only be the human middle. For instance, in some other thread, I falsely claimed NVENC is improve than x264, considering the mse comparison said this (I apologize, @Harold). For quality-based recordings it is even more difficult - I am really lost here.

I would like to make a guide/resource from this, but how extensive should that be? Information technology could be as brusk every bit "x264 > nvenc > quicksync" and every bit long every bit this post.

0 Response to "Software Very Fast Vs Hardware High Quality Obs"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel