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

时间:2019-01-30 11:12:56

标签: php amazon-web-services video video-streaming amazon-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/*"
    }
  ]
}

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

我是否还在徘徊,即使有云内容交付,也无法阻止从用户端下载视频?

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

到期后,用户无法刷新就无法观看视频。

非常抱歉,如果这是重复的话,我真的无法解决这个难题。

2 个答案:

答案 0 :(得分:0)

如果要逐块传输视频,则需要先处理视频以将其转换为HLS或Dash。

您可以使用AWS Media Convert或AWS弹性代码转换器来完成此操作。

如果您想快速尝试两种协议,建议您部署以下cloudformation模板: https://aws.amazon.com/answers/media-entertainment/live-streaming/

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

答案 1 :(得分:0)

回答'我是否还在徘徊,即使有云内容交付,也无法阻止从用户端下载视频?

基本上,答案是肯定的。

如果用户可以播放视频,那么即使您通过经过身份验证的URL等造成了困难,他们也可以复制该流。

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

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

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

当然,毕竟,有人仍可以将高质量的相机对准屏幕,并且,如果您的视频具有高分辨率,则可以获取合理的副本。这就是为什么法医(不可见)水印用于跟踪变得越来越重要。

最终,媒体安全性通常是成本与收益的关系-即,在进行复制时,有足够的障碍使其不值得某人使用。