Steam Link

Steam Link

TGolias94 Jan 18, 2021 @ 3:41pm
[Bug?] Steam Link with RTX 3090 incapable of 4K 60FPS on NVidia Shield?
I just was fortunate enough to land myself a 3090 and am trying to stream at 4K 60FPS using the steam link app on the NVidia shield.

It captures at 3840x2160, but ~@40 on average and I'm not sure if it ever fully hit 60.

Is it even possible with the Steam Link app currently?

I don't see any "Slow Encode" or "Slow Decode" or "Slow Network" or anything like that.

Even when just sitting on my desktop not doing anything complicated over the steam link, it struggles to get over 50.

One thing to note is that my NVidia shield is plugged into ethernet, and I have gigabit from that to the router, and from the router all the way to my computer, so I wouldn't think the network would be the determining factor here.

I've also tried flipping options on and off in every permutation I can think of (HEVC on the client, NVFBC and Hardware Encoding on the host for example) and still can't get my 60 frames.

Another thing to note, is that I've also tried NVidia GameStream, and that works perfect at 4K 60FPS, but I would prefer to use the Steam Link app if I could because they have full PS4 controller support (It's silly but I'd like me that Vibration and PS button prompts) plus the PS button brings up the overlay as opposed to GameStream just closing out of everything, which is just terrible.

If anyone could let me know could think of a current bug or let me know if they're still working on getting 4k 60FPS to work properly, that'd give me piece of mind, I just hope to be able to use this app again one day and get me some 4k 60FPS goodness.

If anyone out there IS able to run the Steam Link app at 4K 60FPS, please let me know what your PC specs are / what your client is / your configuration is.

Also, if anyone has any suggestions on configuration, to get this to work (or knows of some super secret configurations I could tamper with) I'm all game!

Here's my log file in case anyone notices anything that seems to be limiting me.

