php - 如何正确处理 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 秒。我应该为每个视频单独设置吗?还是有最佳解决方案?
到期后,用户无法在没有刷新的情况下观看视频。
谢谢和抱歉,如果这是重复的,我真的无法弄清楚这个谜题。
解决方案
回答'如果即使使用云端部分内容交付也无法阻止从用户端下载视频,我也在徘徊?'。
答案基本上是,不,我害怕。
如果用户可以播放视频,那么他们可以制作流的副本,即使您通过经过身份验证的 URL 等使其变得困难。
解决这个问题的常用方法是加密文件,这样即使他们复制了文件,没有加密密钥也无法播放。
下一个问题是将密钥从服务器安全地传递到客户端——这是 DRM 系统带来的主要功能之一。
更高安全级别的 DRM 将确保视频路径永远不会暴露给应用程序甚至操作系统,使用安全媒体路径,该路径实质上将解密的视频放置在安全内存中并直接在那里呈现。
当然,尽管如此,仍然有人可以将高质量的相机对准屏幕,如果您的视频有高分辨率,请获得合理的副本。这就是为什么用于追踪的取证(不可见)水印变得越来越突出的原因。
归根结底,媒体安全通常是关于成本与收益的——即有足够多的障碍以至于不值得某人努力复制它。
推荐阅读
- reactjs - 反应谷歌条形图最大列限制?
- javascript - 无法读取未定义的属性“就绪”;区:
; 任务:Promise.then;值:TypeError:无法读取未定义的属性“就绪” - javascript - v-on 处理程序中的错误:“TypeError:无法读取未定义的属性'emailAddress'”VUEX
- excel - 来自聚合组的 Excel vlookup
- .net - Sql Query 检测撇号并返回错误
- jquery - Bootstrap Select Dropdown on change 打开另一个 Bootstrap Select Dropdown
- docker - 如何更改已创建的 docker 容器 Wildfly Server 的时区?
- css - 使用负百分比边距不覆盖父元素
- milo - Eclipse Milo:使用延续点读取历史
- azure-cosmosdb - CosmosDb Sql 查询匹配文档之间数组中的公共值