概觀
PlayReady 輸出保護可確保受保護的內容會跨不同的輸出類型和品質層級維護其安全性需求。 本檔提供合規性規則中定義之輸出保護原則的完整對應,以及其對應的測試伺服器參數語法。
輸出保護類別
音訊輸出保護
壓縮的數位音訊內容
合規性參考:CRS 區段 3.6.2
參數語法: caopl:200
描述:控制壓縮數位音訊內容的輸出保護等級,例如 MP3、AAC 或其他壓縮的音訊格式。
範例:
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(caopl:200)
明確數位音訊輸出限制
合規性參考:CRs 區段 3.6.2.8
參數語法: avop:(guid:6D5CFA59-C250-4426-930E-FAC72C8FCFA6)
描述:使用特定 GUID 識別碼提供數位音訊輸出的明確限制。
範例:
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(avop:(guid:6D5CFA59-C250-4426-930E-FAC72C8FCFA6))
未壓縮的數位音訊內容
合規性參考:CRS 區段 3.6.3
參數語法: ucaopl:200
描述:控制未壓縮數位音訊內容的輸出保護等級,例如 PCM 或其他未壓縮的音訊格式。
範例:
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(ucaopl:200)
影片輸出保護
壓縮的數位視訊內容
合規性參考:CRs 區段 3.6.4
參數語法: cvopl:500
描述:控制壓縮數位視訊內容的輸出保護層級,例如 H.264、H.265 或其他壓縮的視訊格式。
範例:
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(cvopl:500)
未壓縮的數位視訊內容
合規性參考:CRs 區段 3.6.5
參數語法: ucvopl:200
描述:控制未壓縮數位視訊內容的輸出保護層級。
範例:
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(ucvopl:200)
進階影片保護功能
譯碼解析度上限
合規性參考:CRs 區段 3.6.5.7.1
參數語法選項:
- 簡單:
maxres:1920x1080 - 高深:
dvop:(guid:9645E831-E01D-4FFF-8342-0A720E3E028F,data:AAAEOAAAB4A=)
描述:限制可譯碼和顯示內容的最大解析度。
範例:
# Simple resolution restriction
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(maxres:1920x1080)
# Advanced resolution restriction using GUID
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(dvop:(guid:9645E831-E01D-4FFF-8342-0A720E3E028F,data:AAAEOAAAB4A=))
HDCP 類型限制
合規性參考:CRS 區段 3.6.5.7.2
參數語法: dvop:(guid:ABB2C6F1-E663-4625-A945-972D17B231E7,data:AAAAAQ==)
描述:指定數位視訊輸出的高頻寬數位內容保護 (HDCP) 需求。
範例:
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(dvop:(guid:ABB2C6F1-E663-4625-A945-972D17B231E7,data:AAAAAQ==))
模擬輸出保護
模擬電視輸出
合規性參考:CRs 區段 3.6.6
參數語法: avopl:200
描述:控制類比電視輸出的輸出保護等級。
範例:
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(avopl:200)
擴充類比電視控件 - CGMS-A
合規性參考:CRs 區段 3.6.7.1
參數語法: avop:(guid:225CD36F-F132-49EF-BA8C-C91EA28E4369,data:AAAAAQ==)
伺服器 SDK 程式代碼:
right.AddAnalogVideoOutputProtection(
new Guid("{225CD36F-F132-49EF-BA8C-C91EA28E4369}"),
BitConverter.GetBytes((int)1)
);
描述:實作模擬電視輸出的複製產生管理系統 - 類比(CGMS-A)保護。
擴充類比電視控件 - AGCCS
合規性參考:CRs 區段 3.6.7.2
參數語法: avop:(guid:C3FD11C6-F8B7-4D20-B008-1DB17D61F2DA,data:AgAAAA==)
伺服器 SDK 程式代碼:
right.AddAnalogVideoOutputProtection(
new Guid("C3FD11C6-F8B7-4D20-B008-1DB17D61F2DA"),
BitConverter.GetBytes((int)2)
);
描述:實作類比電視輸出的自動增益控制系統(AGCCS)保護。
模擬電腦監視器輸出
合規性參考:CRS 第 3.6.8 節
參數語法: avop:(guid:D783A191-E083-4BAF-B2DA-E69F910B3772)
描述:控制模擬計算機監視器連線的輸出保護(VGA 等)。
範例:
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(avop:(guid:D783A191-E083-4BAF-B2DA-E69F910B3772))
類比元件視訊輸出
合規性參考:CRS 第 3.6.9 節
參數語法: avop:(guid:811C5110-46C8-4C6E-8163-C0482A15D47E)
描述:控制類比元件視訊輸出的輸出保護(YPbPr)。
範例:
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(avop:(guid:811C5110-46C8-4C6E-8163-C0482A15D47E))
僅限數位視訊內容
合規性參考:CRs 區段 3.6.11
參數語法: avop:(guid:760AE755-682A-41E0-B1B3-DCDF836A7306,data:AAAAAQ==)
伺服器 SDK 程式代碼:
right.AddAnalogVideoOutputProtection(
new Guid("{760AE755-682A-41E0-B1B3-DCDF836A7306}"),
BitConverter.GetBytes((int)1)
);
描述:僅將內容限制為數位視訊輸出,防止模擬視訊輸出。
未知的輸出處理
傳遞至未知輸出
合規性參考:CRs 區段 3.9.1
參數語法選項:
allowunknownhd:trueplayenablers:(786627D8-C2A6-44BE-8F88-08AE255B01A7)
描述:控制內容是否可以以高定義品質傳遞至未知或無法辨識的輸出。
範例:
# Allow unknown HD outputs
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(allowunknownhd:true)
# Using play enabler GUID
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(playenablers:(786627D8-C2A6-44BE-8F88-08AE255B01A7))
將限制解析傳遞至未知輸出
合規性參考:CRs 區段 3.9.2
參數語法選項:
allowunknownsd:trueplayenablers:(B621D91F-EDCC-4035-8D4B-DC71760D43E9)
描述:控制內容是否可以以標準定義品質傳遞至未知輸出。
範例:
# Allow unknown SD outputs
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(allowunknownsd:true)
# Using play enabler GUID
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(playenablers:(B621D91F-EDCC-4035-8D4B-DC71760D43E9))
保護層級值
一般保護層級
| 等級 | 說明 | 用法 |
|---|---|---|
| 100 | 最低保護 | 基本內容、低安全性需求 |
| 150 | 低保護 | 標準定義內容 |
| 200 | 中度保護 | 高定義內容 |
| 270 | 高保護 | 進階內容 |
| 300 | 最大保護 | 超高價值內容 |
Audio-Specific 層級
| 等級 | 說明 | 音訊品質 |
|---|---|---|
| 100 | 基本音訊保護 | 壓縮、低比特率 |
| 150 | 標準音訊保護 | CD 品質 |
| 200 | 高音訊保護 | 高解析度音訊 |
| 250 | 進階音頻保護 | 無遺失音訊 |
Video-Specific 層級
| 等級 | 說明 | 視訊品質 |
|---|---|---|
| 150 | 標準定義 | 最多 480p |
| 200 | 高定義 | 最高 720p |
| 270 | 完整 HD | 最高 1080p |
| 300 | Ultra HD | 4K 和更新版本 |
測試案例
基本輸出保護測試
// Test basic video output protection
async function testVideoOutputProtection() {
const testCases = [
{ name: 'SD Video', config: 'cvopl:150' },
{ name: 'HD Video', config: 'cvopl:200' },
{ name: 'Full HD Video', config: 'cvopl:270' }
];
for (const testCase of testCases) {
const url = `http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(${testCase.config})`;
const result = await testLicenseAcquisition(url);
console.log(`${testCase.name}: ${result.success ? 'PASS' : 'FAIL'}`);
}
}
HDCP 需求測試
// Test HDCP requirements
async function testHDCPRequirements() {
const hdcpConfig = 'dvop:(guid:ABB2C6F1-E663-4625-A945-972D17B231E7,data:AAAAAQ==)';
const url = `http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(${hdcpConfig})`;
const result = await testLicenseAcquisition(url);
return result.outputProtections.hdcpRequired;
}
模擬保護測試
// Test analog output restrictions
async function testAnalogProtections() {
const analogTests = [
{
name: 'Analog TV Protection',
config: 'avopl:200'
},
{
name: 'CGMS-A Protection',
config: 'avop:(guid:225CD36F-F132-49EF-BA8C-C91EA28E4369,data:AAAAAQ==)'
},
{
name: 'Digital Video Only',
config: 'avop:(guid:760AE755-682A-41E0-B1B3-DCDF836A7306,data:AAAAAQ==)'
}
];
const results = [];
for (const test of analogTests) {
const url = `http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(${test.config})`;
const result = await testLicenseAcquisition(url);
results.push({
test: test.name,
success: result.success,
analogRestricted: result.outputProtections.analogRestricted
});
}
return results;
}
伺服器 SDK 實作
基本輸出保護設定
// Add video output protection level
right.AddVideoOutputProtectionLevel(
PlayReadyVideoOutputProtectionLevel.CompressedDigitalVideo,
270
);
// Add audio output protection level
right.AddAudioOutputProtectionLevel(
PlayReadyAudioOutputProtectionLevel.CompressedDigitalAudio,
200
);
進階保護組態
// Add specific analog video output protection
right.AddAnalogVideoOutputProtection(
new Guid("{225CD36F-F132-49EF-BA8C-C91EA28E4369}"),
BitConverter.GetBytes((int)1)
);
// Add HDCP requirement
right.AddDigitalVideoOutputProtection(
new Guid("{ABB2C6F1-E663-4625-A945-972D17B231E7}"),
BitConverter.GetBytes((int)1)
);
// Add maximum resolution restriction
right.AddDigitalVideoOutputProtection(
new Guid("{9645E831-E01D-4FFF-8342-0A720E3E028F}"),
resolutionData
);
播放啟用程序設定
// Allow unknown outputs at SD quality
right.AddPlayEnabler(
new Guid("{B621D91F-EDCC-4035-8D4B-DC71760D43E9}")
);
// Allow unknown outputs at HD quality
right.AddPlayEnabler(
new Guid("{786627D8-C2A6-44BE-8F88-08AE255B01A7}")
);
最佳做法
輸出保護策略
- 評估內容值 - 較高的值內容需要更嚴格的保護
- 考慮裝置功能 - 確保裝置可以支援所需的保護等級
- 跨平台測試 - 驗證不同裝置類型的保護
- 平衡安全性和可用性 - 避免過度限制的原則
實作指導方針
- 從基本保護開始 - 從標準保護層級開始
- 新增特定限制 - 視需要分層其他保護
- 測試未知的輸出處理 - 使用無法辨識的輸出來驗證行為
- 文件保護需求 - 明確指定保護原則
測試建議
- 全面測試 - 測試所有保護層級和組合
- 裝置相容性 - 在目標裝置類型上驗證
- 輸出類型測試 - 使用不同的輸出連線類型進行測試
- 失敗案例測試 - 驗證保護失敗時的行為
相關文件
- PlayReady Test Server 服務 - 主要測試伺服器功能
- 查詢字串語法 - 參數語法參考
- 測試伺服器例外狀況 - 錯誤條件測試
- PlayReady 測試伺服器 - 完整伺服器檔
支援資源
商務查詢
- 電子郵件: playready@microsoft.com
作業查詢
- 網站: http://wmlalicensing.com/
- 電子郵件: ipla@microsoft.com
技術支援
- 支援入口網站: PlayReady 技術支援
訓練資訊
- 電子郵件: plyrdyev@microsoft.com