[2021-01-18 15:55:24] Streaming started to NVIDIA SHIELD Android TV Android 9 at 192.168.50.134:33727, audio channels = 2, MTU = 1468 [2021-01-18 15:55:24] Streaming quality: k_EStreamQualityBeautiful [2021-01-18 15:55:24] Streaming bitrate: Unlimited [2021-01-18 15:55:24] Device form factor: TV [2021-01-18 15:55:24] Maximum capture: 3840x2160 59.75 FPS [2021-01-18 15:55:24] Video Streaming: enabled [2021-01-18 15:55:24] Audio Streaming: enabled [2021-01-18 15:55:24] Input Streaming: enabled [2021-01-18 15:55:24] ===================================================================== [2021-01-18 15:55:24] Game: UNKNOWN (0) [2021-01-18 15:55:24] Setting target bitrate to 100000 Kbit/s, burst bitrate is 500000 Kbit/s [2021-01-18 15:55:24] Changing record window: 00030612 [2021-01-18 15:55:24] CDesktopCaptureDWM: Reinitializing D3D for adapter 0xb96f [2021-01-18 15:55:24] Video adapter: NVIDIA GeForce RTX 3090, vendor ID: 0x10de, device ID: 0x2204 [2021-01-18 15:55:24] Recording system audio [2021-01-18 15:55:24] Recording on device: Headphones (High Definition Audio Device) [2021-01-18 15:55:24] Audio client mix format: [2021-01-18 15:55:24] format: 65534 [2021-01-18 15:55:24] channels: 2 [2021-01-18 15:55:24] samples/sec: 48000 [2021-01-18 15:55:24] bytes/sec: 384000 [2021-01-18 15:55:24] alignment: 8 [2021-01-18 15:55:24] bits/sample: 32 [2021-01-18 15:55:24] channel mask: 0x3 [2021-01-18 15:55:24] data format: {00000003-0000-0010-8000-00AA00389B71} [2021-01-18 15:55:24] Initializing audio with 2 channels and 48000 samples/sec [2021-01-18 15:55:24] CDesktopCaptureDWM: desktop duplication enabled [2021-01-18 15:55:24] CLIENT: Sending HID device 054c/0ba0/3 Sony Interactive Entertainment DUALSHOCK®4 USB Wireless Adaptor at /dev/bus/usb/001/025/54c/ba0/5 [2021-01-18 15:55:24] CLIENT: Sending HID device 054c/0ba0/-1 Sony Interactive Entertainment DUALSHOCK®4 USB Wireless Adaptor at sdl://2 [2021-01-18 15:55:24] CLIENT: Got control packet k_EStreamControlSetQoS [2021-01-18 15:55:24] CLIENT: Got control packet k_EStreamControlSetTargetBitrate [2021-01-18 15:55:24] CLIENT: Starting audio stream: frequency=48000, channels=2 [2021-01-18 15:55:24] CLIENT: Opened audio device: format=2, channels=2, frequency=48000 [2021-01-18 15:55:24] CLIENT: Initialized audio decoder: codec=3, sample rate=48000, channels=2 [2021-01-18 15:55:24] CLIENT: Got control packet k_EStreamControlStartAudioData [2021-01-18 15:55:24] CLIENT: Got control packet k_EStreamControlSetSpectatorMode [2021-01-18 15:55:24] CLIENT: Got control packet k_EStreamControlSetCaptureSize [2021-01-18 15:55:24] CLIENT: Got control packet k_EStreamControlSetTitle [2021-01-18 15:55:24] CLIENT: Got control packet k_EStreamControlSetIcon [2021-01-18 15:55:24] CLIENT: Got control packet k_EStreamControlSetCursor [2021-01-18 15:55:24] CLIENT: Got control packet k_EStreamControlSetKeymap [2021-01-18 15:55:24] CLIENT: Got control packet k_EStreamControlSetActivity [2021-01-18 15:55:24] >>> Switching video stream from NONE to Desktop_MovieStream [2021-01-18 15:55:24] Audio mix: start=2609957863, returned=0 [2021-01-18 15:55:24] Audio source [System Windows]: init=0, through=0, last_start=0, mixed=0, drop_before=0, drop_after=0 [2021-01-18 15:55:24] >>> Capture method set to Desktop DWM NV12 + NVENC HEVC [2021-01-18 15:55:24] >>> Capture resolution set to 3840x2160 [2021-01-18 15:55:24] >>> Client video decoder set to Android surface hardware decoding [2021-01-18 15:55:24] CLIENT: Android surface hardware decoding [2021-01-18 15:55:24] CLIENT: Got control packet k_EStreamControlStartVideoData [2021-01-18 15:55:24] CLIENT: Got control packet k_EStreamControlVideoEncoderInfo [2021-01-18 15:55:24] CLIENT: Video rect: 1920x1080 at 0,0 [2021-01-18 15:55:24] CLIENT: Texture rect: 1920x1080 at 0,0 [2021-01-18 15:55:24] CLIENT: Video size: 1920x1080, output size: 1920x1080, overlay size: 1280x256 [2021-01-18 15:55:24] CLIENT: Video rect: 1920x1080 at 0,0 [2021-01-18 15:55:24] CLIENT: Texture rect: 1920x1080 at 0,0 [2021-01-18 15:55:24] CLIENT: Video rect: 1920x1080 at 0,0 [2021-01-18 15:55:24] CLIENT: Texture rect: 1920x1080 at 0,0 [2021-01-18 15:55:24] CLIENT: Video rect: 1920x1080 at 0,0 [2021-01-18 15:55:24] CLIENT: Texture rect: 3840x2160 at 0,0 [2021-01-18 15:55:24] CLIENT: Video size: 3840x2160, output size: 1920x1080, overlay size: 1280x256 [2021-01-18 15:55:24] CLIENT: Video rect: 1920x1080 at 0,0 [2021-01-18 15:55:24] CLIENT: Texture rect: 3840x2160 at 0,0 [2021-01-18 15:55:24] CLIENT: Video rect: 1920x1080 at 0,0 [2021-01-18 15:55:24] CLIENT: Texture rect: 3840x2160 at 0,0 [2021-01-18 15:55:25] Setting target framerate: 59.75 [timing: game 10.00, capture 1.66, convert 1.49, encode 19.43, network -0.60, decode 0.44, display 96683.80 (display)] [2021-01-18 15:55:25] CLIENT: Targeting 29.88 FPS [2021-01-18 15:55:25] CLIENT: Got control packet k_EStreamControlSetTargetFramerate [2021-01-18 15:55:26] Setting target framerate: 29.88 [timing: game 10.00, capture 1.43, convert 0.04, encode 16.68, network -3.55, decode 0.31, display 1.75] [2021-01-18 15:55:29] CLIENT: Sending HID device 054c/0ba0/3 Sony Interactive Entertainment DUALSHOCK®4 USB Wireless Adaptor at /dev/bus/usb/001/025/54c/ba0/5 [2021-01-18 15:55:29] CLIENT: Targeting 59.75 FPS [2021-01-18 15:55:29] CLIENT: Got control packet k_EStreamControlSetTargetFramerate [2021-01-18 15:55:29] CLIENT: Flushing audio, 1430 ms queued, 132 ms maximum, delivery delay = 16 [2021-01-18 15:55:29] CLIENT: Flushing audio, 1430 ms queued, 136 ms maximum, delivery delay = 18 [2021-01-18 15:55:29] CLIENT: Got control packet k_EStreamControlSetCursor [2021-01-18 15:55:29] CLIENT: Got control packet k_EStreamControlSetCursor [2021-01-18 15:55:34] Setting target framerate: 59.75 [timing: game 10.00, capture 2.86, convert 0.04, encode 19.36, network 0.13, decode 0.43, display 2.13] [2021-01-18 15:55:34] CLIENT: Targeting 29.88 FPS [2021-01-18 15:55:34] CLIENT: Got control packet k_EStreamControlSetTargetFramerate [2021-01-18 15:55:35] Setting target framerate: 29.88 [timing: game 10.00, capture 1.73, convert 0.04, encode 16.16, network 0.44, decode 0.42, display 1.66] [2021-01-18 15:55:35] CLIENT: Targeting 59.75 FPS [2021-01-18 15:55:35] CLIENT: Got control packet k_EStreamControlSetTargetFramerate [2021-01-18 15:55:40] Setting target framerate: 59.75 [timing: game 10.00, capture 3.11, convert 0.04, encode 19.16, network 0.34, decode 0.46, display 3.55] [2021-01-18 15:55:40] CLIENT: Targeting 29.88 FPS [2021-01-18 15:55:40] CLIENT: Got control packet k_EStreamControlSetTargetFramerate [2021-01-18 15:55:41] Setting target framerate: 29.88 [timing: game 10.00, capture 1.19, convert 0.03, encode 15.42, network 0.75, decode 0.44, display 1.70] [2021-01-18 15:55:41] CLIENT: Targeting 59.75 FPS [2021-01-18 15:55:41] CLIENT: Got control packet k_EStreamControlSetTargetFramerate [2021-01-18 15:55:46] Setting target framerate: 59.75 [timing: game 10.00, capture 4.11, convert 0.04, encode 19.24, network 0.33, decode 0.42, display 2.47] [2021-01-18 15:55:46] CLIENT: Targeting 29.88 FPS [2021-01-18 15:55:46] CLIENT: Got control packet k_EStreamControlSetTargetFramerate [2021-01-18 15:55:47] Setting target framerate: 29.88 [timing: game 10.00, capture 1.20, convert 0.04, encode 15.56, network 0.61, decode 0.40, display 1.69] [2021-01-18 15:55:47] CLIENT: Targeting 59.75 FPS [2021-01-18 15:55:47] CLIENT: Got control packet k_EStreamControlSetTargetFramerate [2021-01-18 15:55:52] Setting target framerate: 59.75 [timing: game 10.00, capture 2.68, convert 0.03, encode 19.14, network 0.05, decode 0.44, display 3.53] [2021-01-18 15:55:52] CLIENT: Targeting 29.88 FPS [2021-01-18 15:55:52] CLIENT: Got control packet k_EStreamControlSetTargetFramerate [2021-01-18 15:55:53] Setting target framerate: 29.88 [timing: game 10.00, capture 1.34, convert 0.04, encode 15.76, network 0.80, decode 0.55, display 1.92] [2021-01-18 15:55:53] CLIENT: Targeting 59.75 FPS [2021-01-18 15:55:53] CLIENT: Got control packet k_EStreamControlSetTargetFramerate [2021-01-18 15:55:58] Setting target framerate: 59.75 [timing: game 10.00, capture 2.83, convert 0.04, encode 19.08, network 0.46, decode 0.47, display 1.78] [2021-01-18 15:55:58] CLIENT: Targeting 29.88 FPS [2021-01-18 15:55:58] CLIENT: Got control packet k_EStreamControlSetTargetFramerate [2021-01-18 15:55:59] Setting target framerate: 29.88 [timing: game 10.00, capture 1.32, convert 0.04, encode 15.86, network 0.88, decode 0.45, display 1.60] [2021-01-18 15:55:59] CLIENT: Targeting 59.75 FPS [2021-01-18 15:55:59] CLIENT: Got control packet k_EStreamControlSetTargetFramerate [2021-01-18 15:56:01] CLIENT: Flushing audio, 110 ms queued, 100 ms maximum, delivery delay = 0 [2021-01-18 15:56:01] Changing record window: 00170626 [2021-01-18 15:56:01] "SessionStats" { "ClientDeviceID" "NVIDIA SHIELD Android TV" "ClientDeviceVersionID" "Android 9" "GameNameID" "Desktop" "appid" "413080" "TimeSubmitted" "1611003361" "ResolutionX" "3840" "ResolutionY" "2160" "CaptureDescriptionID" "Desktop DWM NV12 + NVENC HEVC" "DecoderDescriptionID" "Android surface hardware decoding" "BandwidthLimit" "100000" "FramerateLimit" "0" "Transport" "1" "SlowGamePercent" "0" "SlowCapturePercent" "0" "SlowConvertPercent" "0" "SlowEncodePercent" "0" "SlowNetworkPercent" "0" "SlowDecodePercent" "0" "SlowDisplayPercent" "0" "AvgClientBitrate" "266.364593505859375" "StdDevClientBitrate" "621.018798828125" "AvgServerBitrate" "27935.828125" "StdDevServerBitrate" "0" "AvgLinkBandwidth" "100000.0078125" "AvgPingMS" "0.000871930911671370268" "StdDevPingMS" "0.00359350768849253654" "AvgCaptureMS" "2.77967453002929688" "StdDevCaptureMS" "2.82175135612487793" "AvgConvertMS" "0.0625863894820213318" "StdDevConvertMS" "1.04382514953613281" "AvgEncodeMS" "18.5990676879882813" "StdDevEncodeMS" "2.31823968887329102" "AvgNetworkMS" "0.210731580853462219" "StdDevNetworkMS" "1.43311178684234619" "AvgDecodeMS" "0.446634083986282349" "StdDevDecodeMS" "0.28018873929977417" "AvgDisplayMS" "1738.0159912109375" "StdDevDisplayMS" "67310.03125" "AvgFrameMS" "46.6261825561523438" "StdDevFrameMS" "5.07509469985961914" "AvgFPS" "49.8720703125" "StdDevFPS" "16.6475543975830078" "BigPicture" "0" "KeyboardMouseInput" "0" "SteamControllerInput" "0" "TouchControllerInput" "0" "GameControllerInput" "1" "XBox360ControllerInput" "0" "XBoxOneControllerInput" "0" "PS3ControllerInput" "0" "PS4ControllerInput" "1" "OtherControllerInput" "0" "GameControllerVID" "1356" "GameControllerPID" "2976" "WasSpectating" "0" "RemotePlayTogether" "0" }

