[Player] [iOS] [Download] How to download a specific video quality with Bitmovin Player iOS SDK?

Hello everyone,

We would like to implement a feature inside our apps that allow users to download a specific video quality for a source. While we could figure it out on Android, we are facing some challenges with the Bitmovin Player iOS SDK.

According to the documentation, we should be able to achieve this by setting the minimumBitrate value inside the DownloadConfig():

The lowest media bitrate greater than or equal to this value in bps will be selected for download. If no suitable media bitrate is found or if set to nil, the highest media bitrate will be selected.

What we tried to achieve here is to set the minimumBitrate to 1, which should force to download the lowest video quality from our HLS manifest.

func download(sourceConfig: SourceConfig) {
    let downloadConfig = DownloadConfig()
    downloadConfig.minimumBitrate = 1 // bit per second
    offlineContentManager?.download(downloadConfig: downloadConfig)
}

However, as a user point-of-view, we noticed 2 issues:

  • The download duration remains the same, whatever we set the minimumBitrate to 1 or not
  • The video quality within the player seems to always be the highest one

We wanted to validate our assertion programmatically, unfortunately it seems the availableVideoQualities list is empty when playing a source offline.

func onReady(_ event: ReadyEvent, player: Player) {
    self.player.availableVideoQualities.forEach { VideoQuality in
        print("\(VideoQuality.width) x \(VideoQuality.height)")
    }
}

Are we missing something in the download configuration or does anyone find a way to make downloadConfig.minimumBitrate work as expected?

Thank you in advance for your time!

Hi @admin.vodfactory ,

Thanks for raising this question. You seem to use the correct configuration downloadConfig.minimumBitrate to configure the video quality to be downloaded.

To get the list of available video qualities, please set TweaksConfig. isNativeHlsParsingEnabled to true.

Alternatively, you can also capture network traffic using a tool like Charles proxy and check the downloaded video quality. This will also help to check the download rate to verify if and why there is no change in download time.

If you find that setting minimumBitrate does not have any impact on downloaded video quality selection, please share following information to let Bitmovin have a look.

  • Bitmovin iOS player SDK version
  • HLS Manifest URL where the issue is observed.

Thanks and Regards,
Lucky Goyal

Hi,

Unfortunately, I was able to reproduce the issue with 3.29.0 and can confirm that this is happening. In fact, the minimumBitrate is currently not respected (no matter which value you set).

Regarding the availableVideoQualities: This is not supported for offline content no matter which value you set for isNativeHlsParsingEnabled.

Hi @davidsteinacher,
Thanks a lot for having investigating this issue.

What would be the best way to track this missing feature? Could we expect to see the minimumBitrate function fixed for an upcoming Bitmovin Player iOS SDK release?

Best regards,

We will have a look at it but we can not yet provide any timeline for this. We’ll update this thread once we know more.