从Amazon S3流式传输私人视频

时间:2012-04-18 14:13:25

标签: php amazon-s3 video-streaming wordpress-plugin

我需要在我的wordpress博客上显示带有ACL:PRIVATE上传到我的Amazon S3帐户的视频/图像文件。

我是PHP oops编码的新手。任何脚本帮助,链接引用,免费插件甚至逻辑算法都将是很有帮助的:)

提前致谢。

2 个答案:

答案 0 :(得分:3)

通过实施以下步骤可以解决此问题:

  1. here
  2. 下载最新的稳定版SDK
  3. 解压缩.zip文件&放在wamp/www文件夹
  4. 将config-sample.inc.php文件重命名为 config.inc.php
  5. 添加访问密钥&密钥(从Amazon S3帐户检索)到上面的文件中,保存&出口
  6. 创建一个示例文件以显示Amazon S3中的公共/私有对象
  7. 文件内容应如下所示:

    require('sdk.class.php');
    require('services/s3.class.php');
    
    $s3 = new AmazonS3();
    $bucket = "bucketname";
    $temp_link = $s3->get_object_url($bucket, 'your/folder/path/img.jpg', '5 minute');
    
    echo $temp_link;
    

    在上面的代码中,您作为输出收到的URL是您的私有对象的签名URL,因此它仅在5分钟内有效。

    您可以为将来的日期授予访问权限,并且只允许授权用户访问您在Amazon S3上的私人内容或媒体。

答案 1 :(得分:1)

这个问题有点陈旧,但无论如何我都会张贴它。今天我有一个类似的问题,发现有一个简单的答案。

aws doc清楚地解释了它并且也有一个例子。

http://docs.aws.amazon.com/aws-sdk-php-2/guide/latest/service-s3.html#amazon-s3-stream-wrapper

基本上,您需要注册AWS的流包装并使用s3://协议。

这是我的代码示例。

use Aws\Common\Aws;
use Aws\S3\Enum\CannedAcl;
use Aws\S3\Exception\S3Exception;

$s3 = Aws::factory(array(
    'key'    => Config::get('aws.key'),
    'secret' => Config::get('aws.secret'),
    'region' => Config::get('aws.region')
))->get('s3');

$s3->registerStreamWrapper();

// now read file from s3
// from the doc.

// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}