After writing and looking at my log it seems to switch between 29.88 FPS and 59.75 FPS a whole bunch, sometime a few times in between a second. Does anyone know anything about this or maybe how to force 59.75 FPS? Is the fact that it keeps switching possibly the cause of my issue or is it likely just a symptom? If it is the cause it could possibly be a bug, I know a lot of people using the Steam Link don't use 4K.
< >
Showing 1-10 of 10 comments
slouken Jan 19, 2021 @ 8:53am 
Looking at the log, it's the 18 ms encode that's the culprit. Try reducing the bitrate. The higher the bitrate, the longer it takes to encode. Also, if you can't hit the target with HEVC, try H.264 instead.
TGolias94 Jan 22, 2021 @ 12:24pm 
Thanks for the response slouken! You really must know your stuff: turning HEVC off and bandwidth from unlimited to auto seems like it did the trick with a quick test I did last night, it looked like I was able to successfully get 60 fps. I honestly didn't realize that bandwidth could effect encode time, I thought it only affected network latency: I learned something new today: thank you!

As a stopgap before I you responded, I was using Moonlight + VirtualHere with my NVidia shield and that worked really well for me in the meantime, but hopefully now I can go back to Steam Link!

I plan on playing a bunch this weekend so I'll test it out then and report back after on how consistent it is / how it holds up compared to my (hopefully temporary) Moonlight + VirtualHere solution.
Last edited by TGolias94; Jan 22, 2021 @ 12:28pm
TGolias94 Jan 30, 2021 @ 2:34pm 
Sorry for the delayed response and double post.

