DRM配置设置然后将特定DRM配置选项嵌套在drm块内。可以在特定源中配置多种形式的DRM,这将根据特定浏览器进行选择。
有时需要将自定义http标头添加到许可证请求中。这些值特定于您正在使用的DRM提供程序。下面的示例使用名称为customData的标头设置等于提供的值。这些标头提供额外的安全性,如果没有它们,许可证请求将不会被批准。请注意,并非所有DRM提供程序都需要这些自定义标头对。更多信息可以在我们的开发者网站上找到。
DRM的典型工作流程包括配置多种DRM技术以覆盖最常见的回放环境。这些DRM技术应嵌入特定源中,以允许播放器回归到正确的技术。完全嵌套的DRM块的示例如下所示。此方法基于请求内容的浏览器/客户端选择适当的DRM技术。
<script>
jwplayer('myElement').setup({
playlist: [{
sources: [{
file: 'https://www.website.com/media/videofile.mpd',
drm: {
widevine: {
url: 'https://widevine-proxy.appspot.com/proxy',
headers: [{
name: 'customData',
value: 'abcdefg1234567hijklmn89101112opqrs98765tuvwxy'
}]
},
playready: {
url: 'https://playready-proxy.appspot.com/proxy',
headers: [{
name: 'customData',
value: 'abcdefg1234567hijklmn89101112opqrs98765tuvwxy'
}]
}
}
},{
file: 'https://www.website.com/media/videofile.m3u8',
drm: {
fairplay: {
processSpcUrl: 'path to key server that provides ckc',
certificateUrl: 'path to certificate'
}
}
},{
file: 'https://www.website.com/media/clearkey_manifest.mpd',
drm: {
clearkey: {
key: 'xldkjfa9a38hfa98hsadf0a89h',
keyId: '1234-5678-91011'
}
}
}]
}]
});
</script>
如何将其转换为Android?
您需要决定是否在Android中使用“原生”播放器或使用浏览器。
以上方法适用于浏览器,如果浏览器位于Android设备上,您很可能会使用Widevine - 您通常需要的信息是许可权限或LA URL,但这可能与您通常的相同计算机浏览器用例。您可能还需要自定义标题,如上例所示 - 您的DRM提供商可以帮助引导您。
如果您使用的是原生播放器,例如如果您在应用程序中使用JWPlayer SDK,那么JWPlayer会在下面使用ExoPlayer并公开其API。
ExoPlayer是Google提供的适用于Android的媒体播放器,可能是目前使用最多的媒体播放器。
JWPlayer在这里提供了一些基本的DRM信息:https://developer.jwplayer.com/sdk/android/reference/
您可能想看一下ExoPlayer文档和演示应用程序,以便更好地了解它:https://google.github.io/ExoPlayer/drm.html
如果使用Android SDK,则必须遵循以下说明:https://developer.jwplayer.com/sdk/android/docs/developer-guide/drm/drm-protected-playback/
基本上,您必须实现自己的MediaDrmCallback实现,该实现设置为播放列表项。 MediaDrmCallback将包含向许可证服务器发出请求所需的逻辑