[TW: tweaker] Ideal settings for high framerate first-person shooter streaming

tyo_streams

New Member
Hey everyone! I've spent the last week reading `x264 --fullhelp` as well as various wikis and blogs, and would like to post here as a final assurance to myself that I've done my best. Here is my situation:

- Ryzen 3600 CPU
- Halo Infinite streamer
- 120fps enthusiast

As you can see, my love of slow-motion footage review is at odds with my paltry budget, and it's simply impossible for me to stream 120fps@6kbps on any preset with acceptable quality. So, I have delved into the tweakers realm and fiddled with every option I could get my hands on. Now, I'd like to determine which setting choices have benefitted me, and which have served only to bloat my config. Here are the custom settings I'm using, sorted by my understanding of their importance:

OBS options
- Downscale game source from 1080p to 540p (Lanczos, applied directly to the Game Source)
- Default (veryfast) preset
- Bitrate: 6000 (send as much as Twitch will accept to allow better quality with faster settings)
- Custom buffer size: 4500 (use a smaller buffer to make decoding easier, unsure about this and only matters if Twitch doesn't provide transcode)
- Keyframe interval: 2 (no idea here)
- Profile: Main (I've read that some mobile devices can't support "high")

x264 options
- no-psy=1 (likely has no effect due to subme=1, but --fullhelp states it disables some features inaccessible by CLI flags)
- no-mbtree=1 (spend more bitrate to get faster encoding speed)
- no-weightb=1 (don't think too hard about b-frames, for encoding speed)
- weightp=0 (not sure, but the fastest presets have it)
- bframes=1 (spend more bitrate for faster encoding speed, I think)
- rc-lookahead=120 (smooth out delivered bitrate by looking a full second ahead)
- sync-lookahead=120 (ditto above, but my assumption is that this introduces a 1s delay)
- vbv-maxrate=6000 (along with CRF, target Twitch's max bitrate)
- vbv-bufsize=12000 (2 seconds of buffer, I think I've misunderstood this after further reading)
- crf=19 (it's a video game, the quality should be roughly the same for every frame to avoid distracting quality gradients)
- deblock=1:-3 (scoreboard text and killfeed text has many artifacts)
- subme=1 (encoding speed)
- merange=4 (encoding speed)
- me=dia (encoding speed)
- no-chroma-me=1 (encoding speed)
- direct=spatial (encoding speed, I hope)
- aq-strength=0.7 (same story with in-game text being the most impacted)
- threads=12 (6-core, 12 thread processor)
- analyse=none (encoding speed)
- level=4.1 (correctly marking the content, I hope)

Phew! If you've read this far, thanks already. If anything stands out as egregiously bad or useless, please let me know! These are my goals in priority order:

- 120fps with 0 dropped frames or any sensation of skipping from frame to frame (achieved)
- No obvious blocking during high motion (achieved)
- Legible text
- No mosquito noise surrounding the crosshair

Here is an example from my latest stream, yesterday: https://www.twitch.tv/videos/1549689834?t=0h22m18s

As I went to make a clip for this post, I discovered that something about my settings is giving Twitch heartburn when it comes to clipping, so if the reason for that stands out I'd love advice on that as well - "This video is either unavailable or not supported in this browser. (Error #4000)"
 

Attachments

  • 1659476133209.png
    1659476133209.png
    11.9 KB · Views: 27

tyo_streams

New Member
Can't edit the original post now, but realized I said I'd organize the options by importance and they're actually in random order.
 
Top