An unexpected solution for managing bandwidth constraints
As an AV engineer and streaming technician, I’ve come across quite a few challenges in my line of work. Today I wanted to share one unconventional solution that has made a world of difference in how we handle bandwidth constraints.
So, the problem looked like this : viewers with slower internet connections experienced frequent buffering, which was annoying and led to a really bad viewing experience.
Conventional ways to deal with it usually involve lowering the video bitrate or providing multiple streaming resolutions. And don’t get me wrong, those are perfectly valid methods, but we wanted to keep the video quality as good as possible.
So, we decided to look for alternative ways to tackle the problem. That’s when we shifted our focus from the video stream to the audio and came up with “audio first” approach.
“Audio first” or “audio preloading” involves sending the audio part of the stream before the video. This gives the video stream more time to load while users listen to the audio. As users concentrate on the audio content, the video stream buffers, resulting in a smoother streaming experience.
We have done a series of experiments and test to see the impact of audio preloading on buffering rates and user experience. We tested various internet speeds and the outcome was promising : viewers with slower connections experienced much less buffering (or you could say they were much less annoyed by it) and got a better overall experience.
This a little bit unusual approach does not sacrifice video quality and shifted the way we think about bandwidth constraints.
How to do it
You can get similar results with different tools and services, that’s why we’ll not focus on any specific service here, but rather outline the key steps that you can take with the service that you already use.
Step 1: Prepare the input
Choose a video processing service and set up a new channel. Configure the input settings based on your source media and select an appropriate input type, like RTP, RTMP, HLS, or other protocol-based connections.
Step 2: Set up video settings
After setting up the input, create an output group for streaming. Within this group, add an output for the video stream. Configure the video settings to match your desired quality and codec, and customize parameters such as resolution, bitrate, and frame rate. Assign a unique name to this video description.
Step 3: Set up audio settings
Within the same output group, create a separate output for the audio stream. Configure the audio settings based on your preferred quality and codec, and adjust parameters like bitrate, sampling rate, and channel layout. Give this audio description a unique name.
Step 4: Organize the manifest
In the output group, ensure that the chosen manifest style supports separate audio and video streams. This will include both streams in the output manifest file, making it possible to implement audio preloading.
In our example we were using HLS. So we have set the “Manifest style” to “Pantos.”
There are other manifest styles for Apple HLS, but choosing the “Pantos” style ensures that the separate audio and video streams are properly included in the manifest. With Pantos style, the video player can understand that it should load the audio first (audio preloading), and then load the video, making the streaming experience smoother for people with slower internet connections.
Step 5: Activate the channel
After configuring the separate audio and video streams, start the video processing channel. The output manifest will contain both the video-only and audio-only streams, which allows for audio preloading in the streaming process.
Remember, with great streaming power comes great responsibility. Be sure to also configure your video player to handle the separate audio and video streams and implement the audio preloading technique. Happy streaming!