共用方式為


測試輸出保護

概觀

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:true
  • playenablers:(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:true
  • playenablers:(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}")
);

最佳做法

輸出保護策略

  1. 評估內容值 - 較高的值內容需要更嚴格的保護
  2. 考慮裝置功能 - 確保裝置可以支援所需的保護等級
  3. 跨平台測試 - 驗證不同裝置類型的保護
  4. 平衡安全性和可用性 - 避免過度限制的原則

實作指導方針

  1. 從基本保護開始 - 從標準保護層級開始
  2. 新增特定限制 - 視需要分層其他保護
  3. 測試未知的輸出處理 - 使用無法辨識的輸出來驗證行為
  4. 文件保護需求 - 明確指定保護原則

測試建議

  1. 全面測試 - 測試所有保護層級和組合
  2. 裝置相容性 - 在目標裝置類型上驗證
  3. 輸出類型測試 - 使用不同的輸出連線類型進行測試
  4. 失敗案例測試 - 驗證保護失敗時的行為

支援資源

商務查詢

作業查詢

技術支援

訓練資訊


© Microsoft公司。 著作權所有,並保留一切權利。 商標 | 隱私