Tov*_*vi7 13 javascript video html5 google-chrome html5-video
我在浏览视频时遇到了问题.
出于某种原因,无论我做什么,video.seekable.end(0)总是0.
当我打电话video.currentTime = 5,然后console.log(video.currentTime),我看到它总是0,这似乎重置了视频.
我已经尝试了基于MP4和VP9的webm格式,但两者都给出了相同的结果.
更令人讨厌的是,Firefox完美地运行了一切.我应该知道Chrome有什么特别之处吗?
这是我的代码(仅适用于Firefox):
<div class="myvideo">
<video width="500" height="300" id="video1" preload="auto">
<source src="data/video1.webm" type="video/webm"/>
Your browser does not support videos.
</video>
</div>
Run Code Online (Sandbox Code Playgroud)
这是javascript:
var videoDiv = $(".myvideo").children().get(0)
videoDiv.load();
videoDiv.addEventListener("loadeddata", function(){
console.log("loaded");
console.log(videoDiv.seekable.end(0)); //Why is this always 0 in Chrome, but not Firefox?
videoDiv.currentTime = 5;
console.log(videoDiv.currentTime); //Why is this also always 0 in Chrome, but not Firefox?
});
Run Code Online (Sandbox Code Playgroud)
请注意,简单地调用videoDiv.play()确实可以在两种浏览器中正确播放视频.
此外,在完全加载电影文件后videoDiv.buffered.end(0),两个浏览器中也会给出正确的值.
Tov*_*vi7 24
我花了一段时间来搞清楚......
问题原来是服务器端.我使用Jetty版本来提供所有视频文件.Jetty的简单配置不支持字节服务.
Firefox和Chrome之间的区别在于Firefox将下载整个视频文件,以便您可以通过它进行搜索,即使服务器不支持http代码206(部分内容).另一方面,Chrome拒绝下载整个文件(除非它真的很小,比如大约2-3mb).
因此,currentTime要使html5视频的参数在Chrome中运行,您需要一台支持http代码206的服务器.
对于有此问题的其他人,您可以使用curl仔细检查您的服务器配置:
curl -H Range:bytes=16- -I http://localhost:8080/GOPR0001.mp4
Run Code Online (Sandbox Code Playgroud)
这应该返回代码206.如果它返回代码200,则Chrome将无法搜索该视频,但由于浏览器中的解决方法,Firefox将会搜索该视频.
最后一个提示:您可以使用npm http-server为支持部分内容的本地文件夹获取一个简单的http服务器:
npm install http-server -g
Run Code Online (Sandbox Code Playgroud)
并运行它来提供本地文件夹:
http-server -p 8000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10308 次 |
| 最近记录: |