Bad news: Although it was able to stream just my desktop fine at 4K 60FPS, the performance drops significantly when playing games.

This was the log from me playing "Control" with bitrate on Auto HEVC Off:
[2021-01-30 16:28:56] Streaming started to NVIDIA SHIELD Android TV Android 9 at 192.168.50.134:48558, audio channels = 2, MTU = 1468 [2021-01-30 16:28:56] Streaming quality: k_EStreamQualityBalanced [2021-01-30 16:28:56] Streaming bitrate: Automatic [2021-01-30 16:28:56] Device form factor: TV [2021-01-30 16:28:56] Maximum capture: 3840x2160 59.75 FPS [2021-01-30 16:28:56] Video Streaming: enabled [2021-01-30 16:28:56] Audio Streaming: enabled [2021-01-30 16:28:56] Input Streaming: enabled [2021-01-30 16:28:56] ===================================================================== [2021-01-30 16:28:56] Game: UNKNOWN (0) [2021-01-30 16:28:56] Setting target bitrate to 15000 Kbit/s, burst bitrate is 75000 Kbit/s [2021-01-30 16:28:56] Recording system audio [2021-01-30 16:28:56] Recording on device: Headphones (High Definition Audio Device) [2021-01-30 16:28:56] CLIENT: Detected USB device 0x054c 0x0ba0, Sony Interactive Entertainment DUALSHOCK®4 USB Wireless Adaptor at address 1005 [2021-01-30 16:28:56] CLIENT: Sending HID device 054c/0ba0/3 Sony Interactive Entertainment DUALSHOCK®4 USB Wireless Adaptor at /dev/bus/usb/001/005/54c/ba0/5 [2021-01-30 16:28:56] CLIENT: Got control packet k_EStreamControlSetQoS [2021-01-30 16:28:56] Audio client mix format: [2021-01-30 16:28:56] format: 65534 [2021-01-30 16:28:56] channels: 2 [2021-01-30 16:28:56] samples/sec: 48000 [2021-01-30 16:28:56] bytes/sec: 384000 [2021-01-30 16:28:56] alignment: 8 [2021-01-30 16:28:56] bits/sample: 32 [2021-01-30 16:28:56] channel mask: 0x3 [2021-01-30 16:28:56] data format: {00000003-0000-0010-8000-00AA00389B71} [2021-01-30 16:28:56] Initializing audio with 2 channels and 48000 samples/sec [2021-01-30 16:28:56] Audio mix: start=614983807118, returned=0 [2021-01-30 16:28:56] Audio source [System Windows]: init=0, through=0, last_start=0, mixed=0, drop_before=0, drop_after=0 [2021-01-30 16:28:57] >>> Switching video stream from NONE to GameOverlay_MovieStream_3592 [2021-01-30 16:28:57] CLIENT: Got control packet k_EStreamControlSetTargetBitrate [2021-01-30 16:28:57] CLIENT: Starting audio stream: frequency=48000, channels=2 [2021-01-30 16:28:57] CLIENT: Opened audio device: format=2, channels=2, frequency=48000 [2021-01-30 16:28:57] CLIENT: Initialized audio decoder: codec=3, sample rate=48000, channels=2 [2021-01-30 16:28:57] CLIENT: Got control packet k_EStreamControlStartAudioData [2021-01-30 16:28:57] CLIENT: Got control packet k_EStreamControlSetSpectatorMode [2021-01-30 16:28:57] CLIENT: Got control packet k_EStreamControlSetCaptureSize [2021-01-30 16:28:57] CLIENT: Got control packet k_EStreamControlSetTitle [2021-01-30 16:28:57] CLIENT: Got control packet k_EStreamControlSetIcon [2021-01-30 16:28:57] CLIENT: Got control packet k_EStreamControlHideCursor [2021-01-30 16:28:57] CLIENT: Got control packet k_EStreamControlSetKeymap [2021-01-30 16:28:57] CLIENT: Got control packet k_EStreamControlSetActivity [2021-01-30 16:28:57] >>> Capture method set to Game D3D12 RGB RGB + NVENC H264 [2021-01-30 16:28:57] >>> Capture resolution set to 3840x2160 [2021-01-30 16:28:57] >>> Client video decoder set to Android surface hardware decoding [2021-01-30 16:28:57] CLIENT: Android surface hardware decoding [2021-01-30 16:28:57] CLIENT: Got control packet k_EStreamControlStartVideoData [2021-01-30 16:28:57] CLIENT: Got control packet k_EStreamControlVideoEncoderInfo [2021-01-30 16:28:57] CLIENT: BPutInputFrame(): Resolution changed from 1920x1080 to 3840x2160, resetting decoder [2021-01-30 16:28:57] CLIENT: Marking frame 0 complete with status k_EStreamFrameResultDroppedReset [2021-01-30 16:28:57] CLIENT: Android surface hardware decoding [2021-01-30 16:28:57] CLIENT: Marking frame 1 complete with status k_EStreamFrameResultDroppedReset [2021-01-30 16:28:57] CLIENT: Video rect: 1920x1080 at 0,0 [2021-01-30 16:28:57] CLIENT: Texture rect: 3840x2160 at 0,0 [2021-01-30 16:28:57] CLIENT: Video size: 3840x2160, output size: 1920x1080, overlay size: 1280x256 [2021-01-30 16:28:57] CLIENT: Video rect: 1920x1080 at 0,0 [2021-01-30 16:28:57] CLIENT: Texture rect: 3840x2160 at 0,0 [2021-01-30 16:28:57] CLIENT: Video rect: 1920x1080 at 0,0 [2021-01-30 16:28:57] CLIENT: Texture rect: 3840x2160 at 0,0 [2021-01-30 16:28:57] Setting target framerate: 59.75 [timing: game 8.00, capture 37.07, convert 9.42, encode 23.80, network 2.95, decode 0.38, display 2516046.75 (capture) (display)] [2021-01-30 16:28:57] Setting target bitrate to 30000 Kbit/s, burst bitrate is 150000 Kbit/s [2021-01-30 16:28:57] CLIENT: Targeting 29.88 FPS [2021-01-30 16:28:57] CLIENT: Got control packet k_EStreamControlSetTargetFramerate [2021-01-30 16:28:57] CLIENT: Got control packet k_EStreamControlSetTargetBitrate [2021-01-30 16:28:58] Setting target framerate: 29.88 [timing: game 7.94, capture 34.59, convert 0.01, encode 24.79, network -0.86, decode 0.25, display 2.48 (capture)] [2021-01-30 16:28:58] CLIENT: Targeting 29.88 FPS [2021-01-30 16:28:58] CLIENT: Got control packet k_EStreamControlSetTargetFramerate [2021-01-30 16:29:04] Setting target framerate: 29.88 [timing: game 15.98, capture 25.38, convert 0.00, encode 20.65, network 3.72, decode 0.51, display 1.60] [2021-01-30 16:29:04] CLIENT: Targeting 29.88 FPS [2021-01-30 16:29:04] CLIENT: Got control packet k_EStreamControlSetTargetFramerate [2021-01-30 16:29:08] CLIENT: Got control packet k_EStreamControlOverlayEnabled [2021-01-30 16:29:18] "SessionStats" { "ClientDeviceID" "NVIDIA SHIELD Android TV" "ClientDeviceVersionID" "Android 9" "GameNameID" "Control Ultimate Edition" "appid" "870780" "TimeSubmitted" "1612042158" "ResolutionX" "3840" "ResolutionY" "2160" "CaptureDescriptionID" "Game D3D12 RGB RGB + NVENC H264" "DecoderDescriptionID" "Android surface hardware decoding" "BandwidthLimit" "30000" "FramerateLimit" "0" "Transport" "1" "SlowGamePercent" "0" "SlowCapturePercent" "27.2482433319091797" "SlowConvertPercent" "0" "SlowEncodePercent" "0" "SlowNetworkPercent" "0" "SlowDecodePercent" "0" "SlowDisplayPercent" "0" "AvgClientBitrate" "99.2266693115234375" "StdDevClientBitrate" "16.5764446258544922" "AvgServerBitrate" "8314.2880859375" "StdDevServerBitrate" "0" "AvgLinkBandwidth" "100000.0078125" "AvgPingMS" "0.0508626252412796021" "StdDevPingMS" "0.027009919285774231" "AvgCaptureMS" "29.9325485229492188" "StdDevCaptureMS" "4.47451543807983398" "AvgConvertMS" "0.217423245310783386" "StdDevConvertMS" "4.92454767227172852" "AvgEncodeMS" "26.93408203125" "StdDevEncodeMS" "4.90984773635864258" "AvgNetworkMS" "1.16888141632080078" "StdDevNetworkMS" "2.4478611946105957" "AvgDecodeMS" "0.389914423227310181" "StdDevDecodeMS" "0.126524925231933594" "AvgDisplayMS" "48017.890625" "StdDevDisplayMS" "1099138.375" "AvgFrameMS" "71.1389541625976563" "StdDevFrameMS" "7.40838527679443359" "AvgFPS" "26.5203933715820313" "StdDevFPS" "5.58346652984619141" "BigPicture" "1" "KeyboardMouseInput" "0" "SteamControllerInput" "0" "TouchControllerInput" "0" "GameControllerInput" "1" "XBox360ControllerInput" "0" "XBoxOneControllerInput" "0" "PS3ControllerInput" "0" "PS4ControllerInput" "1" "OtherControllerInput" "0" "GameControllerVID" "1356" "GameControllerPID" "2976" "WasSpectating" "0" "RemotePlayTogether" "0" }
It still drops to 30 FPS and can't even hold THAT stable.

