从亚马逊网络服务S3存储桶生成预签名视频地址时,如果我在web浏览器中使用该地址,视频将以mp4格式下载,但是,如果我将其放入视频标签的src属性中,视频将不会流传输。下面是一个预先签名的url的例子。如何使用此url进行流式传输?
<video width="320" height="240" controls preload="auto">
<source src="https://s3.eu-north-1.amazonaws.com/daycare.videos/iland-guard/yamit/2020-12-09/cam_0/20201209_043123.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA6OHOPCC5DWJXXO7O%2F20210309%2Feu-north-1%2Fs3%2Faws4_request&X-Amz-Date=20210309T075948Z&X-Amz-Expires=900&X-Amz-Signature=1cfb2dc7658b90714cd5b52b157f3caf878be6504a4d5f9d1a1be76a599abae8&X-Amz-SignedHeaders=host" type="video/mp4">
</video>发布于 2021-03-11 05:01:11
为了测试这一点,我执行了以下操作:
.mp4文件放入亚马逊S3存储桶(无存储桶策略,无ACL)<代码>F211中
我确实遇到了一个关于文件名中空格的奇怪问题--我必须引用AWS CLI的路径来包含原始空格,而不是使用+来表示空格。
生成的预签名URL如下所示:
https://bucketname.s3.amazonaws.com/A2%20File.mp4?AWSAccessKeyId=AKIAxxx&Signature=xxx&Expires=1615413373我看到它使用了与您问题中的格式不同的格式。
发布于 2021-09-15 22:41:56
我使用Node库复制了上面的代码。代码看起来运行得很好。要确保的关键是将预签名的URL放在浏览器中时是否有效。无论文件是否存在,SDK都会生成一个URL,因此请确保预签名的URL确实有效。
我的预签名URL的格式与您的格式一致:
<video width="320" height="240" controls preload="auto">
<source src="https://bucket.s3.ca-central-1.amazonaws.com/Glass%20one/2e71b368-1d22-4c56-a690-b534eea3def8.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAQOTARPS7GGSVO5F7%2F20210915%2Fca-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210915T223104Z&X-Amz-Expires=3600&X-Amz-Signature=f61fc82b7ebd55ea83290587786d61fe41cb6137624d243bf36c46257ef2aab6&X-Amz-SignedHeaders=host&x-id=GetObject" type="video/mp4">
</video>https://stackoverflow.com/questions/66543324
复制相似问题