AWS iOS SDK从Cloud Front上传视频并访问压缩文件

时间:2017-08-13 18:18:55

标签: ios amazon-web-services amazon-s3 compression amazon-cloudfront

我的应用:

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

  • 通过从 CloudFront

  • 下载视频(AVPlayer)播放这些视频

我使用的是AWS iOS SDK。我希望减少播放文件时的延迟(特别是长时间使用中等互联网连接)。

我尝试了两件事:

1)CloudFront压缩

  • 我在我的CloudFront分配配置上将Compress Objects Automatically设置为YES并正常上传我的视频,但我甚至不确定Cloud Front压缩视频文件(File types that CF compresses
  • 我应该在下载视频的某个地方设置Accept-Encoding: gzip,但我不知道在哪里......我通常使用默认配置AWSS3TransferUtility

2)客户端压缩

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

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

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

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

1 个答案:

答案 0 :(得分:0)

选项1:

Accept-Encoding来自传入的客户端请求。调用URL的客户端必须发送该标头。

如果您正在使用S3,则需要再执行一步,使用S3 CORS配置。

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

选项2:

您可以在S3中压缩和托管它。客户端请求不需要Accept-Encoding标头。因为它可以按原样下载文件。

<强>结论:

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

Accept-Encoding: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