I tried a bunch of different permutations to no avail:
- 5 Mbit/s HEVC OFF
- 30 Mbit/s HEVC OFF
- 50 Mbit/s HEVC OFF
- Auto Bitrate HEVC OFF
- Unlimited Bitrate HEVC OFF
- 5 Mbit/s HEVC ON
- 30 Mbit/s HEVC ON
- 50 Mbit/s HEVC ON
- Auto Bitrate HEVC ON
- Unlimited Bitrate HEVC ON

I couldn't even get 30 FPS at 4K...
Here's some video of Auto Bitrate HEVC OFF with Steam Link:
https://www.youtube.com/watch?v=opqKpa8qV2Y

And here's some video of me using Moonlight on the same system at a stable 4K 60FPS:
https://www.youtube.com/watch?v=nuNW91e2bGQ

At higher resolutions it seems that Moonlight is outperforming Steam Link at astronomical margins. I'm not sure if this is due to a bug in Steam Link, or some sort of black magic that they are using, but I know which one I will be using going forward.

I'm starting to believe that Steam Link isn't even capable of 4K 60 FPS, considering a my machine with 3090 isn't even capable of it. If anyone has video evidence to prove me wrong, I would love to see it.

I really hope Steam Link puts their efforts into improving and trying to match what Moonlight has been able to accomplish. I was a loyal Steam Link user for a long time and would love to use it again one day, but right now it is under performing compared to competitors.

