moonlight-stream / moonlight-embedded

Gamestream client for embedded systems
https://github.com/moonlight-stream/moonlight-embedded/wiki
GNU General Public License v3.0
1.5k stars 325 forks source link

Periodic stream stutter #723

Open witzatom opened 5 years ago

witzatom commented 5 years ago

NVidia Geforce Experience version: 3.16.0.140

Moonlight Embedded version: 2.4.7 Moonlight Embedded source: compiled from source: a5ea38cb281a791de269804130e1d601f9817b64 Moonlight Embedded running on: RPi 2 Model B Moonlight Embedded running on distribution: Raspbian GNU/Linux 9 (stretch)

Verbose output -verbose of Moonlight Embedded:

Moonlight Embedded 2.4.7 (PI;ALSA;PULSE;EMBEDDED)
Connect to 192.168.1.23...
NVIDIA GeForce GTX 1060 3GB, GFE 3.16.0.140 (gs_04_11_25137997, 7.1.411.0)
Platform Raspberry Pi (Broadcom)
Loading mappingfile /usr/local/share//moonlight/gamecontrollerdb.txt
Detected Xbox Gamepad (userspace driver) (0000000058626f782047616d65706100) on /dev/input/event3 as Xbox Gamepad (userspace driver)
Stream 1280 x 720, 30 fps, 5000 kbps
Initializing platform...done
Resolving host name...done
Starting RTSP handshake...done
Initializing control stream...done
Initializing video stream...done
Initializing audio stream...done
Initializing input stream...done
Starting control stream...done
Starting video stream...done
Starting audio stream...done
Starting input stream...done
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 33771, but got 33783)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 33791, but got 33795)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 33803, but got 33807)
Returning RTP packet queued for too long
Received OOS audio data (expected 33815, but got 33835)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 33851, but got 33857)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 33864, but got 33877)
Returning RTP packet queued for too long
Received OOS audio data (expected 33884, but got 33895)
Returning RTP packet queued for too long
Received OOS audio data (expected 33903, but got 33927)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 33956, but got 33997)
Returning RTP packet queued for too long
Received OOS audio data (expected 34004, but got 34011)
Returning RTP packet queued for too long
Received OOS audio data (expected 34018, but got 34028)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 34035, but got 34043)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 34066, but got 34069)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 35625, but got 35632)
Returning RTP packet queued for too long
Received OOS audio data (expected 35639, but got 35649)
Returning RTP packet queued for too long
Received OOS audio data (expected 35656, but got 35663)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 35694, but got 35703)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 35711, but got 35715)
Returning RTP packet queued for too long
Received OOS audio data (expected 35722, but got 35729)
Returning RTP packet queued for too long
Received OOS audio data (expected 35736, but got 35743)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 35771, but got 35803)
Returning RTP packet queued for too long
Received OOS audio data (expected 35811, but got 35812)
Returning RTP packet queued for too long
Received OOS audio data (expected 35819, but got 35829)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 35836, but got 35841)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 35863, but got 35889)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 35911, but got 35935)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 35958, but got 35983)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 36005, but got 36031)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 36054, but got 36081)
Returning RTP packet queued for too long
Received OOS audio data (expected 36095, but got 36115)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 36123, but got 36129)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 36151, but got 36176)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 36198, but got 36223)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 36246, but got 36253)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 36302, but got 36307)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 36314, but got 36315)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 36364, but got 36369)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 36687, but got 36689)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 37268, but got 37269)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 37908, but got 37909)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 38060, but got 38061)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 38256, but got 38257)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 38320, but got 38321)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 38384, but got 38385)
Returning RTP packet after queue overgrowth
Received OOS audio data (expected 38448, but got 38449)
Returning RTP packet queued for too long
Received OOS audio data (expected 38512, but got 38513)
Control stream received disconnect event
Loss Stats: Transaction failed: 11
Stopping input stream...done
Stopping audio stream...done
Stopping video stream...done
Stopping control stream...done
Cleaning up input stream...done
Cleaning up audio stream...done
Cleaning up video stream...done
Cleaning up control stream...done
Cleaning up platform...done

What is the expected result? Smooth audio and video.

What happens instead of that? Around every 1 minute the whole stream stutters and lags out. Might be duplicate of #577 , however there only sound stutter is reported, while in my case, the whole stream stutters. This seems to be a fairly common issue, but its not clear how to resolve it.

Other diagnostics

I ran htop during this to see whether the stutter is caused by cpu perhaps and it does not seem like it. I tried to work around this problem switching on and off several different options that i found on the internet with a similar signature as mine:

The only thing that i found to help is reducing the bitrate. From the log you can see the issue occurs on 5000 bitrate. If i lower this to 4000, the Returning RTP packet queued for too long etc still happens, but not often enough for me to actually notice. I dont expect this to be a bandwidth issue, as both the client and the server are on a single ethernet, but I have not ruled that out completely.

I expect it could have to do something with the decoder performance on the RPi. That would be fairly surprising, as I have no issue playing 1080p videos on it. To make sure I tested a 720p video with omxplayer, since I think thats the decoder moonlight uses. I downloaded some sample 720p video, converted it to have 5k bitrate with ffmpeg and i did not notice any stuttering. So at this point I am stuck and am reporting this since I cannot figure out where else to look.