使用 php 从 S3 流式传输音频并支持范围

Stream audio from S3 with php and support Range

我目前允许用户通过充当 s3 的代理来收听原始音频文件:

$result = $s3Client->getObject(array(
    'Bucket' => "Bucket",
    'Key' => "Key
));

然后只需设置适当的 headers 并将数据放入 body.

虽然它有两个缺点,但它有效:

1) 大文件延迟高,因为从 s3 下载需要时间

2) Chrome 在其自己的 UI 中呈现音频,但是当用户使用滚动条进行搜索时,会发送一个带有 "Range" header 的请求,即未处理。

有没有人有更好的解决方案来处理这两个问题?我看过 Amazon S3 Stream Wrapper,但我不清楚如何让它将音频流式传输回浏览器。

使用 S3 直接为您的媒体提供服务。

如果您希望限制访问,您可以使用 S3 客户端预先签署 URLs。这些 URL 可以设置为仅工作几分钟。

如果由于某种原因您不能直接 link 到 S3,您可以在当前脚本中直接重定向到 S3 URL。