我希望能够使用 HTML5 video 标签播放特定时间的视频(目前只需要担心 Chrome)。这可以通过设置视频元素的 currentTime 属性来实现。对于来自 html5rocks.com 的视频,这在 Chrome 中运行良好,但当从我自己的本地网络服务器加载相同文件时,它会被忽略。
使用 http://playground.html5rocks.com/#video_tag 中的示例代码,我得到了以下 HTML:
<!DOCTYPE html>
<html>
<body>
<video id="video1" width="320" height="240" volume=".7" controls preload=true autobuffer>
<source src="http://playground.html5rocks.com/samples/html5_misc/chrome_japan.webm" type='video/webm; codecs="vp8, vorbis"'/>
</video>
<input type=button onclick="play()" value="play">
<input type=button onclick="setTime()" value="setTime">
<input type=button onclick="pause()" value="pause">
<script>
var play=function() {
document.getElementById("video1").play();
}
var setTime=function() {
document.getElementById("video1").currentTime=2;
}
var pause=function() {
document.getElementById("video1").pause();
}
</script>
</body>
</html>
使用 Chrome,如果你
- 等待视频下载 一点(直到进度条是 大约 10%)
- 按 setTime - 你 应该注意到时间跳到 2 秒
- 按下播放键
...视频将在 2 秒后开始。
但是如果我将源 src 中的 webm 文件下载到我的本地网络服务器,并将 src 更改为指向本地:
<source src="chrome_japan.webm" type='video/webm; codecs="vp8, vorbis"'/>
...然后设置 currentTime 被完全忽略。开发人员工具控制台中未显示任何错误。
现在,我的网络服务器正在使用 mime 类型“video/webm”提供此服务,但它将像任何旧文件一样提供服务——而不是流式传输。
我需要一个以某种特定方式流式传输的网络服务器吗?这里还有什么问题?
注意:网络服务器是一个专有平台,不会有任何与 Tomcat 或其他一些常用网络服务器相同的设置或控制,尽管可能有其他方法可以达到相同的效果。
最佳答案
确保您的网络服务器能够使用字节范围提供文档。 Google Chrome 浏览器要求此功能有效。没有它,搜索将被禁用并且设置 currentTime
将无效。
要测试您的 Web 服务器是否执行此操作,请使用以下命令:
curl --dump-header - -r0-0 http://theurl
响应状态必须为 206 Partial Content
,您应该只收到资源的第一个字节,而不是整个资源。
-菲尔
关于Chrome 中的 HTML5 视频标签 - 为什么从我的网络服务器下载视频时忽略 currentTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4572720/