媒體服務 PlayReady 授權範本
警告
Azure 媒體服務將於 2024 年 6 月 30 日淘汰。 如需詳細資訊,請參閱 AMS淘汰指南。
Azure 媒體服務可讓您使用 Microsoft PlayReady 和 PlayReady 授權來加密內容。 媒體服務也提供傳遞 PlayReady 授權的服務。 當播放程式嘗試播放以 PlayReady 保護的內容時,會將要求傳送到授權傳遞服務來取得授權。 如果授權服務核准要求,就會發出授權以傳送給用戶端,並將它用來解密和播放所指定內容。
PlayReady 授權包含您要 PlayReady 數位版權管理 (DRM) 執行階段在使用者嘗試播放受保護內容時強制執行的權限和限制。 以下是您可以指定之 PlayReady 授權限制的一些範例:
- 授權開始生效的日期和時間。
- 授權過期的 DateTime 值。
- 針對要儲存在用戶端上永續性儲存體的授權。 永續性授權通常會用來允許離線播放內容。
- 播放器播放您的內容必須具有的最低安全性層級。
- audio\video 內容的輸出控制輸出保護層級。
- 如需詳細資訊,請參閱 PlayReady 合規性規則 \(英文\) 文件中的<輸出控制>一節 (3.5)。
PlayReady SL3000 支援
媒體服務的 PlayReady DRM 內容保護和授權傳遞功能支援 PlayReady SL3000。 安全性層級是 PlayReady 用戶端的一部分。 傳遞至用戶端的每個授權都有屬性,指出允許系結至授權所需的最低安全性層級。 安全性層級 3000 是針對耗用最高品質商業內容之最高安全性的裝置所提供。 您可以在內容金鑰原則中設定 SL3000 授權。
如需 PlayReady 安全性層級的詳細資訊,請參閱 在授權中使用安全性等級一文。
要注意的一些事項:
- 如果您將 SL3000 PlayReady ContentKeyPolicyOption 新增至內容密鑰原則,該原則只能包含額外的 PlayReady SL3000 或 Widevine L1 選項。
- SL3000 要求您針對音訊使用不同的按鍵。
- 音訊金鑰不應使用 SL3000 層級授權。
- 音訊應限制為 SL2000 或更低或未加密。
- SL3000 播放目前不適用於 Azure 媒體播放器 (AMP) 。 請在支援 SL3000 播放的第三方播放程式中測試 (例如,讓玩家) 或裝置。
內容密鑰原則中的 SL3000 範例
{
"properties": {
"description": "ArmPolicyDescription",
"options": [
{
"name": "ArmPolicyOptionName",
"configuration": {
"@odata.type": "#Microsoft.Media.ContentKeyPolicyPlayReadyConfiguration",
"licenses": [
{
"allowTestDevices": true,
"securityLevel": "SL3000",
"beginDate": "2022-10-16T18:22:53.46Z",
"playRight": {
"scmsRestriction": 2,
"digitalVideoOnlyContentRestriction": false,
"imageConstraintForAnalogComponentVideoRestriction": true,
"imageConstraintForAnalogComputerMonitorRestriction": false,
"allowPassingVideoContentToUnknownOutput": "NotAllowed"
},
"licenseType": "Persistent",
"contentKeyLocation": {
"@odata.type": "#Microsoft.Media.ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader"
},
"contentType": "UltraVioletDownload"
}
]
},
"restriction": {
"@odata.type": "#Microsoft.Media.ContentKeyPolicyOpenRestriction"
}
}
]
}
}
基本串流授權範例
下列範例顯示設定基本串流授權的最簡單 (也是最常見) 範本。 透過使用此授權,您的用戶端就能播放您受 PlayReady 保護的內容。
XML 需符合 PlayReady 授權範本 XML 結構描述一節中定義的 PlayReady 授權範本 XML 結構描述。
<?xml version="1.0" encoding="utf-8"?>
<PlayReadyLicenseResponseTemplate xmlns:i="https://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.microsoft.com/Azure/MediaServices/KeyDelivery/PlayReadyTemplate/v1">
<LicenseTemplates>
<PlayReadyLicenseTemplate>
<ContentKey i:type="ContentEncryptionKeyFromHeader" />
<PlayRight />
</PlayReadyLicenseTemplate>
</LicenseTemplates>
</PlayReadyLicenseResponseTemplate>
使用媒體服務 API 來設定授權範本
媒體服務會提供您可以用來設定 PlayReady 授權範本的類型。
您可以在 [內容保護範例] 頁面上找到設定授權範例。
重要事項
PlayReady 授權擁有功能強大的限制。 如果輸出保護的限制太多,內容就可能無法在某些用戶端上播放。 如需詳細資訊,請參閱 PlayReady 合規性規則 \(英文\)。
PlayReady 授權範本 XML 結構描述
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.microsoft.com/Azure/MediaServices/KeyDelivery/PlayReadyTemplate/v1" xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/Azure/MediaServices/KeyDelivery/PlayReadyTemplate/v1" xmlns:xs="https://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
<xs:complexType name="AgcAndColorStripeRestriction">
<xs:sequence>
<xs:element minOccurs="0" name="ConfigurationData" type="xs:unsignedByte" />
</xs:sequence>
</xs:complexType>
<xs:element name="AgcAndColorStripeRestriction" nillable="true" type="tns:AgcAndColorStripeRestriction" />
<xs:simpleType name="ContentType">
<xs:restriction base="xs:string">
<xs:enumeration value="Unspecified" />
<xs:enumeration value="UltravioletDownload" />
<xs:enumeration value="UltravioletStreaming" />
</xs:restriction>
</xs:simpleType>
<xs:element name="ContentType" nillable="true" type="tns:ContentType" />
<xs:complexType name="ExplicitAnalogTelevisionRestriction">
<xs:sequence>
<xs:element minOccurs="0" name="BestEffort" type="xs:boolean" />
<xs:element minOccurs="0" name="ConfigurationData" type="xs:unsignedByte" />
</xs:sequence>
</xs:complexType>
<xs:element name="ExplicitAnalogTelevisionRestriction" nillable="true" type="tns:ExplicitAnalogTelevisionRestriction" />
<xs:complexType name="PlayReadyContentKey">
<xs:sequence />
</xs:complexType>
<xs:element name="PlayReadyContentKey" nillable="true" type="tns:PlayReadyContentKey" />
<xs:complexType name="ContentEncryptionKeyFromHeader">
<xs:complexContent mixed="false">
<xs:extension base="tns:PlayReadyContentKey">
<xs:sequence />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="ContentEncryptionKeyFromHeader" nillable="true" type="tns:ContentEncryptionKeyFromHeader" />
<xs:complexType name="ContentEncryptionKeyFromKeyIdentifier">
<xs:complexContent mixed="false">
<xs:extension base="tns:PlayReadyContentKey">
<xs:sequence>
<xs:element minOccurs="0" name="KeyIdentifier" type="ser:guid" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="ContentEncryptionKeyFromKeyIdentifier" nillable="true" type="tns:ContentEncryptionKeyFromKeyIdentifier" />
<xs:complexType name="PlayReadyLicenseResponseTemplate">
<xs:sequence>
<xs:element name="LicenseTemplates" nillable="true" type="tns:ArrayOfPlayReadyLicenseTemplate" />
<xs:element minOccurs="0" name="ResponseCustomData" nillable="true" type="xs:string">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="PlayReadyLicenseResponseTemplate" nillable="true" type="tns:PlayReadyLicenseResponseTemplate" />
<xs:complexType name="ArrayOfPlayReadyLicenseTemplate">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="PlayReadyLicenseTemplate" nillable="true" type="tns:PlayReadyLicenseTemplate" />
</xs:sequence>
</xs:complexType>
<xs:element name="ArrayOfPlayReadyLicenseTemplate" nillable="true" type="tns:ArrayOfPlayReadyLicenseTemplate" />
<xs:complexType name="PlayReadyLicenseTemplate">
<xs:sequence>
<xs:element minOccurs="0" name="AllowTestDevices" type="xs:boolean" />
<xs:element minOccurs="0" name="BeginDate" nillable="true" type="xs:dateTime">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element name="ContentKey" nillable="true" type="tns:PlayReadyContentKey" />
<xs:element minOccurs="0" name="ContentType" type="tns:ContentType">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="ExpirationDate" nillable="true" type="xs:dateTime">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="GracePeriod" nillable="true" type="ser:duration">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="LicenseType" type="tns:PlayReadyLicenseType" />
<xs:element minOccurs="0" name="PlayRight" nillable="true" type="tns:PlayReadyPlayRight" />
</xs:sequence>
</xs:complexType>
<xs:element name="PlayReadyLicenseTemplate" nillable="true" type="tns:PlayReadyLicenseTemplate" />
<xs:simpleType name="PlayReadyLicenseType">
<xs:restriction base="xs:string">
<xs:enumeration value="Nonpersistent" />
<xs:enumeration value="Persistent" />
</xs:restriction>
</xs:simpleType>
<xs:element name="PlayReadyLicenseType" nillable="true" type="tns:PlayReadyLicenseType" />
<xs:complexType name="PlayReadyPlayRight">
<xs:sequence>
<xs:element minOccurs="0" name="AgcAndColorStripeRestriction" nillable="true" type="tns:AgcAndColorStripeRestriction">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="AllowPassingVideoContentToUnknownOutput" type="tns:UnknownOutputPassingOption">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="AnalogVideoOpl" nillable="true" type="xs:int">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="CompressedDigitalAudioOpl" nillable="true" type="xs:int">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="CompressedDigitalVideoOpl" nillable="true" type="xs:int">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="DigitalVideoOnlyContentRestriction" type="xs:boolean">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="ExplicitAnalogTelevisionOutputRestriction" nillable="true" type="tns:ExplicitAnalogTelevisionRestriction">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="FirstPlayExpiration" nillable="true" type="ser:duration">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="ImageConstraintForAnalogComponentVideoRestriction" type="xs:boolean">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="ImageConstraintForAnalogComputerMonitorRestriction" type="xs:boolean">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="ScmsRestriction" nillable="true" type="tns:ScmsRestriction">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="UncompressedDigitalAudioOpl" nillable="true" type="xs:int">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="UncompressedDigitalVideoOpl" nillable="true" type="xs:int">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="PlayReadyPlayRight" nillable="true" type="tns:PlayReadyPlayRight" />
<xs:simpleType name="UnknownOutputPassingOption">
<xs:restriction base="xs:string">
<xs:enumeration value="NotAllowed" />
<xs:enumeration value="Allowed" />
<xs:enumeration value="AllowedWithVideoConstriction" />
</xs:restriction>
</xs:simpleType>
<xs:element name="UnknownOutputPassingOption" nillable="true" type="tns:UnknownOutputPassingOption" />
<xs:complexType name="ScmsRestriction">
<xs:sequence>
<xs:element minOccurs="0" name="ConfigurationData" type="xs:unsignedByte" />
</xs:sequence>
</xs:complexType>
<xs:element name="ScmsRestriction" nillable="true" type="tns:ScmsRestriction" />
</xs:schema>
取得說明及支援
您可以連絡媒體服務並詢問問題,或依照下列其中一種方法追蹤我們的更新:
- 問與答
-
Stack Overflow。 使用
azure-media-services
標記問題。 - @MSFTAzureMedia 或使用 @AzureSupport 來要求支援。
- 透過 Azure 入口網站 開啟支援票證。