瀏覽器TVSDK提供DRM介面,您可用來播放受不同DRM解決方案(包括FairPlay、PlayReady和Widevine)保護的內容。
DRM支援適用於使用Microsoft PlayReady(在Windows 8.1和Edge的Internet Explorer上)和Widevine(在Google Chrome上)DRM系統保護的MPEG-Dash串流。 DRM支援適用於使用FairPlay保護的Safari上的HLS串流。
DRM工作流的關鍵介面是DRMManager
。 您可透過MediaPlayer例項取得對DRMManager
例項的參考:
var mediaPlayer = new AdobePSDK.MediaPlayer();
var drmManager = mediaPlayer.drmManager;
以下是播放受DRM保護內容的高階工作流程:
若要附加瀏覽器TVSDK將在受保護串流的授權取得程式中使用的DRM系統特定資料,請在叫用mediaPlayer.replaceCurrentResource
前先進行下列呼叫:
var protectionData = {
"com.adobe.primetime": {
"serverURL": {
"individualization-request": "https://individualization.adobe.com/flashaccess/i15n/v5",
"license-request": "https://example.com:8096/flashaccess/req",
"license-release": "https://example.com:8096/flashaccess/req"
},
"httpRequestHeaders": {
}
}
};
var drmManager = mediaPlayer.drmManager;
drmManager.setProtectionData(protectionData);
如果相同的內容需要在不同瀏覽器中用於不同的DRM系統,則可以為多個DRM系統指定保護資料。
var protectionData = {
"com.adobe.primetime": {
"serverURL": {
"individualization-request": "https://individualization.adobe.com/flashaccess/i15n/v5",
"license-request": "https://example.com:8096/flashaccess/req",
"license-release": "https://example.com:8096/flashaccess/req"
},
"httpRequestHeaders": {
}
},
"com.widevine.alpha": {
"serverURL": "https://wv.service.expressplay.com/hms/wv/rights/?ExpressPlayToken=<token value>",
"httpRequestHeaders": {
"dt-custom-data": "eyJ1c2VySWQiOiIxMjM0NS"
}
},
"com.microsoft.playready": {
"serverURL": "https://pr.test.expressplay.com/playready/RightsManager.asmx?ExpressPlayToken=<token value>",
"httpRequestHeaders": {
"http-header-CustomData": "eyJ1c2VySWQiOiIxMjM0NS"
}
},
"com.apple.fps.1_0": {
"serverURL": "https://fp.service.expressplay.com:80/hms/fp/rights/?ExpressPlayToken=<token value>",
"certificateURL": "Path_To_certificate.cer",
"licenseResponseType": "arraybuffer",
"httpRequestHeaders": {
"Content-type": "application/octet-stream"
}
},
"org.w3.clearkey": {
"clearkeys": {
"H3JbV93QV3mPNBKQON2UtQ": "ClKhDPHMtCouEx1vLGsJsA",
"IAAAACAAIAAgACAAAAAAAg": "5t1CjnbMFURBou087OSj2w"
}
}
};
var drmManager = mediaPlayer.drmManager;
drmManager.setProtectionData(protectionData);
當未設定保護資料時,從DRM系統的PSSH框(如果適用)中檢索必要資訊(如許可證URL)。
指定保護資料會覆寫在PSSH方塊中指定的授權URL。
預設情況下,DRM許可證的會話類型是臨時的,這意味著在會話關閉後不儲存許可證。
您可以使用DRMManager
中的API來指定作業類型。 為了向後相容,會話類型包括temporary
、persistent-license
、persistent-usage-record
和persistent
。
var drmManager = mediaPlayer.drmManager;
drmManager.setEMESessionType(“<YOUR_SESSION_TYPE>”);
當使用的sessionType
是persistent-license
或persistent
時,可以通過調用DRMManager.returnLicense
來返回DRM許可證。
var onLicenseReturnFunc = function () {
console.log("DRM: License Return Complete ");
},
onLicenseReturnErrorFunc = function (major, minor, errorString/*, errorServerUrl*/) {
console.log("DRM: License Return Error: " + errorString);
},
drmManager = mediaPlayer.drmManager;
if (drmManager) {
var returnLicenseListener = new
AdobePSDK.DRMReturnLicenseListener(onLicenseReturnFunc, onLicenseReturnErrorFunc);
drmManager.returnLicense(null, null, null, false, returnLicenseListener, drmLicense.session);
}