如何使用php和s3共享不能下载的私人视频


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

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

我想让这些视频更安全。目前,视频存储在我的服务器上,任何有url的人都可以下载。所以,(1)我想把它们存储在一个不能用url下载的地方。其次,我需要阻止他们右键点击并保存正在播放的视频。我试着用s3解决这个问题,但没有得到它…

这可能吗?它需要使用一个特殊的球员吗?流式传输视频有帮助吗(可以流式传输任何视频吗)?

我很感谢你的帮助,我花了很多时间研究这个,只是越来越困惑,因为我走下去!

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

1。Amazon CloudFront RTMP发行版

Amazon CloudFront是一个内容分发网络,在全球60多个地点缓存离用户更近的内容。它还具有服务实时媒体播放 (RTMP)协议的能力。这意味着你的网页可以呈现一个媒体播放器(如JW播放器,Flowplayer,或Adobe Flash), CloudFront可以提供内容。

参见:使用RTMP发行版

CloudFront distribution也可以服务私有内容。您的应用程序可以生成一个URL,该URL在有限的时间内提供内容。内容是通过媒体协议提供的,所以整个文件不能轻易下载

参见:通过CloudFront提供私有内容

2。Amazon S3预签名url

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

  • 单个对象的访问控制列表权限
  • 一个桶策略(根据你的上面)
  • IAM Users and Groups
  • 预签名URL

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

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