If anyone has anything else they would like me to try toggling on either the host or the client, I am still game to try that as well.
JBD8438 Sep 5, 2021 @ 6:51am 
I also have a 3090 and I'm experiencing abysmal performance streaming at 4K with the bandwidth set to automatic. with PC and Shield TV on ethernet cable. When playing games like Control, my FPS is around 10. When I use Moonlight, I can easily achieve 4K at 60fps.

Is there any fix to improve Steam Link to have the superior performance of Moonlight.
slouken Sep 7, 2021 @ 9:03pm 
Originally posted by JBD8438:
I also have a 3090 and I'm experiencing abysmal performance streaming at 4K with the bandwidth set to automatic. with PC and Shield TV on ethernet cable. When playing games like Control, my FPS is around 10. When I use Moonlight, I can easily achieve 4K at 60fps.

Is there any fix to improve Steam Link to have the superior performance of Moonlight.

In the Remote Play settings on the computer you can enable NvFBC capture in the advanced host settings, which is what Moonlight uses. There are some problems with it, and it doesn't work for all games, which is why it's not enabled by default.
JBD8438 Sep 10, 2021 @ 7:44am 
I enabled NvFBC on my host computer but Control (using DX12) still streams at 9-18 FPS and I'm getting the "slow encode" message on my Steam Link app (Nvidia Shield).

