Nagra Connect License Pre-delivery
Nagra CONNECT is the hardware based support for Nagra PRM. Since version 3.102.0 of the Bitmovin Player for Android, playback of Nagra CONNECT PRM-protected content is supported on devices with the necessary hardware capabilities. With the Bitmovin Player for Android version 3.110.0 it is also possible to leverage DRM license key pre-delivery to fetch licenses before playback.
Pre-requisites
Before you begin, please ensure you have access to Nagra Documentation, Nagra SSP backend for fetching required tokens and also access to Bitmovin player key to use Bitmovin player. Please refer to links below for respective documentation.
- Secure Session Management Documentation
- Session Session Manager
- BITMOVIN_PLAYER_KEY : You can get in touch with your Nagra or Bitmovin contact for this. You can also sign up for a trial account.
Configuration
Unlike post-delivery workflows (as shown in Playing protected content with Nagra CONNECT) setting up a NagraConnectConfig
for pre-delivery requires only the operator vault
and the license URL endpoint.
val preDeliveryDrmConfig = NagraConnectConfig.Builder()
.build(
licenseUrl = TODO("NAGRA_CONNECT_LICENSE_URL"),
operatorVault = TODO("NAGRA_OPERATOR_VAULT"),
).apply {
httpHeaders = mutableMapOf(
"Content-Type" to "application/json",
)
}
The pre-delivery DRM configuration can be used to preload the license with preloadDrmLicense
on any Player
instance, as well as the DRM config set on the Source
`s that should be played back.
val player = Player(androidContext)
player.on<PlayerEvent.DownloadFinished> {
// Observe License download state
}
player.on<PlayerEvent.Warning> { event ->
if (event.code == PlayerWarningCode.DrmGeneral) {
// Observe failures of the DRM setup
}
}
// Pre-loading of the Nagra Connect license
player.preloadDrmLicense(preDeliveryDrmConfig)
val sourceConfig = SourceConfig(
url = TODO("CONTENT_MANIFEST_URL"),
type = SourceType.Dash,
title = "Nagra Connect Protected Source",
drmConfig = preDeliveryDrmConfig,
)
// Playback source explicitly using the pre-delivered license
player.load(sourceConfig)
Note:
If the pre-delivery license expired or was never loaded, the player will fetch a new license in post-delivery fashion.
Updated 3 days ago