Video streaming throttled on cellular data?

I’ve noticed that on cellular data, video streaming is unusably slow. On one device at least, I can see that the data speed is consistently 200 KB/s. Stash is running off a synology NAS in Docker. I’ve done what I could to narrow the problem down, here are some troubleshooting results:

  • NAS itself streams well outside the network to other devices (good gigabit connection)
  • both android (T mobile) and iphone (Verizon) devices are affected, neither have any network settings that limit cellular data speeds (both reach >50mbps consistently)
  • both chrome and firefox browsers on both android and iphone are affected
  • streaming other videos from the NAS to cell phones via synology software works fine
  • weirdest bit: if I use a cellular connection as a wifi hotspot, the phone connected to that wifi hotspot suddenly streams fine

This all leads me to think there’s some sort of throttling when the video player detects the connection is over cellular data. Is there a stash setting that I messed up, or something else to look into as the cause?

1 Like

I don’t think Stash is smart enough to dynamically adjust encoding based on perceived bandwidth. You have done some good debugging. Other videos stream fine from your NAS to a phone via cellular. Otherwise I would have thought that the cellular provider was throttling the connection.

1 Like

I did think it was the cell service for the longest time too, but I finally had a chance to try and figure it out. I’m really at a loss at this point.

The problem definitely isn’t an issue with transcoding. It tries to stream at whatever the default is, but it takes forever to buffer (eg minutes) and plays about half a second at a time. If I set it to transcode at the lowest quality it can manage to stream, but that’s only because it’s working within the bandwidth limitation that I can’t figure out

Don’t let it transcode. Just direct stream. if the bandwidth is not enough then
(a) try low bit rate files
(b) transcode some files to low bitrate.

For reference, I have verified that I can stream my videos from my stash server (NAS) over cellular networks on my iPhone 16. I only tested AV1 files but I’m sure I can test some H.264 files.

I’m on AT&T but coverage/bandwidth are big variables.
Stash has no issue with it … but then AFAIK … stash can’t tell I’m on a cellular collection.

I have no idea how stash could possible figure out any details about my connections other than basic bandwidth tests.

Stash would not even know my actual IP.

Testing now.
I’m on 5G but sometimes switch to 5G+
Measured speed was 3.1/14.9 in Mbps down/up

I just tested 2 scenes. I can post the scene details but 1 was a 4K scene from Byborg (Gamma) from studio Webyoung and the other was a lower resolution older scene from Lethal Hardcore. Both scenes play fine direct stream.

I am using Unifi router which uses wireguard for its VPN from cellular into my LAN.

Are you using Cloudflare Tunnel? They throttle primary non-html connetions now instead of banning accounts https://blog.cloudflare.com/updated-tos/

1 Like

That’s a good thought, I am not using a cloudfare tunnel. The closest thing is that I have Tailscale installed but the issue is there whether the devices are connected or not

Hmm thanks for the input. The only issue is that I don’t think it’s the cell service since I can use the same service and create a hotspot from it. When the other phone uses the same cell service via the hotspot connection, I actually get reasonable speeds. I can watch videos encoded at 20 mbps with only brief buffering at the start.

I’m aware of multiple instances where apps limit bandwidth depending on whether the connection is cellular or wifi (eg youtube, google maps), so that information is available to apps somehow.

1 Like

If it’s through tailscale then it adds a whole other layer of complexity since it’s possibly peer-to-peer or forced relay

I’m aware of multiple instances where apps limit bandwidth depending on whether the connection is cellular or wifi (eg youtube, google maps), so that information is available to apps somehow.

Stash runs in your browser and doesn’t have access to that information at all. Apps can have it granted via OS but not browsers