首页 > 解决方案 > 如何正确处理 AWS 、 CLoudFront 视频流?

问题描述

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

存储桶策略

{
"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/*"
    }
  ]
}

我们想要实现的是从云端逐块发送部分内容,但它似乎只是通过一个请求流式传输大厅视频。

如果即使使用云端部分内容交付也无法阻止从用户端下载视频,我也在徘徊?

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

到期后,用户无法在没有刷新的情况下观看视频。

谢谢和抱歉,如果这是重复的,我真的无法弄清楚这个谜题。

标签: phpamazon-web-servicesvideovideo-streamingamazon-cloudfront

解决方案


回答'如果即使使用云端部分内容交付也无法阻止从用户端下载视频,我也在徘徊?'。

答案基本上是,不,我害怕。

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

解决这个问题的常用方法是加密文件,这样即使他们复制了文件,没有加密密钥也无法播放。

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

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

当然,尽管如此,仍然有人可以将高质量的相机对准屏幕,如果您的视频有高分辨率,请获得合理的副本。这就是为什么用于追踪的取证(不可见)水印变得越来越突出的原因。

归根结底,媒体安全通常是关于成本与收益的——即有足够多的障碍以至于不值得某人努力复制它。


推荐阅读