屏蔽亚马逊S3 mp3文件url和html5移动音频问题


Masking Amazon S3 mp3 file url and html5 mobile audio issues

我使用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>

"预加载"设置为"无",因为我只想在用户按下播放键后开始下载mp3文件。

现在的问题是(尤其是移动浏览器,主要是chrome移动浏览器),当用户按下播放键时,mp3真正开始播放需要相当长的时间(大约8-10秒)。无论我设置了什么缓存控制,这种情况每次都会发生。

附言:我使用了这个未设计的amazons3类:https://github.com/tpyo/amazon-s3-php-class

I认为在转身并提供文件之前,您正在将整个文件下载到服务器。您的用户必须等待整个文件下载到您的服务器,然后等待足够的文件下载到他们的机器,然后才能开始播放,而直接链接到S3将允许用户编程