屏蔽 Amazon S3 mp3 文件 url 和 html5 移动音频问题
Posted
技术标签:
【中文标题】屏蔽 Amazon S3 mp3 文件 url 和 html5 移动音频问题【英文标题】:Masking Amazon S3 mp3 file url and html5 mobile audio issues 【发布时间】:2013-12-04 09:13:59 【问题描述】:我正在使用amazon s3
服务器为用户提供 mp3 文件。但是,为了控制这些 mp3 文件的使用并保护真实的s3
url,我使用 php 文件来屏蔽 url。以下是我使用的代码:
$audioName = $_GET['p'];
require_once 'class/S3.php';
$expires = 60*60*24*30;
header("Cache-Control: public, max-age=".$expires.", pre-check=".$expires);
header("Expires: " . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');
$getPhoto = new S3(access key, secret access key);
$response = S3::getObject('bucketname', $audioName);
header('Content-Type: ' . $response->headers['type']);
header('Content-Length: ' . $response->headers['size']);
echo $response->body;
然后在我的 html 端我使用一个简单的音频标签来播放这个文件:
<audio controls preload="none">
<source src="audiofile.php?id=1" type="audio/mpeg">
</audio>
Preload 设置为 none,因为我只想在用户按下播放后才开始下载 mp3 文件。
现在的问题是(尤其是移动浏览器,主要是 chrome 移动浏览器),当用户按下播放键时,mp3 真正开始播放需要相当长的时间(大约 8-10 秒)。每次都会发生这种情况,无论我设置了什么缓存控制。
P.S.:我使用来自 undesign 的这个 amazon s3 类:https://github.com/tpyo/amazon-s3-php-class
【问题讨论】:
【参考方案1】:我认为您正在将整个文件下载到您的服务器,然后再转身并提供文件。您的用户必须等待整个文件下载到您的服务器,然后将足够多的文件下载到他们的机器上,然后才能开始播放,而直接链接到 S3 将允许用户进行编程
【讨论】:
以上是关于屏蔽 Amazon S3 mp3 文件 url 和 html5 移动音频问题的主要内容,如果未能解决你的问题,请参考以下文章