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

时间:2016-11-04 07:38:14

标签: php video amazon-s3 video-streaming

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

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

这可能吗?是否需要使用特殊的播放器?流视频是否有帮助(可以播放任何视频)吗?

我很感激帮助,我花了很多时间研究这个问题,并且随着我的进展而变得更加困惑!

1 个答案:

答案 0 :(得分:1)

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

<强> 1。 Amazon CloudFront RTMP分发

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

请参阅:Working with RTMP Distributions

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

请参阅:Serving Private Content through CloudFront

<强> 2。 Amazon S3预签名网址

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

  • 单个对象的访问控制列表权限
  • 一个Bucket政策(如上所述)
  • IAM用户和群组
  • 预签名网址

Pre-Signed URL 可用于授予对S3对象的访问权限,作为“覆盖”访问控制的一种方式。通过附加到期时间和签名,可以通过URL访问通常的私有对象。这是一种在不需要Web服务器的情况下提供私有内容的好方法。

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