2014-12-30 65 views
6

我们在我们的网站上有MP4视频;它在Mac上的IE9 +,Firefox,Chrome和Chrome中运行良好。但是,在Safari上,视频根本无法播放 - 它确实触发了“停顿”事件,然后什么也没有加载。我会发布我们的HTML,但我通过发现Safari甚至在导航到原始MP4的URL时不会播放它来进一步追踪问题。在本地下载和播放时,视频在Quicktime中运行良好。<video>在其他浏览器中播放,但不在Safari中播放

这是我们所有开发人员中最奇怪的部分,可以让我的开发计算机运行相关的服务器上的视频工作在Safari。而且,同一目录中的其他MP4文件也有类似的问题。这一直是我的关键,我一直在寻找从服务器的视频传输方式 - 请求/响应标题,确切的文件大小等方面的任何细微差别。

从Chrome复制的标题(仅限于Safari更难/浆糊)

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8 
Cache-Control:max-age=0 
Connection:keep-alive 
DNT:1 
Host:*************:8443 
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 

Response Headers 
Accept-Ranges:bytes 
Content-Length:44875102 
Content-Type:video/mp4;charset=UTF-8 
Date:Tue, 30 Dec 2014 21:11:51 GMT 
ETag:W/"44875102-1419959755000" 
Last-Modified:Tue, 30 Dec 2014 17:15:55 GMT 
Server:Apache-Coyote/1.1 

(同样复制,以防万一这让你想起一个老问题,我在Windows上的Safari知道已经死了年龄这个问题是发生在OS X)。

编辑:可能有所帮助的新信息。我从我自己的网络服务器上收集了一个个人视频,该服务器能够从那里出现问题性的Safari浏览器,并将其下载到我们服务器的本地视频目录中。 从那里,它遇到了与我们其他视频相同的问题。这表明MP4本身可能并不重要 - 这可能是Tomcat 7网络服务器的某种服务器问题。我们确实已经正确注册了内容类型,至少涵盖了基本内容,但是我很好奇是否还有其他必要的部分。

更多信息:我最初并没有想到这一点,但我们正在通过HTTPS连接加载我们的网页和视频。我们的大多数测试服务器都没有有效的证书,所以我们需要点击标准浏览器警告“这个服务器可能不是它说的那个人”。我们正在研究如何在我们的所有服务器上拥有正确的证书。

+0

您是否可以提供发生此问题的视频的链接? –

+0

@ AlexanderO'Mara对不起,但没有;这是正在开发的产品的一部分。我把一个小例子小提琴放在一起,但它似乎很有可能是相关的,当然,默认配置Apache服务器上正确编码视频的基本示例正常工作。 – Katana314

+0

我尝试配置我的本地服务器来提供具有类似标题的视频,但仍无法复制它。除非我们可以看到一个示例视频,否则我不确定我们能做什么,但猜测还有很多。 –

回答

0

...

在附注中,charset对视频/ mp4类型有什么意义?尝试去除它上面的字符集。

编辑:是的,字符集可能是问题,请参阅:Specify content-type for documents uploaded in Magnolia

EDIT2:没有字符集,woops,阅读理解失败。可能是字节范围? 引用:“[...]我们发现Safari/iOS”使用HTTP字节范围来请求音频和视频文件。“现在我们猜测Magnolia DMS文件服务不支持此功能,因此流式传输失败。“

+0

真正烦人的是我想要一个简单的方法来确认这一点,但在Safari的开发人员工具中,当我点击MP4文件的网络请求时,它错误地声称没有请求或响应标头。也许我会找到另一种验证方式。 – Katana314

+0

没有机会测试链接?如果需要的话,悄悄话给我(twitter = @nexii) –

2

请确保controls ='true'type ='video/mp4'在您的html代码中给出。

<video loop controls='true' width='100%' height='100%' src='//some_video.mp4' type='video/mp4'></video> 
+0

嗯......据我所知,'controls'是一个布尔属性,这意味着它不需要'='true'',我知道的资源中没有提到一个'type = etc'属性在视频标签上。 我从来没有给我的HTML本身,但基本上我已经非常类似于你的,除了在视频内的'source'元素内定义的src/type。 – Katana314

+0

@ Katana314我同意你在大多数情况下,但不是这一个。 –

+0

@ huazihihao同意什么? – Katana314

0

如果将这些添加到您的.htaccess会发生什么?

AddType video/ogg .ogv 
AddType video/mp4 .mp4 
AddType video/webm .webm 
+0

这不是一个Apache服务器,所以不是htaccess。不过,它通过其他配置文件具有MIME类型。 – Katana314

+0

如果您将生成的HTML保存为html文件,并将其加载到Safari中(在修复任何损坏的URL后),它是否工作? – neokio

+0

否;如果视频网址直接在浏览器中加载,它甚至不会工作。 – Katana314

0

这可能确实是缺少字节范围支持的问题,具体取决于您使用的版本。它被添加到MAGNOLIA-3855(Magnolia fix version 4.4.6)的DMSDownloadServlet中。

4

Safari要求网络服务器支持“Range”请求标头才能播放媒体内容。

https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariWebContent/CreatingVideoforSafarioniPhone/CreatingVideoforSafarioniPhone.html#//apple_ref/doc/uid/TP40006514-SW6

对于一个合法的 “范围” 请求响应,你webserve需要返回状态代码 “206”。

+0

这是真的。这也意味着您必须在应用程序代码中为动态生成或转换的内容添加额外的图层(例如Varnish或Nginx)或完全重新实现范围处理。 –

0

最近,我的团队遇到了一个导致相同行为的特定问题。我们使用的是Apache 2.4,并注意到如果我们启用了诸如.htpasswd之类的身份验证层,即使进行身份验证后,Safari也不会显示视频。就好像它不会继续遵守某些类型的后续HTTP请求的初始认证许可。

对不起,我没有更多的技术可以提供,但它是检查任何人遇到视频问题只在Safari。

0

我遇到了同样的问题并解决了这个问题,但这里没有其他答案不涉及我的问题,所以我将继续为有人跟踪的解决方案。

我一直在制作我自己的视频流媒体服务器,在被质疑的情况下,它只是返回一个“Ranged”mp4文件,并且我发现Safari不播放HTTP响应中缺少“连接”响应头文件因为某些原因。

相关问题