[2021-09-10 09:49:49] >>> Capture resolution set to 3840x2160
[2021-09-10 09:49:49] Over 960 sample audio gap
[2021-09-10 09:49:50] CLIENT: Got control packet k_EStreamControlSetCaptureSize
[2021-09-10 09:49:50] CLIENT: BPutInputFrame(): Resolution changed from 1920x1080 to 3840x2160, resetting decoder
[2021-09-10 09:49:50] CLIENT: Marking frame 1902 complete with status k_EStreamFrameResultDroppedReset
[2021-09-10 09:49:50] CLIENT: Android surface hardware decoding
[2021-09-10 09:49:50] CLIENT: Marking frame 1903 complete with status k_EStreamFrameResultDroppedReset
[2021-09-10 09:49:50] CLIENT: Marking frame 1904 complete with status k_EStreamFrameResultDroppedLate
[2021-09-10 09:49:50] CLIENT: Video rect: 1920x1080 at 0,0
[2021-09-10 09:49:50] CLIENT: Texture rect: 3840x2160 at 0,0
[2021-09-10 09:49:50] CLIENT: Video size: 3840x2160, output size: 1920x1080, overlay size: 1280x256
[2021-09-10 09:49:50] CLIENT: Video rect: 1920x1080 at 0,0
[2021-09-10 09:49:50] CLIENT: Texture rect: 3840x2160 at 0,0
[2021-09-10 09:49:50] CLIENT: Video rect: 1920x1080 at 0,0
[2021-09-10 09:49:50] CLIENT: Texture rect: 3840x2160 at 0,0
[2021-09-10 09:49:50] CLIENT: Marking frame 1906 complete with status k_EStreamFrameResultDroppedLate
[2021-09-10 09:49:50] CLIENT: Flushing audio, 110 ms queued, 100 ms maximum, delivery delay = 0
[2021-09-10 09:49:51] >>> Switching video stream from Desktop_MovieStream to GameOverlay_MovieStream_1804
[2021-09-10 09:49:51] >>> Capture method set to Game polled D3D11 NV12 + NVENC H264
[2021-09-10 09:49:51] CLIENT: Got control packet k_EStreamControlVideoEncoderInfo
[2021-09-10 09:49:51] Setting target framerate: 60.00 [timing: game 46.00, capture 2.11, convert 0.07, encode 10.16, network -1.20, decode 0.27, display 4.57 (game)]
[2021-09-10 09:49:51] CLIENT: Targeting 60.00 FPS
[2021-09-10 09:49:51] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:49:53] Setting target framerate: 60.00 [timing: game 33.68, capture 1.86, convert 0.04, encode 9.54, network -0.50, decode 0.34, display 1.80]
[2021-09-10 09:49:53] CLIENT: Targeting 60.00 FPS
[2021-09-10 09:49:53] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:50:14] Audio mix: start=1183376173, returned=2888640
[2021-09-10 09:50:14] Audio source [System Windows]: init=1183719221, through=2889343, last_start=2888863, mixed=1642080, drop_before=0, drop_after=0
[2021-09-10 09:50:17] CLIENT: Got control packet k_EStreamControlHideCursor
[2021-09-10 09:50:17] CLIENT: Got control packet k_EStreamControlSetCursor
[2021-09-10 09:50:56] CLIENT: Marking frame 5174 complete with status k_EStreamFrameResultDroppedLate
[2021-09-10 09:51:02] Setting target framerate: 60.00 [timing: game 2.02, capture 0.00, convert 0.00, encode 35.95, network 0.00, decode 0.25, display 1.69 (encode)]
[2021-09-10 09:51:02] CLIENT: Targeting 60.00 FPS
[2021-09-10 09:51:02] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:04] Setting target framerate: 60.00 [timing: game 56.50, capture 3.26, convert 0.00, encode 57.14, network 0.30, decode 0.46, display 2.06 (game) (encode)]
[2021-09-10 09:51:04] CLIENT: Targeting 60.00 FPS
[2021-09-10 09:51:04] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:06] Setting target framerate: 60.00 [timing: game 32.29, capture 8.44, convert 0.01, encode 55.97, network 1.31, decode 0.78, display 2.44 (encode)]
[2021-09-10 09:51:06] CLIENT: Targeting 20.00 FPS
[2021-09-10 09:51:06] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:08] Setting target framerate: 20.00 [timing: game 15.44, capture 7.74, convert 0.00, encode 55.71, network 1.58, decode 0.74, display 2.20 (encode)]
[2021-09-10 09:51:08] CLIENT: Targeting 15.00 FPS
[2021-09-10 09:51:08] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:14] Audio mix: start=1183376173, returned=5768640
[2021-09-10 09:51:14] Audio source [System Windows]: init=1183719221, through=5769823, last_start=5769343, mixed=2880480, drop_before=0, drop_after=0
[2021-09-10 09:51:15] Setting target framerate: 15.00 [timing: game 18.76, capture 2.45, convert 0.00, encode 46.27, network 1.82, decode 0.85, display 3.04 (encode)]
[2021-09-10 09:51:15] CLIENT: Targeting 20.00 FPS
[2021-09-10 09:51:15] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:19] Setting target framerate: 20.00 [timing: game 19.28, capture 7.76, convert 0.00, encode 22.07, network 1.40, decode 0.81, display 2.70]
[2021-09-10 09:51:19] CLIENT: Targeting 30.00 FPS
[2021-09-10 09:51:19] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:20] CLIENT: Marking frame 5756 complete with status k_EStreamFrameResultDroppedLate
[2021-09-10 09:51:20] Setting target framerate: 30.00 [timing: game 9.01, capture 1.73, convert 0.00, encode 10.49, network 0.65, decode 0.70, display 13.11]
[2021-09-10 09:51:20] CLIENT: Targeting 60.00 FPS
[2021-09-10 09:51:20] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:21] CLIENT: Marking frame 5817 complete with status k_EStreamFrameResultDroppedLate
[2021-09-10 09:51:21] CLIENT: Marking frame 5818 complete with status k_EStreamFrameResultDroppedLate
[2021-09-10 09:51:21] CLIENT: Marking frame 5824 complete with status k_EStreamFrameResultDroppedLate
[2021-09-10 09:51:22] CLIENT: Marking frame 5880 complete with status k_EStreamFrameResultDroppedLate
[2021-09-10 09:51:23] CLIENT: Marking frame 5941 complete with status k_EStreamFrameResultDroppedLate
[2021-09-10 09:51:26] Setting target framerate: 60.00 [timing: game 6.12, capture 9.77, convert 0.00, encode 56.80, network 1.43, decode 0.77, display 2.21 (encode)]
[2021-09-10 09:51:26] CLIENT: Targeting 60.00 FPS
[2021-09-10 09:51:26] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:29] Setting target framerate: 60.00 [timing: game 12.21, capture 13.65, convert 0.00, encode 40.74, network 1.57, decode 0.74, display 2.52 (encode)]
[2021-09-10 09:51:29] CLIENT: Targeting 30.00 FPS
[2021-09-10 09:51:29] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:30] Setting target framerate: 30.00 [timing: game 12.18, capture 18.59, convert 0.00, encode 38.10, network 1.79, decode 0.69, display 2.12 (encode)]
[2021-09-10 09:51:30] CLIENT: Targeting 20.00 FPS
[2021-09-10 09:51:30] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:33] Setting target framerate: 20.00 [timing: game 8.61, capture 5.79, convert 0.00, encode 18.25, network 1.31, decode 0.57, display 10.46]
[2021-09-10 09:51:33] CLIENT: Targeting 30.00 FPS
[2021-09-10 09:51:33] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:35] Setting target framerate: 30.00 [timing: game 5.13, capture 8.60, convert 0.00, encode 56.04, network 1.76, decode 0.80, display 2.53 (encode)]
[2021-09-10 09:51:35] CLIENT: Targeting 30.00 FPS
[2021-09-10 09:51:35] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:39] Setting target framerate: 30.00 [timing: game 15.65, capture 10.58, convert 0.00, encode 47.39, network 1.73, decode 0.77, display 2.06 (encode)]
[2021-09-10 09:51:39] CLIENT: Targeting 20.00 FPS
[2021-09-10 09:51:39] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:44] Setting target framerate: 20.00 [timing: game 13.88, capture 13.34, convert 0.00, encode 60.25, network 1.58, decode 0.77, display 2.49 (encode)]
[2021-09-10 09:51:44] CLIENT: Targeting 15.00 FPS
[2021-09-10 09:51:44] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:47] Setting target framerate: 15.00 [timing: game 14.42, capture 15.09, convert 0.00, encode 40.93, network 1.94, decode 0.79, display 2.03 (encode)]
[2021-09-10 09:51:47] CLIENT: Targeting 20.00 FPS
[2021-09-10 09:51:47] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:51] Setting target framerate: 20.00 [timing: game 21.63, capture 9.03, convert 0.00, encode 27.88, network 0.52, decode 0.78, display 3.09]
[2021-09-10 09:51:51] CLIENT: Targeting 30.00 FPS
[2021-09-10 09:51:51] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:52] Setting target framerate: 30.00 [timing: game 9.92, capture 1.69, convert 0.00, encode 10.61, network 0.48, decode 0.49, display 5.38]
[2021-09-10 09:51:52] CLIENT: Targeting 60.00 FPS
[2021-09-10 09:51:52] CLIENT: Got control packet k_EStreamControlSetTargetFramerate
[2021-09-10 09:51:53] CLIENT: Marking frame 6685 complete with status k_EStreamFrameResultDroppedLate
[2021-09-10 09:52:01] Changing record window: 00000000
[2021-09-10 09:52:01] "SessionStats"
{
"ClientDeviceID" "NVIDIA SHIELD Android TV"
"ClientDeviceVersionID" "Android 9"
"GameNameID" "Control Ultimate Edition"
"appid" "870780"
"TimeSubmitted" "1631292721"
"ResolutionX" "3840"
"ResolutionY" "2160"
"CaptureDescriptionID" "Game polled D3D11 NV12 + NVENC H264"
"DecoderDescriptionID" "Android surface hardware decoding"
"BandwidthLimit" "100000"
"FramerateLimit" "60"
"Transport" "1"
"SlowGamePercent" "1.80118584632873535"
"SlowCapturePercent" "0"
"SlowConvertPercent" "0"
"SlowEncodePercent" "23.9612140655517578"
"SlowNetworkPercent" "0"
"SlowDecodePercent" "0"
"SlowDisplayPercent" "0"
"AvgClientBitrate" "95.0433349609375"
"StdDevClientBitrate" "19.0654335021972656"
"AvgServerBitrate" "31478.318359375"
"StdDevServerBitrate" "0"
"AvgLinkBandwidth" "100000.0078125"
"AvgPingMS" "0.0169020425528287888"
"StdDevPingMS" "0.0394092947244644165"
"AvgCaptureMS" "2.8811805248260498"
"StdDevCaptureMS" "4.94963741302490234"
"AvgConvertMS" "0.0106979021802544594"
"StdDevConvertMS" "0.0224206764250993729"
"AvgEncodeMS" "16.1474838256835938"
"StdDevEncodeMS" "16.3140144348144531"
"AvgNetworkMS" "0.850804686546325684"
"StdDevNetworkMS" "0.959701359272003174"
"AvgDecodeMS" "0.639723539352416992"
"StdDevDecodeMS" "0.41266748309135437"
"AvgDisplayMS" "9.83298015594482422"
"StdDevDisplayMS" "6.51829290390014648"
"AvgFrameMS" "49.6459388732910156"
"StdDevFrameMS" "37.9150314331054688"
"AvgFPS" "50.7510490417480469"
"StdDevFPS" "17.8774490356445312"
"BigPicture" "1"
"KeyboardMouseInput" "0"
"SteamControllerInput" "1"
"TouchControllerInput" "0"
"GameControllerInput" "1"
"XBox360ControllerInput" "0"
"XBoxOneControllerInput" "0"
"PS3ControllerInput" "0"
"PS4ControllerInput" "0"
"OtherControllerInput" "1"
"GameControllerVID" "10462"
"GameControllerPID" "4358"
"WasSpectating" "0"
"RemotePlayTogether" "0"
}
Last edited by JBD8438; Sep 10, 2021 @ 10:52am
slouken Sep 14, 2021 @ 9:05am 
I don't see NvFBC in the logs there. It's doing game capture, and then, strangely, taking a really long time to do hardware encoding on the NVIDIA card. I just tried streaming in 4K here and was able to do NvFBC capture at 4K and NVENC hardware encoding at a smooth 60 FPS.

