我的应用程序:
-
录制视频并将其上传到亚马逊(使用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