AWS iOS 开发工具包从 Cloud Front 上传视频并访问压缩文件



我的应用程序:

  • 录制视频并将其上传到亚马逊(使用CloudFront分配(

  • 通过从CloudFront下载这些视频(以AVPlayer播放(

我使用 AWS iOS 开发工具包。我想减少播放文件时的延迟(尤其是在中等互联网连接下长时间(。

我尝试了两件事:

1( 云前压缩

  • 我将Compress Objects Automatically设置为在我的 CloudFront 分配配置上YES并正常上传我的视频,但我甚至不确定 Cloud Front 是否压缩视频文件(CF 压缩的文件类型(
  • 下载视频时,我应该在某处设置Accept-Encoding: gzip,但我看不到在哪里......我通常使用默认配置的AWSS3TransferUtility

2( 客户端压缩

  • 我自己用GzipSwit库压缩视频并将其上传到亚马逊。我应该运行更多的测试来确定,但压缩并不总是非常有效,有时它不会改变文件的大小。

  • 我从 CloudFront 网址下载数据,解压缩数据,将其保存在本地并播放。在这里,我也需要设置Accept-Encoding: gzip吗?

我对这两种解决方案都持开放态度(因为两者都应该减少延迟(,但现在我无法让它们中的任何一个工作。

提前感谢我能得到的所有建议。

选项 1:

接受编码来自传入的客户端请求。调用 URL 的客户端必须发送该标头。

如果您使用的是 S3,并且需要使用 S3 CORS 配置再执行一个步骤。

https://ithoughthecamewithyou.com/post/enable-gzip-compression-for-amazon-s3-hosted-website-in-cloudfront

选项 2:

您可以将其压缩并托管在 S3 中。客户端请求不需要接受编码标头。因为它可以按原样下载文件。

结论:

选项1 更好,因为您可能使用最佳压缩进行压缩,但客户端可以使用多个选项进行请求。例如,

接受编码:br;q=1.0, gzip ;q=0.8, *;q=0.1

它这个选项说使用压缩与 br 或 gzip 以及压缩因子。

将文件保留在 S3 中,并将压缩保留到 CloudFront。根据客户端参数,它可以响应编码标准。

此外,如果引入了任何新的压缩方法,它将默认工作,并让 CF 决定如何处理它。

有关编码的更多信息,

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding

相关内容

最新更新