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

时间:2016-09-13 19:59:06

标签: php amazon-web-services audio amazon-s3 audio-streaming

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

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

然后只需设置适当的标题并将数据放入正文中。

虽然它有两个缺点:

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

2)Chrome会在自己的用户界面中呈现音频,但当用户尝试使用滚动条时,会发送一个请求,其中包含未处理的“范围”标题。

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

2 个答案:

答案 0 :(得分:1)

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

如果您希望限制访问权限,可以使用S3客户端预先签名URL。这些网址可以设置为仅运行几分钟。

如果由于某种原因您无法直接链接到S3,则可以在当前脚本中重定向到S3网址。

答案 1 :(得分:0)

“流”音频与“播放”音频(渐进式下载)不同。

真正的流传输意味着将.mp3(或.mp4)转换为“流”,如.m3u8和.ts文件(如果您正在使用HLS流传输)。您可以使用AWS MediaConvert,将其转换为流,然后使用CloudFront交付到您的网站,然后使用Videojs之类的播放器进行播放。

如果您只是想将S3帐户(渐进式下载)中的音频/视频/ PDF文件“提供”到您的网站,请创建签名的URL,然后将其用作音频/视频播放器的源。

您还可以使用S3MediaVault which does both Audio and Video Streaming之类的WordPress插件以及渐进式下载。

-拉维·贾戈帕尔(Ravi Jayagopal)