我在访问 AmazonS3 上的视频时遇到问题。
我从类似的服务器获取链接
现在我想通过使用 html 视频在网站上显示此内容,但我得到的只是一个错误。 当我在 Chrome 中输入网址时,它会执行某些操作,然后下载视频,以便文件存在。
如何在视频标签中显示该视频?或者有没有可能在javascript中做到这一点?
最佳答案
我建议将 ACL 设置为公共(public),并将所有非 HTML5 格式转换为 mp4,因为 mp4 拥有最多的浏览器支持。
如果您没有桌面 S3 实用程序,您可能想尝试免费的 Cloudberry Explorer。
将您的 ACL 设置更改为公开,无需访问 key 即可访问该文件。
确保内容类型为视频/mp4
如果没有 mp4 的实际链接,我无法查明问题所在。
如果您遇到与提供的示例链接相同的错误,您需要生成新的访问 key 。
如果 ACL 不是公开的,并且客户端将为您生成一组访问 key ,则无能为力。
我可以通过您提供的链接下载该视频。
它是一个 AVI 文件而不是 mp4,因此它无法在 HTML5 中工作 <video>
.
这是没有访问 key 的错误。
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>63085EEB23066C91</RequestId>
<HostId>1bPb9fYkki/LnQIVRVpHfKiSEUGbfX3blBfHLQbwzjZYSzzD8hGBQFp0l9WE=
</HostId>
</Error>
如果您熟悉 PHP,这里有一个简单的 S3 API。
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";
}
关于javascript - Amazon S3 视频无法以 HTML 格式运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28286675/