Bo98
12 years agoVisitor
Measured Bandwidth Sticking
Currently I have a HLS Adaptive Bitrate stream running with bitrates of 768kbps, 1280kbps and 3072kbps. This seems to stream fine and switch accordingly to the measured bandwidth. However this measured bandwidth doesn't seem to update as I'd like it.
To test the adaptive bitrate switching, I placed a bandwidth limit using QoS on a standard ADSL2+ connection. I noticed that it takes a few seconds for the measured bandwidth to lower. I figured this was because it as an average but the side-effect of this is that sudden drops in bandwidth will cause the stream to rebuffered as it may be loading a 3072kbps because the measured (average) bandwidth is greater than the threshold for the stream to play when it actually is at the 1Mb/s I limited it at. While it would be nice if this wasn't the case, the bigger problem I'm focusing on is when I remove or increase the bandwidth limit.
I found that the measured bandwidth would increase but then stop at about 2.3-2.4Mb/s. I left this running for over an hour with roSystemLog's bandwidth.minute printing the bandwidth and it would not budge from that range. This meant the middle quality (1280kbps) would always get played after being knocked down. The only way to fix it was to restart the stream a few times to give it small kicks to get it over the 3072kbps threshold. Though even then the bandwidth might not be at its max. Maybe a hundred more restarts would've got there but it shouldn't be necessary.
This was tested through Ethernet and WiFi on a Roku 3 (latest update installed). This also happened when throttling the bandwidth using packet queues on a fibre network. The stream is a live stream but I haven't tested whether this makes any difference or not.
To test the adaptive bitrate switching, I placed a bandwidth limit using QoS on a standard ADSL2+ connection. I noticed that it takes a few seconds for the measured bandwidth to lower. I figured this was because it as an average but the side-effect of this is that sudden drops in bandwidth will cause the stream to rebuffered as it may be loading a 3072kbps because the measured (average) bandwidth is greater than the threshold for the stream to play when it actually is at the 1Mb/s I limited it at. While it would be nice if this wasn't the case, the bigger problem I'm focusing on is when I remove or increase the bandwidth limit.
I found that the measured bandwidth would increase but then stop at about 2.3-2.4Mb/s. I left this running for over an hour with roSystemLog's bandwidth.minute printing the bandwidth and it would not budge from that range. This meant the middle quality (1280kbps) would always get played after being knocked down. The only way to fix it was to restart the stream a few times to give it small kicks to get it over the 3072kbps threshold. Though even then the bandwidth might not be at its max. Maybe a hundred more restarts would've got there but it shouldn't be necessary.
This was tested through Ethernet and WiFi on a Roku 3 (latest update installed). This also happened when throttling the bandwidth using packet queues on a fibre network. The stream is a live stream but I haven't tested whether this makes any difference or not.