I purchased a TCL 4K TV approximately 2 years ago with a built in Roku. This device played 4K videos without issue until approximately 6 months ago when it suddenly started experiencing buffering issues anytime I attempt to playback 4K content (2160p) using the YouTube app (not Youtube Live or whatever). The video will play for about 2 seconds and then immediately buffer, play a few more seconds and buffer, etc.
I have spent a significant amount of time trying to troubleshoot this issue on my own and haven't been able to resolve the constant buffering problems with 4K content. If I manually switch the stream rate down to 1440p or 1080p the issue typically resolves, although I do still occasionally experience buffering on 1440p content. Until this evening, I had presumed that its been in issue with my ISP (Cox Cable) as I have had other performance issues with their service since the pandemic hit that had me suspecting the problem is actually a problem with the local node or its uplink.
I have spent a lot of time testing various things over the last few nights and here is what I have discovered by enabling the "Stats for Nerds" in the YouTube app during playback:
- At 1080p the Roku will playback nearly immediately and continue buffering up to about 60 seconds of playback time, occasionally reaching higher than this. The bandwidth meter will show that the Roku is downloading 1080p content when buffering up to around 20Mbps.
- At 2160p the Roku will playback nearly immediately, but then get into a cycle of buffering and playback after only about 2 seconds. While it is doing this, the buffer stats will rarely if ever achieve more buffering than about 2 seconds of playback time. While it is doing this, the bandwidth meter in the stats never achieves a rate higher than 10Mbps.
Observing this, I removed the Roku from the WiFi network to rule that out and connected it directly to the router with a cable. This yielded identical results.
I then spent some time observing the traffic at my router using some network utilities and packet captures which show that the Roku appears to be pulling the YouTube videos from a Google CDN in Los Angeles. I setup a policy based VPN on my router and redirected all of the Roku traffic to a VPS I operate in Buffalo, NY in hopes that it would attempt to use a CDN in that area to verify if that was the issue. Sadly, the behavior remains entirely unchanged. Additionally, it also appears that the Roku still attempts to pull from the Google CDN in Los Angeles. I restarted the TV and cleared the DNS cache to be sure but it appears that either Google only hosts this content in LA or they're still geo-locating me somehow.
I decided to setup a policy route to VPN the traffic from my home office desktop, a 12 year old Dell machine(no joke), went to YouTube and pulled up the same video, ensured that playback was set to 2160p, and much to my surprise, the video played back flawlessly, which came as a complete surprise, because I didn't even think this machine was capable of playing 4K video. I pulled up the same "stats for nerds" on this machine and found that it was consistently buffering about 20 seconds of content and maintaining a stream rate between 18Mbps - 25Mbps. Additionally, this machine isn't directly connected to the router like the Roku is - its connected to a switch that uplinks to the router.
I repeated the tests without the VPN and have the same results. I also noticed that when paused, the Roku will continue to buffer. Observing this, I started a 4K video, immediately paused it, watched my network monitor to see when it appeared the Roku stopped pulling data, then un-paused the video. The video then successfully played back for approximately 10-15 seconds and started the cycle of buffering again. Once again, I observed that the Roku did not attempt to buffer more video until the playback buffer dropped below 2 seconds and the bandwidth meter never rose above 10Mbps during this process.
So, it would appear that there are a couple of issues at play here that I am hoping someone at Roku can help me resolve:
1. The Roku appears to experience a bandwidth cap of 10Mbps on 2160p videos, while achieving 20Mbps+ bandwidth on lower resolution videos.
2. The Roku appears to buffer extensively(60 seconds+) on lower resolution videos, but uses only a 2 second buffer when streaming 2160p content.
It appears to me that the TV is capable of playing 4K content from Youtube with sufficient buffering. Is there a way to increase the size of the playback buffer on this device to achieve this? As previously stated, the 12 year old Dell plays back 2160p content just fine with about a 20 second buffer. Based on the "stats for nerds" on the YouTube app and website, both are playing the same content at 2160p, but the PC that achieves it uses a 20 second buffer. This would also seem to rule out connection speed issues as again, playback is fine on the PC. The "stats for nerds" report that both are playing back the videos using the VP9 codec.
- Internet is 50Mbps Down/3 Up, speed tests typically show 60Mbps Down and 3.5 Up
- I use QoS (Quality of Service) on the local network to prioritize voice and video. Enabling or disabling this doesn't seem to make any difference for the Rokus (but wreaks havoc on VoIP phones and Video Chat if not enabled), even if Rokus are given highest priority.
- There is only 1 TV in the house capable of playing 4K
Please help! The SO is becoming increasingly irritated with the situation and has started dropping hints that they would like to drop $2500 on a new Samsung TV and a different player if this isn't going to be resolved. We have 3 Roku devices running so this will probably entail changing all of them out for something else. Until about 3 years ago we had Sony NMP devices in the house that always ran flawlessly but unfortunately, Sony has ended support for these products and YouTube has ended support for them as well, which is what prompted us to seek new players. I have been happy with the Roku product and interface, but I do expect to be able to use these devices at their advertised specifications.
I Need a "Bufferin"