Dynamic streaming/Adaptive bitrate best practices and behavior questions
I have several inter-related questions about adaptive bitrate streaming through your player.
But first my context:
Configuration: JWPlayer 6.8, RTMP through Cloudfront/AWS, SMIL files, MP4.
I'm currently creating about 7 different versions of each streaming video for dynamic switching based on the user's bitrate. The bit rates of my files are unevenly spaced out (in terms of the difference in kbps between each file). I have a few HD-level versions close together (~200kbps apart), the rest of the files are spaced quite widely. I've had several different types of buffering issues that I mention below.
I don't currently have diagnostics to track which bitrates are being used the most, causing buffering the most, nor insight into how the dynamic switching algorithm works in JWPlayer. This info would really help me understand how best to adjust my setup to minimize buffering frequency and duration.
My questions are:
1. How does the "downshift" or "upshift" Auto mode work? Does the player jump right to the target data rate from the menu, or cycle through every version on the way to the destination data rate?
Just wondering if this could explain repeated buffering I've occasionally seen.
2. What do you recommend in terms of best practices for spacing out the bit rate sizes (to minimize buffering)? I chose my high end/low end rates according to best practices on other video websites, but not the intervals between them.
Even spacing, e.g. a certain bitrate distance apart (e.g 700kbps?) ? Is there a minimum “safe” distance between data rates to reduce chances of repeated buffering if the network fluctuates?
Ad hoc spacing, for instance to be able to offer more HD-versions at a particular bitrate spectrum (3000-3500kbps), and fewer, further between options for lower bandwidth connections.
I've wondered if having a few files close together in data rate has exacerbated buffering issues on my site.
3. What is the player's behavior for moving BACK to a higher data rate when the player has already moved to a much lower rate? If and when will it restore the better quality stream?
I've seen temporary network issues cause the player to auto-select a 300kbps file on a 24Mbps connection. Even when the network issue immediately resolved, the player did not restore the higher-rate video stream quickly, so I manually overrode the setting to get back to HD (which played fine). Re-enabling Auto caused it to jump back down to the low quality 300kbps stream.
4. Finally, Can you provide any recommendations about how to monitor which data rates are being used/not used, and conversely which rates are causing the most buffering? Cloudfront monitoring logs may show which files were streamed, but are unlikely to provide much insight into dynamic switching behavior, and it will be hard to decouple client-side actions (pauses) vs auto-buffering.