Php 如何正确处理AWS、CLoudFront视频流?

Php 如何正确处理AWS、CLoudFront视频流?,php,amazon-web-services,video,video-streaming,amazon-cloudfront,Php,Amazon Web Services,Video,Video Streaming,Amazon Cloudfront,抱歉,如果问题重复,我似乎找不到问题的答案。 使用s3和cloudfront为使用Laravel的web项目流式传输视频。 bucket中的对象是私有的 桶政策 { "Version": "2008-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal": {

抱歉,如果问题重复,我似乎找不到问题的答案。 使用s3和cloudfront为使用Laravel的web项目流式传输视频。 bucket中的对象是私有的

桶政策

{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
    {
        "Sid": "1",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity ENE98C17OQICY"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::bucket_name/*"
    }
  ]
}
我们想要实现的是从cloudfront一块一块地发送部分内容,但它似乎只是通过一个请求流式传输霍尔视频

我还想知道,即使cloudfronts提供部分内容,是否也不可能阻止从用户端下载视频

主要问题是我应该在什么时候发送到期日? 视频有不同的持续时间。 一个视频可能是60秒,下一个是150秒。 我应该为每个视频单独设置它吗?还是有最优的解决方案

由于过期后用户无法观看未刷新的视频


感谢并抱歉,如果这是重复的,我无法真正理解此难题。

如果要逐块流式传输视频,您需要先处理视频,将其转换为HLS或Dash

您可以使用AWS Media Convert或AWS elastic转码器来执行此操作

如果您想快速试验这两种协议,我建议您部署以下cloudformation模板:


因此,每次在s3源bucket media convert中部署视频(mp4)时,都会对其进行处理,将其保存到s3目标存储桶,并最终使用Dash和HLS播放列表的正确Cloudfront URL更新dynamoDB。

回答“此外,我还想知道,即使cloudfronts部分内容交付,是否也无法阻止从用户端下载视频?

答案基本上是,恐怕没有

如果用户可以播放视频,那么他们可以制作流的副本,即使您通过已验证的URL等使其变得困难

通常的解决方法是对文件进行加密,这样即使他们复制了文件,也无法在没有加密密钥的情况下播放

接下来的问题是将密钥从服务器安全地传递到客户机-这是DRM系统带来的主要功能之一

DRM的更高安全级别将确保视频路径永远不会暴露给应用程序甚至操作系统,使用安全的媒体路径,基本上将解密的视频放在安全内存中,并直接呈现在那里

当然,在所有这些之后,有人仍然可以将高质量的摄像机对准屏幕,如果你的视频有高分辨率,就可以得到一份合理的拷贝。这就是为什么用于跟踪的法医(不可见)水印变得越来越突出的原因


归根结底,媒体安全通常是成本与收益的较量——也就是说,在努力复制时,有足够多的障碍是不值得他人付出的。

仍然没有找到关于该主题的有效解释来源。这种情况会排除视频下载吗?如果您想要的是阻止用户下载视频,您可以对视频进行案例加密:

如果您想让用户下载视频,media convert生成的作业模板将为您提供。mp4以及s3目的地bucketI已经使用cloudfront和签名URL,但问题是,用户在观看过程中可以从html中提取源代码,并使用签名url下载,这正是我想要阻止的,或者以不同的方式发送视频。或许,感谢您对第一部分的精彩回答。亚马逊是否为您在回答的第一部分描述的encrytpion提供了通用解决方案。是的,显然从屏幕上录制的视频并没有被考虑在内,我们的问题是当用户通过inspect元素获得签名的url并将其粘贴到地址栏中时,他们就得到了视频本身。这就是我们试图阻止Amazon和其他基于云的编码器和打包,或端到端视频PaaS解决方案,通常支持所有主要供应商和多DRM供应商提供的DRM,因此没有单一的通用解决方案。DRM和加密不会停止视频下载,但如果没有密钥,用户将无法观看视频。您还可以在解决方案中添加一些逻辑,以包含一些基于会话的信息,因此只有具有有效会话的用户才能获得视频,但您必须确定复杂性是否值得有限的额外安全性。