Amazon S3 视频在 HTML 中不起作用

Amazon S3 video doesn't work in HTML

本文关键字:不起作用 HTML S3 视频 Amazon      更新时间:2023-09-26

我在 AmazonS3 上访问视频时遇到问题。

我从服务器获得链接,例如

https://myabc.s3.amazonaws.com/myvideo.mp4?Expires=1730335925&AWSAccessKeyId=ACDG57GDUYHLP7LYQ46Q&Signature=%2FkR9QTXf6bdHdHA%2ByTHwXdfDfo%3D。

现在我想使用 html 视频在网站上显示它,但我得到的只是一个错误。当我在 chrome 中输入 url 时,它会执行一些操作,然后下载视频以便文件存在。

如何在视频标签中显示此视频? 或者是否有可能在 JavaScript 中执行此操作?

我建议将ACL设置为公共并将所有非HTML5格式转换为mp4,因为mp4具有最多的浏览器支持。

如果您没有桌面S3实用程序,您可能需要尝试免费的Cloudberry Explorer。

将 ACL 设置更改为"公共",无需访问密钥即可访问该文件。

确保内容类型为视频/mp4

如果没有指向mp4的实际链接,我无法确定问题所在。

如果收到与提供的示例链接相同的错误,则需要生成新的访问密钥。

如果 ACL 不是公有的,并且客户端将生成一组访问密钥,则无法执行任何操作。

我能够使用您提供的链接下载视频。

它是一个AVI文件而不是mp4,因此在HTML5 <video>中不起作用。

这是没有访问密钥的错误。

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>63085EEB23066C91</RequestId>
<HostId>1bPb9fYkki/LnQIVRVpHfKiSEUGbfX3blBfHLQbwzjZYSzzD8hGBQFp0l9WE=
</HostId>
</Error>

如果您熟悉PHP,则有一个简单的S3 API。

Services_Amazon_S3

require_once 'Services/Amazon/S3.php';
require_once 'Services/Amazon/S3/Stream.php';
$key    = 'ASJMGERQERMGADMA';
$secret = 'hA9/wrWUMX7A0UADLNGBQEUIROH2cPjx+C';
$s3     = Services_Amazon_S3::getAccount($key, $secret);
$stream = Services_Amazon_S3_Stream::register('s3',array('access_key_id'=> $key,'secret_access_key' => $secret));
foreach ($s3->getBuckets() as $bucket){
    $name = $bucket->name ;
    $path = "s3://$name/";
}
$cnt = 0;
$ndx = 0;
$bucket = $s3->getBucket($name);
foreach ($bucket->getObjects() as $object){
    $key = $object->key;
    $url = urldecode($object->getURL());
    echo "<p>$key => $url";   
}