如何使用php和s3分享无法下载的私密视频?

How to use php and s3 to share private video that can't be downloaded?

我有一个 (php) 网站,教师上传他们的录音 class,学生可以登录然后播放录音。

我想让这些视频更安全。目前,视频存储在我的服务器上,任何拥有 url 的人都可以下载它们。所以,(1) 我想将它们存储在无法仅使用 url 下载的地方。其次,我需要阻止他们在播放视频时右键单击并保存视频。 我正在尝试使用 s3 解决这个问题,但没有成功...

这可能吗?需要用专门的播放器吗?流式传输视频有帮助吗(可以流式传输任何视频)?

感谢您的帮助,我花了很多时间研究这个问题,但随着我的努力,我变得越来越困惑!

您可能希望使用几个选项。

1. Amazon CloudFront RTMP 分发

Amazon CloudFront 是一个内容分发网络,可在 60 多个位置缓存更接近全球用户的内容。它还能够为 实时媒体播放 (RTMP) 协议提供服务。这意味着您的网页可以显示媒体播放器(例如 JW Player、Flowplayer 或 Adob​​e Flash),而 CloudFront 可以提供内容。

参见:Working with RTMP Distributions

CloudFront Distribution 还可以为私有内容提供服务。您的应用程序可以生成 URL 以在有限的时间内提供内容。内容通过媒体协议提供,因此 无法轻松下载整个文件

参见:Serving Private Content through CloudFront

2。亚马逊 S3 预签名 URLs

默认情况下,Amazon S3 中的所有对象都是私有的。然后您可以添加权限,以便人们可以访问您的对象。这可以通过以下方式完成:

  • 对单个对象的访问控制列表权限
  • 存储桶策略(按照您上面的)
  • IAM 用户和组
  • A 预签名 URL

A Pre-Signed URL 可用于授予对 S3 对象的访问权限,作为 "overriding" 访问控制的一种方式。通过附加到期时间和签名,可以通过 URL 访问通常私有的对象。这是无需 Web 服务器即可提供私人内容的好方法。

与上述 CloudFront 示例类似,您的应用程序可以生成一个 URL,在有限的时间段内提供对 S3 内容的访问。一旦期限到期,预签名 URL 将不再起作用。但是,在活动期间, 能够下载整个文件,因此对于您希望保护的视频内容,这可能是不可取的.