实现类似 Netflix 的媒体播放器,防止屏幕截图和视频捕获

Implementing a netflix like media player, Preventing screenshots and video captures

有没有办法阻止用户对您的视频文件进行屏幕截图或截屏?类似于 Netflix 的实现方式。每当我们尝试单击屏幕时,它 returns 都会出现黑屏。我只需要一些正确方向的起点。谢谢! 编辑:它与 DRM 更相关。 Netflix 已经在实施它,因此肯定有一些解决方法。

Netflix 和类似服务对其内容进行加密,并使用 DRM 系统管理解密密钥并将其共享给授权用户。

不同的平台将使用不同的播放器和可能不同的 DRM 类型 - 从广义上讲,对于主要系统,Apple 设备和浏览器使用 fairPlay,Windows 设备和浏览器使用 PlayReady,Google 设备和浏览器使用 Widevine。

当您在来自 n 个不同设备的设备上使用上述 运行 之一的浏览器时,它会变得有点复杂,但一般规则是浏览器供应商将决定使用哪个 DRM,如果它支持(并非所有设备上的所有浏览器都支持 DRM)。

如果您想使用 DRM 服务,您需要联系各个 DRM 供应商或使用多 DRM 供应商或服务供应商。

您还可以使用安全性较低的加密,大多数商业内容所有者无法接受这种加密,但对于您的情况来说可能已经足够好了 - AES 加密或带 DASH 的 Clearkey。

这些不是那么安全,但有时足以满足某些需求。

您可以使用 ffmpeg 和 openssl 创建 AES 加密的 HLS 流 - ffmpeg 文档 (http://ffmpeg.org/ffmpeg-all.html#Options-34) 包含此示例脚本:

#!/bin/sh
BASE_URL=${1:-'.'}
openssl rand 16 > file.key
echo $BASE_URL/file.key > file.keyinfo
echo file.key >> file.keyinfo
echo $(openssl rand -hex 16) >> file.keyinfo
ffmpeg -f lavfi -re -i testsrc -c:v h264 -hls_flags delete_segments \
  -hls_key_info_file file.keyinfo out.m3u8

您还可以使用 mp4Box (https://gpac.wp.imt.fr/mp4box/encryption/common-encryption/) 创建基本的 clearkey DASH 加密:

MP4Box -crypt drm_file.xml movie.mp4 -out movie_encrypted.mp4

drm 信息包含在 drm_file.xml 中,并在上面的 link 中进行了解释。

在播放器方面,几乎所有主要播放器,如通过 EME 的网络上的 BitMovin 和 JWPlayer,android 上的本地 ExoPlayer 等都将支持 DRM 和加密播放。这些应该作为检测加密内容的标准,只要它们配置正确并且会处理您为您提到的 'black screen' 效果。