You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测Chrome中用户是否禁用了受保护内容ID标识符?

检测Chrome中DRM保护内容设置的方法

问题背景

需要检测Chrome中保护内容媒体设置(禁用该设置后,Chrome允许对DRM保护内容进行屏幕捕获),尝试过相关解决方案但未成功,当前使用的代码如下:

var config = [
  {
    initDataTypes: ["cenc"],
    audioCapabilities: [
      {
        contentType: 'audio/mp4;codecs="mp4a.40.2"',
      },
    ],
    videoCapabilities: [
      {
        contentType: 'video/mp4;codecs="avc1.640016"',
        robustness: "SW_SECURE_CRYPTO",
      },
    ],
  },
];
navigator
  .requestMediaKeySystemAccess("com.widevine.alpha", config)
  .then((k) => {
    console.log(k);
    console.log(k.getConfiguration());
  })
  .catch(console.log);

可行检测方案

1. 结合媒体播放与DRM权限验证

单纯调用requestMediaKeySystemAccess无法直接检测该设置,因为即使禁用保护内容,Widevine仍可能返回可用状态。需结合实际DRM媒体播放尝试,通过捕获播放错误判断:

async function checkProtectedContentSetting() {
  try {
    // 基础DRM支持验证
    const config = [
      {
        initDataTypes: ["cenc"],
        audioCapabilities: [{ contentType: 'audio/mp4;codecs="mp4a.40.2"' }],
        videoCapabilities: [{ contentType: 'video/mp4;codecs="avc1.640016"' }]
      }
    ];
    await navigator.requestMediaKeySystemAccess("com.widevine.alpha", config);
    
    // 创建临时视频元素加载DRM测试媒体
    const video = document.createElement('video');
    video.src = "你的DRM测试媒体地址"; // 替换为真实的DRM保护媒体URL
    video.preload = 'auto';
    
    await new Promise((resolve, reject) => {
      video.onloadedmetadata = resolve;
      video.onerror = reject;
    });
    
    // 尝试播放并检测DRM激活状态
    await video.play();
    const isProtected = video.mediaKeys !== null;
    video.remove();
    
    return isProtected;
  } catch (err) {
    // 捕获DRM相关错误,大概率是设置禁用导致无法加载受保护内容
    console.error(err);
    return false;
  }
}

// 执行检测
checkProtectedContentSetting().then(result => {
  console.log("保护内容设置状态:", result ? "已启用" : "已禁用");
});

2. 利用MediaCapabilities API辅助判断

通过检测硬件级DRM解码能力,间接判断保护内容设置是否启用:

async function checkDRMProtectionStatus() {
  const mediaConfig = {
    type: 'media-source',
    audio: {
      contentType: 'audio/mp4;codecs="mp4a.40.2"',
      protected: {
        type: 'com.widevine.alpha',
        robustness: 'HW_SECURE_ALL'
      }
    },
    video: {
      contentType: 'video/mp4;codecs="avc1.640016"',
      protected: {
        type: 'com.widevine.alpha',
        robustness: 'HW_SECURE_ALL'
      }
    }
  };

  const result = await navigator.mediaCapabilities.decodingInfo(mediaConfig);
  // 硬件级DRM不可用则大概率是设置被禁用
  return result.supported && result.powerEfficient;
}

关键说明

  • Chrome禁用保护内容设置后,会限制DRM硬件安全路径,但仍允许软件解码,因此必须结合实际媒体播放测试才能准确判断,单纯DRM API验证无法区分设置状态。
  • 测试时需使用真实的DRM保护媒体片段,否则无法触发权限校验逻辑。

内容的提问来源于stack exchange,提问作者Prashant Mohta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 17:35:14