我们在 aws 中有 s3 存储桶,其中包含视频。我们需要使用 AWS iOS sdk 流式传输这些视频。
到目前为止,我能找到的唯一选择是使用 URL 进行流式传输。(对于公共视频)
但是 s3 getOBject 请求呢 - 我可以下载视频然后查看它,但是有没有办法分块下载并查看它?
我们在 aws 中有 s3 存储桶,其中包含视频。我们需要使用 AWS iOS sdk 流式传输这些视频。
到目前为止,我能找到的唯一选择是使用 URL 进行流式传输。(对于公共视频)
但是 s3 getOBject 请求呢 - 我可以下载视频然后查看它,但是有没有办法分块下载并查看它?
找到了一种方法,您可以生成安全的 URL 来访问
S3GetPreSignedURLRequest * request = [[S3GetPreSignedURLRequest alloc] init];
request.key = fileName;
request.bucket = self.bucket;
[request setExpires:[NSDate dateWithTimeIntervalSinceNow:3600]];
这仅适用于 AWSIOSSDK 1+ 而不是 2
我帮助维护适用于 iOS 的 AWS 开发工具包。
SDK 支持获取请求的范围,因此您可以在离散操作中下载数据块。
S3GetObjectRequest *getObjectRequest = [[S3GetObjectRequest alloc] initWithKey:FILE withBucket:BUCKET];
[getObjectRequest setRangeStart:START rangeEnd:END];
[s3 getObject:getObjectRequest];
SDK 还包含一个委托协议,可用于处理以流方式下载的数据。
getObject 默认情况下是一个非阻塞下载调用。因此,基本上该框架旨在处理下载完成后的回调,以便为您提供输出流中的数据并将其提供给客户端流以供查看。
SDK 支持非阻塞下载,因此理想情况下您也可以在客户端分块下载。