根据其他答案,最好的方法是创建一个CNAME桶/记录并以这种方式流式传输。但是,由于版权问题,我无法执行此操作,因此必须通过我的应用程序对其进行流式传输(以便记录用户播放等许多内容)。
我的数据库my-bucket
中的S3上有mp3。 mp3可在https://s3.amazonaws.com/my-bucket
公开访问。
我有这个代码作为我的路由器:
Router.php
Route::get("/music/{id}.mp3", "Controller\Music@play");
Music.php
namespace Controller;
class Music extends \Controller\Base
{
public function play($id)
{
$return = file_get_contents("https://s3.amazonaws.com/my-bucket/$id");
if( !$return )
return "false";
$response = Response::make($return, 200)->header('Content-Type', "audio/mpeg");
return $response;
}
}
现在,在我的ssl-secured服务器上,将显示实际的音频文件,但它实际上不会播放或流式传输。关于如何实现这个的任何想法?
编辑:此外,我确实意识到我将支付双倍的带宽成本(服务器s3,服务器到世界),这完全没问题。