我有一些.mp4视频文件存储在AWS S3存储桶中,我可以在Chrome、Firefox和Safari(桌面和移动设备)的HTML5网页中流式传输这些文件。以下是HTML代码:
<video style="margin: 0 auto; width: 70%; display:block;" controls autoplay>
<source src="https://s3.amazonaws.com/my-bucket/item1/16x9/main.mp4" type="video/mp4" />
</video>
然而,我无法在IE 11/10/9上使其正常工作(出现错误:“错误:不支持的视频类型或无效文件路径”)。 我知道该视频已经为IE正确编码,因为如果我将其托管在我的本地Web服务器上,该视频在IE中播放得很好。我查看了Stack Overflow和亚马逊论坛,人们似乎主要遇到的问题是未将元数据Content-Type从“application/octet-stream”更改为“video/mp4”。但是,对我的情况来说,更改这个内容类型似乎没有任何区别。(如下图)开始时,我以为可能只是没有在S3中正确设置内容类型,但是如果我使用fiddler访问S3 URL,我可以看到正确的内容类型实际上是在标头中传递下来的:
HTTP/1.1 200 OK
x-amz-id-2: XsUylpKUMmFPGEQUYyEVdHlicQK3ge2PH6f2lW7quS7ixsBLgEbGww0+qimVGJS4
x-amz-request-id: AC0B4231F897147C
Date: Tue, 30 Jun 2015 15:09:13 GMT
Last-Modified: Tue, 30 Jun 2015 14:38:11 GMT
ETag: "123430248eca490c3fbf7a3a361c1118"
Accept-Ranges: bytes
Content-Type: video/mp4
Content-Length: 35874512
Server: AmazonS3
更加奇怪的是,Fiddler有一个Webview显示选项,可以使用IE窗口呈现视频预览,并且确实可以正常播放视频。
有人有关于如何在IE中播放来自S3的视频的建议吗?
编辑1:
这似乎很奇怪...如果我将指向S3的URL从https更改为http,那么视频在IE中可以播放。这对我来说不是可接受的解决方案,但也许说明了IE通过https流式传输html5视频存在问题?(这似乎应该是一项基本功能,因此我不确定是否对所有https视频都适用。)
编辑2:
好的,所以IE似乎可以正常播放任何通过http指向的视频。然而,如果我的网站托管在http上,而视频托管在https上,则不想在IE中播放它。因此,我将代码上传到启用https的测试服务器上,并发现如果该视频托管在同一域中,则可以通过https播放视频。由于S3显然处于不同的域中,因此仍无法在IE中播放该视频。如果我将带有上述视频标记的test.html文件上传到S3,则该视频在IE中可以正常播放。如果我将相同的test.html文件托管在我的网站上,则无法播放。