【问题标题】:HTML5 video wont play when hosted on my server, plays fine from external source托管在我的服务器上时,HTML5 视频无法播放,从外部源播放正常
【发布时间】:2015-03-15 12:47:08
【问题描述】:

我想我已经用尽了所有方法来尝试解决 HTML5 视频无法在我的网站上播放的问题。我有一个简单的演示页面(如下)来演示我的位置。我最初有一个适用于不同浏览器的各种格式的视频,但为了更容易测试,我现在只使用 webm 并在 Chrome(Mac OSX Yosemite 上的版本 41.0.2272.89(64 位))中进行测试。您将在上面的页面中看到基本标记。

Demo 1 - .webm video hosted locally on the server - No video playing

我已经测试了以下内容:

  • 视频文件本身可访问(cURL 显示 200 响应标头)
  • 视频文件具有正确的 MIME 类型(cURL 显示由 .htaccess 设置的视频/webm)
  • 视频文件具有 ok 权限 (644)

...所以除非我遗漏了一些明显的东西,否则标记是好的(对于我正在测试的浏览器)并且文件本身是可用的并且格式正确。

好的,那么问题一定出在文件本身上吗?也许是编解码器问题或其他什么,也许是压缩中损坏的东西?好吧,我不这么认为......

该文件来自外部来源,如果我直接从第三方服务器嵌入它,它可以正常工作。看看这个演示,除了视频文件在外部托管之外,它的标记是相同的:

Demo 2 - Same markup but video hosted elsewhere

对我来说很好用!

所以要确认一下,每种情况下的标记都是相同的,外部托管的文件加载正常,从外部源下载并上传到我的服务器并在本地引用时完全相同的文件不起作用。

我只能认为我在这里的测试已经排除了视频文件本身以及 HTML 的问题。一定是文件解析的服务器配置问题吗?但是,对于 200 响应,通过 .htaccess 添加了正确的 MIME 类型和正确的权限,我不知道还能尝试什么。

其他人都看到同样的问题吗?我还应该检查什么?

谢谢大家!

【问题讨论】:

  • 刚刚注意到一些事情......虽然 cURL 显示本地托管视频文件的状态为 200,但在 Chrome 的“网络”选项卡的开发人员工具中,该文件未加载并显示“ERR_EMPTY_RESPONSE”。什么可能导致这种情况?我对开发者工具中的调试不熟悉。

标签: html video mime-types mp4 webm


【解决方案1】:

对于 HTML5 视频未按预期显示的其他人,请检查以下内容:

  • 支持 MIME 类型
  • 排除视频文件本身的问题
  • 检查您的服务器是否支持范围请求

在这种情况下,Apache 2.2.23 不支持空范围请求。选项是将 Apache 更新到 2.2.27,详见以下线程 Range: bytes 0- FAILS in Apache 2.2.23

感谢 Pablo Montilla 的指导!

【讨论】:

    【解决方案2】:

    我认为您的问题在于字节范围支持。

    如果你使用curl

    curl "http://alkemist.partners/video-js/small.webm" -H "Range: bytes=0-"
    

    您将看到 Empty reply from server 响应,但如果您删除 Range 标头,您的服务器会正​​确返回文件。

    【讨论】:

    • 这是一个好地方 Pablo,谢谢。老实说,我不知道这是视频无法播放的问题。这对您来说是否意味着更多?
    • 播放器可能需要范围支持来进行搜索,并且不会期望范围请求的 NO CONTENT 响应...我认为您有一个配置问题,导致您的服务器无法返回正确的响应.
    • 同意...但是配置问题是什么。这是一个“标准”的 LAMP 堆栈,我没有进行任何调整,就可以假定对此提供开箱即用的支持。
    • 我不知道是什么原因造成的...也许可以在 superuser.com 中询问?
    猜你喜欢
    • 1970-01-01
    • 2014-06-27
    • 2012-01-30
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 2013-07-05
    相关资源
    最近更新 更多