Is this a genuine NVIDIA card, or an inexpensive Chinese version?

Can you close Steam, delete the Steam logs folder, restart Steam, start streaming the game, and then stop the stream at the title screen, and then post a link to the entire streaming_log.txt?

Thanks!
JBD8438 Sep 17, 2021 @ 3:26pm 
Sorry for the late reply, I was out of town for the last few days. I bought my EVGA 3090 FTW3 directly from EVGA, I was on the waiting list for months. Here is a link to my streaming_log.txt.

https://drive.google.com/file/d/1OUdsjzwoU8eWJcQJtnwYtj_bWvEHBJM1/view?usp=sharing
Xjph Sep 19, 2021 @ 11:41am 
Do you have anything else doing background recording? (Shadowplay, windows DVR?)

If so it's possible that multiple simultaneous capture/encode processes are competing for encoder time.
JBD8438 Sep 21, 2021 @ 8:21pm 
I've disabled Shadowplay, Gamestream and Xbox Game Bar. When playing Control on my host PC, I avg 70 FPS. While streaming to my Nvidia Shield via Steam Link app, I get 20 FPS and 35 FPS when using DX12 and DX11 respectively. When using Moonlight, I easily get 60 FPS. My host PC and Nvidia Shield are wired to my router. Also NvFBC is enabled on my host PC.
< >
Showing 1-10 of 10 comments
Per page: 1530 50

Date Posted: Jan 18, 2021 @ 3:41pm
Posts: 10