Question / Help New to Streaming - Pixelation

smoky89

New Member
Hi,

I'm new in the world of streaming, I did some tests on arma 3 and i have problems with pixelation. Here is my setup, thank you to tell me if I need to change some things.



Code:
13:07:34: Open Broadcaster Software v0.571b - 32bit (´・ω・`)
13:07:34: -------------------------------
13:07:34: CPU Name: Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz
13:07:34: CPU Speed: 3201MHz
13:07:34: Physical Memory:  4095MB Total, 4095MB Free
13:07:34: stepping id: 6, model 13, family 6, type 0, extmodel 1, extfamily 0, HTT 1, logical cores 12, total cores 6
13:07:34: monitor 1: pos={-1280, 56}, size={1280, 1024}
13:07:34: monitor 2: pos={0, 0}, size={1920, 1080}
13:07:34: Windows Version: 6.1 Build 7601 S
13:07:34: Aero is Disabled
13:07:34: -------------------------------
13:07:34: OBS Modules:
13:07:34: Base Address     Module
13:07:34: 013A0000         OBS.exe
13:07:34: 67920000         OBSApi.dll
13:07:34: 712E0000         DShowPlugin.dll
13:07:34: 74300000         GraphicsCapture.dll
13:07:34: 73670000         NoiseGate.dll
13:07:34: 71900000         PSVPlugin.dll
13:07:34: ------------------------------------------
13:07:34: Adapter 1
13:07:34:   Video Adapter: NVIDIA GeForce GTX 680
13:07:34:   Video Adapter Dedicated Video Memory: 3221225472
13:07:34:   Video Adapter Shared System Memory: 1073676288
13:07:34: =====Stream Start: 2013-10-01, 13:07:34===============================================
13:07:34:   Multithreaded optimizations: On
13:07:34:   Base resolution: 1920x1080
13:07:34:   Output resolution: 1280x720
13:07:34: ------------------------------------------
13:07:34: Loading up D3D10 on NVIDIA GeForce GTX 680...
13:07:34: ------------------------------------------
13:07:34: Audio Format: 48000hz
13:07:34: Playback device Default
13:07:34: ------------------------------------------
13:07:34: Using desktop audio input: Haut-parleurs (Périphérique High Definition Audio)
13:07:34: ------------------------------------------
13:07:34: Using auxilary audio input: Microphone (Pro for Notebooks)
13:07:34: ------------------------------------------
13:07:34: Audio Encoding: AAC
13:07:34:     bitrate: 128
13:07:34: Using graphics capture
13:07:34: ------------------------------------------
13:07:34: Video Encoding: x264
13:07:34:     fps: 60
13:07:34:     width: 1280, height: 720
13:07:34:     preset: veryfast
13:07:34:     profile: high
13:07:34:     keyint: 120
13:07:34:     CBR: yes
13:07:34:     CFR: yes
13:07:34:     max bitrate: 3500
13:07:34:     buffer size: 3500
13:07:34: ------------------------------------------
13:07:34: MMDeviceAudioSource: Frequency for device 'Haut-parleurs (Périphérique High Definition Audio)' is 352800, samples per sec is 44100
13:07:34: MMDeviceAudioSource: Frequency for device 'Microphone (Pro for Notebooks)' is 64000, samples per sec is 16000
13:07:36: Using RTMP service: Twitch / Justin.tv
13:07:36:   Server selection: rtmp://live-fra.justin.tv/app
13:07:36:   Interface: Intel(R) 82579V Gigabit Network Connection (ethernet, 1000 mbps)
13:07:37: Completed handshake with rtmp://live-fra.justin.tv/app in 506 ms.
13:07:38: SO_SNDBUF was at 8192
13:07:38: SO_SNDBUF is now 65536
13:07:44: SharedTexCapture hooked
13:08:12: Total frames encoded: 2221, total frames duplicated: 87 (3.92%)
13:08:12: Total frames rendered: 2163, number of late frames: 8 (0.37%) (it's okay for some frames to be late)
13:08:12: RTMPPublisher::SocketLoop: Graceful loop exit
13:08:12: Average send payload: 7694 bytes, average send interval: 16 ms
13:08:12: Number of times waited to send: 0, Waited for a total of 0 bytes
13:08:12: Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
13:08:12: Number of bytes sent: 15381703
13:08:12: 
13:08:12: Profiler time results:
13:08:12: 
13:08:12: ==============================================================
13:08:12: video thread frame - [100%] [avg time: 1.02 ms] [children: 0.098%] [unaccounted: 99.9%]
13:08:12: | scene->Preprocess - [0.098%] [avg time: 0.001 ms]
13:08:12: GPU download and conversion - [100%] [avg time: 0.27 ms] [children: 45.6%] [unaccounted: 54.4%]
13:08:12: | flush - [38.9%] [avg time: 0.105 ms]
13:08:12: | CopyResource - [4.81%] [avg time: 0.013 ms]
13:08:12: | conversion to 4:2:0 - [1.85%] [avg time: 0.005 ms]
13:08:12: Convert444Threads - [100%] [avg time: 0.219 ms] [children: 97.7%] [unaccounted: 2.28%]
13:08:12: | Convert444toNV12 - [97.7%] [avg time: 0.214 ms]
13:08:12: encoder thread frame - [100%] [avg time: 0.892 ms]
13:08:12: ==============================================================
13:08:12: 
13:08:12: 
13:08:12: Profiler CPU results:
13:08:12: 
13:08:12: ==============================================================
13:08:12: video thread frame - [cpu time: avg 0.064 ms, total 140.401 ms] [avg calls per frame: 1]
13:08:12: | scene->Preprocess - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
13:08:12: GPU download and conversion - [cpu time: avg 0.028 ms, total 62.4 ms] [avg calls per frame: 1]
13:08:12: | flush - [cpu time: avg 0.021 ms, total 46.8 ms] [avg calls per frame: 1]
13:08:12: | CopyResource - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
13:08:12: | conversion to 4:2:0 - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
13:08:12: Convert444Threads - [cpu time: avg 0.151 ms, total 1279.21 ms] [avg calls per frame: 4]
13:08:12: | Convert444toNV12 - [cpu time: avg 0.151 ms, total 1279.21 ms] [avg calls per frame: 4]
13:08:12: encoder thread frame - [cpu time: avg 0.071 ms, total 156.001 ms] [avg calls per frame: 1]
13:08:12: ==============================================================
13:08:12: 
13:08:12: =====Stream End: 2013-10-01, 13:08:12=================================================
 

Krazy

Town drunk
That's about as good as you're going to get with a high motion FPS without bumping up bitrate to extreme levels. I recommend lowering to 48fps to get more bits per frame, and/or perhaps lowering preset to Faster or Fast (you DO have a 3930k, after all). Do keep in mind that lowering preset won't make a gigantic amount of difference.

In the end, livestreaming comes with some compromises. High motion FPS games are generally just very difficult to encode in real time because of all the movement, so eliminate pixelation entirely is a pointless pursuit.
 

vaesauce

Member
ARMA 3 is very much like ARMA 2 in terms of pixelation. After about 4 months of trying to figure out how i can improve the quality without it pixelating, I finally found a decent stream setting.

The only real way you're going to improve or reduce pixelation is with birate. Reducing the FPS will help and the lowering the presets will help also but not as significant as the Bitrate.

If you need any help, send me a PM.
 

ExitSign

Member
To reduce pixelation / macro block artifacts, some advanced x264 settings can be used.

Note though, that for novice user the easiest way to get better quality without raising bitrate is choosing a slower preset.

So for the advanced settings:

me=hex subme=6 partitions=all 8x8dct=1

me= dia/hex/umh
subme=1-9

Where dia is fastest and umh gives best quality. Also, subme of 1 is fastest, 9 gives best quality.

Try to find the right balance between quality and encoding speed. For me it was hex/6

Although I have moved away from streaming 1080p/30fps for PlanetSide to 720p/60fps. Viewers said this gave the best viewing experience.
 

Krazy

Town drunk
hex is default on veryfast and below, and subme actually goes up to 11 (not a joke!)

The subme setting will definitely make a difference, but it's also the "heaviest" of the options mentioned. Personally, I've never noticed much difference with any of the partitions settings, but your mileage may vary.
 

ExitSign

Member
yeah I know about subme to 11. Also me setting has more then just dia/hex/umh
but above 9 or anything other then dia/hex/umh is not usable for streaming, that's why I didn't mention ;-)
 

vaesauce

Member
Subme of 9 to 11 has almost zero difference in terms of quality from what I've researched.

Your best bet is to set Subme to 6 so that it activates RDO, this is where you'll notice a quality jump in motion scenes. Any higher and you'll probably experience sluggish gameplay. You've got a 3930K so you could probably push 7 or 8.

Very little quality bump too but you could also set your Bframes to 16, as long as you're using b-adapt=1, there is no point in using bframes=3. x264 will probably never use up to 16 and will place as many bframes down as it needs but setting it to 16 makes sure that it won't fall short.

If you've got the memory, rc-lookahead and ref also make a pretty good difference. It's all minimal but when all put together it's very noticeable.

Exampe. ( Excuse the FPS choppiness, server needed a restart badly o_O )

MOVING:
Just to show you how pixelated it is, this was the most pixelation reduction I could get it to given the Custom settings I used and bitrate
http://www.twitch.tv/vaesauce/c/3020211


STATIONARY:
This is sitting still with only camera movement (Ignore our conversations lulz), it's just about as clear as one can get it.
http://www.twitch.tv/vaesauce/c/3013787

Overall, if you look at Video #1, when running, you can clearly tell it's pixelating especially in the Chat and especially when the RED server font comes up. None the less, ARMA 3 suffers from the same pixelation/streaming combo that ARMA 2 suffers from. Obviously though, you're always gonna pixelate, reduction is the only option that is available when streaming :P. I just reinstalled my OS and wiped my hard drives, i'll reinstall ARMA 3 and make a demo for that too.
 
Top