+
50
-

chrome浏览器上播放的视频或图片如何禁止用户截屏或录屏?

chrome浏览器上播放的视频或图片如何禁止用户截屏或录屏?

网友回复

+
0
-

可以使用过EME和DRM技术。

Encrypted Media Extensions(EME)API是一个用于播放加密媒体内容的接口,其目的是通过内容加密保护版权,用户录屏后将会是黑屏。

EME主要提供了一个系统来导航需要支持DRM(Digital Rights Management,数字权利管理)的内容。它允许JavaScript与DRM服务器进行交互,获取许可证和解密密钥,然后将这些信息提供给浏览器的解密模块来解密和播放内容。

下面是一个使用EME如何播放加密视频的基础例子:

// 创建媒体元素
const video = document.createElement('video');
document.body.appendChild(video);

// 设置媒体源
const mediaSource = new MediaSource();
video.src = URL.createObjectURL(mediaSource);

// 当媒体源打开时,添加源缓冲区
mediaSource.addEventListener('sourceopen', function() {
    const sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="opus,vp09.00.10.08"');

    // 在获取许可证和解密密钥后,将加密的视频数据添加到源缓冲区
    fetch('your_encrypted_video.webm')
        .then(response => response.arrayBuffer())
        .then(data => {
            sourceBuffer.appendBuffer(data);
        });
});

// 设置媒体键系统访问
navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{
    initDataTypes: ['keyids'],
    videoCapabilities: [{ contentType: 'video/webm; codecs="vp09.00.10.08"' }]
}]).then(function(mediaKeySystemAccess) {
    return mediaKeySystemAccess.createMediaKeys();
}).then(function(mediaKeys) {
    // 设定用于解密的媒体密钥
    video.setMediaKeys(mediaKeys);

    // 创建一个keySession,它将用于获取许可证和解密密钥
    const keySession = mediaKeys.createSession();
    
    // 监听message事件以获取解密密钥
    keySession.addEventListener('message', function(e) {
        // fetch许可证和解密密钥
        fetch('your_license_and_key_url', {
            method: 'POST',
            body: e.message
        }).then(function(response) {
            return response.arrayBuffer();
        }).then(function(data) {
            keySession.update(data);
        });
    });

    keySession.generateRequest('keyids', your_init_data);
});

在这个例子中,首先创建并设置了一个<video>元素和一个MediaSource对象。然后,再获取到许可证和解密密钥之后,将加密的视频数据添加到MediaSource的源缓冲区中。这使得浏览器能够解密并播放视频。请注意,这只是一个简化的例子,并假设视频是以WebM格式进行加密,并使用Clear Key加密系统(一个简单的现实世界的加密系统)。

实际上,使用EME API会涉及到大量的细节和更复杂的步骤,例如媒体数据初始化、处理多种加密密钥、处理各种错误等。此外,如何获取许可证和解密密钥以及如何处理许可证更新等,是由DRM系统和服务提供商决定的,需要根据具体的业务需求来实现。

我知道答案,我要回答