如何防止直接从源代码下载媒体文件?

时间:2019-07-05 15:46:35

标签: amazon-web-services amazon-s3 video video-streaming plyr

我正在开发视频流服务作为我的个人项目。

视频文件存储在AWS S3存储桶中(我正在使用媒体转换),Web应用程序是基于react next.js构建的,后端是基于express构建的。 Passport用于验证登录和注销的用户。

我正在使用Plyr播放视频源。

用作Plyr来源的视频文件具有来自S3的直接链接。 (即https://aws_s3_bucket_name/sources/5c0a74osfjw.mp4

问题是,登录我的服务的用户可以使用chrome开发人员工具获取我的视频文件源,甚至可以下载。

我想通过文件链接阻止下载(但用户应该可以通过我的服务观看视频)或隐藏源文件的位置。

对此有什么好的建议吗? 谢谢。 :)

3 个答案:

答案 0 :(得分:1)

一种选择是向用户返回签名的URL ,而不是直接链接到实际的S3对象。这使您可以为该URL设置过期超时,这意味着如果用户复制该链接,则在指定的时间后它将不再可用。您可以通过使用AWS JavaScript SDK的getSignedUr()函数(或在其他AWS开发工具包之一中使用类似的功能)来生成签名的URL。此外,您可以将签名的URL与CloudFront一起使用。有关常规签名URL的详细信息,尤其是CloudFront的用法,可以在CloudFront developer guide中找到。

答案 1 :(得分:0)

使用 AWS MediaConvert 将您的 mp4 转换为 HLS 流 - .m3u8 播放列表和 .ts 片段。在创建作业的过程中,您可以传入一个解密密钥,该密钥将被刻录到播放列表中。像 Videojs 这样的视频播放器可以播放加密的 HLS 流。

这将阻止任何人直接下载视频。即使他们下载了这些片段,它也不会播放,因为它们会被加密。

而且您必须使用一些编程来确保视频只能在您的网站上播放。

这就是 S3 Video Player 阻止下载的作用。

答案 2 :(得分:-1)

理想情况下,您想将HLS流与Cloudfront一起使用。 Here is the tutorial,了解如何在AWS上进行操作。这样做不会使您完全无法复制您的内容,但会使其变得更加困难。

但是,就您而言,Plyr可能是最薄弱的环节。根据我对阅读规范的了解,它或多或少是HTML5视频播放器的包装,可能会在播放这些文件时出现问题。如果可以更改为其他播放器,请查看上面的链接,并考虑使用CloudFront流。