【发布时间】:2015-02-27 01:12:56
【问题描述】:
我们的网站上有一个 MP4 视频;它在 IE9+、Firefox、Chrome 和 Mac 上的 Chrome 中运行良好。但是,在 Safari 上,视频根本不播放 - 它确实触发了“停顿”事件,然后没有加载。我会发布我们的 HTML,但我通过发现即使导航到原始 MP4 的 URL 也不会播放它来进一步追踪问题。下载并在本地播放后,该视频在 Quicktime 中运行良好。
在我们所有的开发人员中,最奇怪的是,当我从我的开发计算机运行相关服务器时,我可以让视频在 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 网络服务器的某种服务器问题。我们确实正确注册了 Content-Types,这至少涵盖了基础知识,但我很好奇是否还有其他必要的部分。
更多信息:我最初没想过要提及这一点,但我们正在通过 HTTPS 连接加载我们的网页和视频。我们的大多数测试服务器都没有有效的证书,因此我们需要单击标准浏览器警告“这台服务器可能不是它所说的那样”。我们现在正在研究如何在我们的所有服务器上拥有正确的证书。
【问题讨论】:
-
您能否提供出现此问题的视频的链接?
-
@AlexanderO'Mara 对不起,但没有;这是正在开发的产品的一部分。我会整理一个小示例小提琴,但似乎标题很可能是相关的,当然默认配置 Apache 服务器上正确编码视频的基本示例可以正常工作。
-
我尝试将我的本地服务器配置为提供具有相似标题的视频,但仍然无法重现它。除非我们能获得示例视频,否则我不确定我们能做些什么,只能猜测。
-
@AlexanderO'Mara 不幸的是,这是真的。我很难在一些小提琴中传递所有因素,比如典型的 JS 问题。我不认为有问题的 MP4 文件是问题的一个因素(我可能会重新测试这个想法,但我想我记得在其他视频文件中发现了类似的问题)。否则,可能与某些标头、特殊 HTTP 操作的服务器支持或 Safari 小修订等有关。
-
注意:自从我发布这个问题以来的一些发现; Safari 在使用自签名证书的页面上播放视频时可能会出现问题。在 Safari 中,您可以展开证书的详细信息并告诉它永久接受自签名证书,这可能会导致视频正常工作。此外,即使通过远程连接从服务器检索数据需要很长时间,
stalled事件也可能会触发。这可能对您有所帮助,也可能无济于事。