如何配置S3和Cloud Front以流式传输HTML5视频?尝试了所有方法。

23

我尝试了很多不同的配置、文件、编码、浏览器等等,但这是最简单的示例,可以展示出我遇到的问题。

如果你在FF 8.0.1中粘贴JSPlayer示例视频的url,视频会内联播放:

http://video-js.zencoder.com/oceans-clip.webm

如果我将同样的视频上传到我的s3 bucket中,它将触发下载:

https://s3.amazonaws.com/turingvideos/oceans-clip.webm -- 或 -- http

(该文件和bucket对于所有人都有读取权限)

那么,让我们尝试Cloud Front。

d2yat6m71lu23b dot cloudfront dot net slash oceans-clip.webm(下载触发)

以及Cloud Front流式传输:

strzsu4h2ax96 dot cloudfront dot net slash oceans-clip.webm(无限旋转符号)

使用html video标签时也会发生同样的基本情况。从zencoder正常工作,其他任何东西都会损坏,除了本地磁盘读取。

那么,zencoder正在处理什么魔法,而S3/CloudFront则完全超出了我的能力?我完全不知所措。

编辑:

将内容类型和disposition设置为“video/webm”和“inline”,问题得以解决。感谢你们的快速响应。


1
你尝试在S3上的文件中设置HTTP头部的“Content-Type”和“Content-Disposition”了吗? - Lior Cohen
刚刚按照下面的建议操作,问题得到了解决。谢谢。 - turing1
@turing1:请接受最佳答案! - Peter K.
1个回答

48

使用S3 Web管理控制台(https://console.aws.amazon.com/s3),选择您的存储桶(bucket),右键点击其中一个视频文件,切换到元数据(metadata)选项卡并设置两个头部(header):

  • Content-Type: 与您的视频文件的内容类型相对应
  • Content-Disposition: inline

此外,请确保您的CloudFront分发(distribution)设置为“流式传输(streaming)”而不是“下载(download)”。

编辑:

来自AWS文档:

  

CloudFront服务器不确定它们提供服务的对象的MIME类型。因此,在将对象上传到您的源(origin)时,您应该设置对象的Content-Type标题(header)。

来源:http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/ObjectMIMEType.html


8
@turing1 - 如果这个答案解决了你的问题,你应该将其标记为被接受的答案(在票数下面的左侧打勾)。 - Geoff Appleford
我也试过了,这里还有一个要点。S3管理控制台有一个元数据下拉选择框,其中并没有提供"video/mp4"等选项...不过没关系,你可以在下拉框中自己输入。我花了一些时间才弄明白这一点。谢谢! - Craig Van Sant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接