HTML5 视频在我的服务器上托管时无法播放,从外部来源播放正常
HTML5 video wont play when hosted on my server, plays fine from external source
我想我已经用尽了所有方法来尝试解决 HTML5 视频无法在我的网站上播放的问题。我有一个简单的演示页面(如下)来演示我在哪里。我最初有一个针对不同浏览器的各种格式的视频,但为了更容易测试,我现在只使用 webm 并在 Chrome(版本 41.0.2272.89(64 位)在 Mac [=52= 上进行测试] Yosemite)。您将从上面的页面中看到基本标记。
Demo 1 - .webm video hosted locally on the server - No video playing
我测试了以下内容:
- 视频文件本身是可访问的(cURL 显示 200 响应 header)
- 视频文件具有正确的 MIME 类型(cURL 显示 video/webm 由 .htaccess 设置)
- 视频文件有 ok 权限 (644)
...所以除非我遗漏了一些明显的东西,否则标记很好(对于我正在测试的浏览器)并且文件本身可用且格式正确。
好的,那么问题一定出在文件本身上吗?也许是编解码器问题或其他问题,也许是压缩中损坏的东西?好吧,我不这么认为...
该文件来自外部来源,如果我直接从 third-party 的服务器嵌入它,它工作正常。查看此演示,除了视频文件是在外部托管之外,它在标记方面是相同的:
Demo 2 - Same markup but video hosted elsewhere
对我来说很好用!
所以要确认,每种情况下的标记都是相同的,外部托管时文件加载正常,从外部源下载并上传到我的服务器并在本地引用时完全相同的文件不起作用。
我只能认为我在这里的测试已经排除了视频文件本身以及 HTML 的问题。肯定是文件解析的服务器配置问题?但是,对于 200 响应、通过 .htaccess 添加的正确 MIME 类型和正确的权限,我不知道还能尝试什么。
其他人是否也遇到了同样的问题?我还应该检查什么?
谢谢大家!
我认为你的问题在于字节范围支持。
如果你使用curl
:
curl "http://alkemist.partners/video-js/small.webm" -H "Range: bytes=0-"
您会看到 Empty reply from server
响应,但如果您删除 Range
header,您的服务器 returns 文件会正确。
对于 HTML5 视频未按预期显示的任何其他人,请检查以下内容:
- 支持 MIME 类型
- 排除视频文件本身的问题
- 检查您的服务器是否支持范围请求
在这种情况下,Apache 2.2.23 不支持空范围请求。选项是将 Apache 更新到 2.2.27,如以下线程 Range: bytes 0- FAILS in Apache 2.2.23
中所述
感谢 Pablo Montilla 的指导!
我想我已经用尽了所有方法来尝试解决 HTML5 视频无法在我的网站上播放的问题。我有一个简单的演示页面(如下)来演示我在哪里。我最初有一个针对不同浏览器的各种格式的视频,但为了更容易测试,我现在只使用 webm 并在 Chrome(版本 41.0.2272.89(64 位)在 Mac [=52= 上进行测试] Yosemite)。您将从上面的页面中看到基本标记。
Demo 1 - .webm video hosted locally on the server - No video playing
我测试了以下内容:
- 视频文件本身是可访问的(cURL 显示 200 响应 header)
- 视频文件具有正确的 MIME 类型(cURL 显示 video/webm 由 .htaccess 设置)
- 视频文件有 ok 权限 (644)
...所以除非我遗漏了一些明显的东西,否则标记很好(对于我正在测试的浏览器)并且文件本身可用且格式正确。
好的,那么问题一定出在文件本身上吗?也许是编解码器问题或其他问题,也许是压缩中损坏的东西?好吧,我不这么认为...
该文件来自外部来源,如果我直接从 third-party 的服务器嵌入它,它工作正常。查看此演示,除了视频文件是在外部托管之外,它在标记方面是相同的:
Demo 2 - Same markup but video hosted elsewhere
对我来说很好用!
所以要确认,每种情况下的标记都是相同的,外部托管时文件加载正常,从外部源下载并上传到我的服务器并在本地引用时完全相同的文件不起作用。
我只能认为我在这里的测试已经排除了视频文件本身以及 HTML 的问题。肯定是文件解析的服务器配置问题?但是,对于 200 响应、通过 .htaccess 添加的正确 MIME 类型和正确的权限,我不知道还能尝试什么。
其他人是否也遇到了同样的问题?我还应该检查什么?
谢谢大家!
我认为你的问题在于字节范围支持。
如果你使用curl
:
curl "http://alkemist.partners/video-js/small.webm" -H "Range: bytes=0-"
您会看到 Empty reply from server
响应,但如果您删除 Range
header,您的服务器 returns 文件会正确。
对于 HTML5 视频未按预期显示的任何其他人,请检查以下内容:
- 支持 MIME 类型
- 排除视频文件本身的问题
- 检查您的服务器是否支持范围请求
在这种情况下,Apache 2.2.23 不支持空范围请求。选项是将 Apache 更新到 2.2.27,如以下线程 Range: bytes 0- FAILS in Apache 2.2.23
中所述感谢 Pablo Montilla 的指导!