MFSampleExtension_Encryption_ProtectionScheme 属性
指定加密示例的保护方案。
数据类型
UINT32
备注
此属性的值是 MFSampleEncryptionProtectionScheme 枚举的成员。 如果媒体源是基于 MP4 的,则根据 mp4 标头 (“moov”或“moof” ) 中的方案类型框 ('schm') scheme_type字段的值来设置该值。
如果基于 MP4 的文件或流中的 scheme_type 字段设置为“cenc”或“cbc1”,则 MFSampleExtension_Encryption_ProtectionScheme 属性应分别设置为 PROTECTION_SCHEME_AES_CTR 或 PROTECTION_SCHEME_CBC,并且不应为 MFSampleExtension_Encryption_CryptByteBlock 和 MFSampleExtension_Encryption_SkipByteBlock设置任何值。
如果基于 MP4 的文件或流中的 scheme_type 字段设置为“cens”或“cbcs”,则 MFSampleExtension_Encryption_ProtectionScheme 属性应分别设置为 PROTECTION_SCHEME_AES_CTR 或 PROTECTION_SCHEME_CBC,并且必须使用“tenc”框中的值设置 MFSampleExtension_Encryption_CryptByteBlock 和 MFSampleExtension_Encryption_SkipByteBlock 。
示例
以下示例演示如何设置 MFSampleExtension_Encryption_ProtectionScheme 以及关联的 MFSampleExtension_Encryption_CryptByteBlock 和 MFSampleExtension_Encryption_SkipByteBlock 属性。
HRESULT AddEncryptionAttributes(_In_ IMFSample* pSample, _In_ bool fIsEncrypted)
{
HRESULT hr = S_OK;
if (fIsEncrypted)
{
//Set Encryption Protection Scheme
hr = pSample->UINT32(MFSampleExtension_Encryption_ProtectionScheme,
SAMPLE_ENCRYPTION_PROTECTION_SCHEME_AES_CBC);
if (FAILED(hr))
return hr;
//Set the Initialization Vector (IV)
//(spSampleEncryptionData is omitted from this example for simplicity.)
hr = pSample->SetBlob(MFSampleExtension_Encryption_SampleID,
(BYTE*)(spSampleEncryptionData->m_pInitializationVector),
spSampleEncryptionData->m_bIVSize);
if (FAILED(hr))
return hr;
//Set crypt and skip byte blocks for pattern encryption
hr = pSample->SetUINT32(MFSampleExtension_Encryption_CryptByteBlock, 1);
if (FAILED(hr))
return hr;
hr = pSample->SetUINT32(MFSampleExtension_Encryption_SkipByteBlock, 9);
if (FAILED(hr))
return hr;
}
return hr;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows 10版本 1709 [仅限桌面应用] |
最低受支持的服务器 |
无受支持的版本 |
标头 |
|
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