我的应用:
录制视频并将其上传到亚马逊(使用 CloudFront 分发)
通过从 CloudFront
AVPlayer
)播放这些视频
我使用的是AWS iOS SDK。我希望减少播放文件时的延迟(特别是长时间使用中等互联网连接)。
我尝试了两件事:
1)CloudFront压缩
Compress Objects Automatically
设置为YES
并正常上传我的视频,但我甚至不确定Cloud Front压缩视频文件(File types that CF compresses)Accept-Encoding: gzip
,但我不知道在哪里......我通常使用默认配置AWSS3TransferUtility
2)客户端压缩
我使用GzipSwit库自行压缩视频并将其上传到亚马逊。我应该再运行一些测试,但压缩并不总是非常有效,有时它不会改变文件的大小。
我从CloudFront网址下载数据,解压缩,在本地保存,播放。在这里,我是否也需要设置Accept-Encoding: gzip
?
我对两种解决方案持开放态度(因为两者都应该减少延迟)但是现在我无法使它们中的任何一种工作。
提前感谢我能得到的所有建议。
答案 0 :(得分:0)
选项1:
Accept-Encoding来自传入的客户端请求。调用URL的客户端必须发送该标头。
如果您正在使用S3,则需要再执行一步,使用S3 CORS配置。
选项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