我有一个存储在AWS S3存储桶中的.mp4视频文件,我能够从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中使用此功能(我得到的错误是&#34;错误:不支持的视频类型或无效的文件路径&#34;)。我知道视频是为IE正确编码的,因为如果我在我的本地网络服务器上托管它,视频在IE中播放就好了。
我已经挖掘了Stack Overflow和亚马逊论坛以及人们似乎遇到的主要事情并没有改变元数据Content-Type来自&#34; application / octet-stream&#34;到&#34;视频/ mp4&#34;。为我改变这一点似乎对IE没有任何影响:
起初我想也许我只是没有在S3中正确设置内容类型,但是如果我使用fiddler点击S3网址,我可以看到正确的内容类型实际上是在标题中传递下来的:
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托管的,那么它不想播放它。因此,我将代码推送到启用了https的测试服务器,发现我可以通过https IF播放视频,视频托管在同一个域中。由于S3显然处于不同的域中,因此仍然无法在IE中播放视频。如果我将test.html文件上传到具有上述视频标记的S3,则视频在IE中播放正常。如果我在我的网站上托管了相同的test.html文件,则无法播放。
答案 0 :(得分:0)
我相信您可能会看到混合内容阻止(来自不同域的HTTP和HTTP)。看看这里:http://wiki.sln.suny.edu/display/SLNKB/Enabling+mixed+content+in+Internet+Explorer
答案 1 :(得分:0)
我遇到了完全相同的问题。最后,我发现IE在下载视频之前尝试访问ocsp.digicert.com,如果访问失败(因为ocsp.digicert.com无法访问),则视频无法播放。
IE尝试访问ocsp.digicert.com的原因是OCSP(在线证书状态协议)。证书颁发机构(CA)可以撤销SSL证书,浏览器将检查他们访问的网站是否仍然可用(不被撤销)。
通常,如果OCSP检查失败(网络无法访问),IE仍将完成其工作。但嵌入在不同网站上的视频将无法播放。我认为这是一个错误。
您可以在IE设置中禁用OCSP。
一些参考文献: