我目前允许用户通过充当s3的代理来收听原始音频文件:
$result = $s3Client->getObject(array(
'Bucket' => "Bucket",
'Key' => "Key
));
然后设置适当的标题并将数据放入正文。
这可以工作,尽管它有两个缺点:
1)大文件有很高的延迟,因为从s3下载需要时间
2) Chrome在自己的UI中呈现音频,但当用户使用滚动条寻求请求时,会发送一个未处理的"范围"标头。
谁有更好的解决方案来处理这两个问题?我看过Amazon S3流包装器,但我不清楚如何让这个流音频返回到浏览器。使用S3直接提供媒体服务
如果希望限制访问,可以使用S3客户机对url进行预签名。这些url可以设置为只工作几分钟。
如果因为某些原因你不能直接链接到S3,你可以在当前脚本中直接重定向到S3 URL。