MPEG-DASH playback is supported by our player engine with some key differences.
- Based on
asl
- custom player engine, and otherAVFoundation
andVideoToolbox
frameworks classes - Support for Widevine
- Advanced tuning settings and customization
MPEG-DASH
DASH playback is supported by our custom VTPlayer
player which leverages the native VideoToolbox
framework. On top of that we have implemented a native manifest parser, samples downloader and ABR algorithms.
CastlabsVTWithWidevine
adds support for the Widevine
CDM.
ABR Settings
Adaptive Bitrate Controls
NOTE: This document does not apply to the iOS/iPadOS native apple player aka AVPlayer. Only the castlabs player supports these functions.
When using the castLabs player there are some additional APIs available to help control how the bitrate/quality is selected during playback. The process for using them is as follows:
Steps to configure Abr Settings
If needed, enable DASH playback support by ensuring the
VTPlugin
is registered with the SDK, e.g.import PRESTOplay import CastlabsVT let res = PRESTOplaySDK.shared.register("LICENSE", [VTPlugin()])
Before creating the player, ensure it will be the castlabs player and not the apple player. (NOTE: DASH content will always be played by the castlabs player regardless of this setting)
let playerConfiguration = PlayerConfiguration(with: streamUrl) playerConfiguration.preferredEngine = .castlabs
Configure the bitrate adaptation settings (BEFORE playing the content)
var abrConfiguration = AbrConfiguration() abrConfiguration.maxInitialBitrate = 1_000_000 abrConfiguration.minDurationForQualityIncreaseMs = 6_000 playerConfiguration.abrConfiguration = abrConfiguration let player = PRESTOplaySDK.shared.player(for: playerConfiguration)
Please see AbrConfiguration.swift for details of all the parameters available.
Buffer Settings
let player = PRESTOplaySDK.shared.player(for: playerConfiguration)
player.minPrebufferTime = 6.0
player.maxPrebufferTime = 60.0
player.minRebufferTime = 12.0
Demo
Please find an example of ABR customization in examples/CastlabsDASHDemo
.