如何检查html5视频是否有足够的缓冲,以便在不停止缓冲的情况下播放
How to check if html5 video is buffered enough to play without stopping to buffer?
所以我的问题是,你如何检查视频,看看它是否缓冲到可以播放,但又不停下来再次缓冲,如果这是真的,那么播放视频。
或者我该如何检查视频是否缓冲了50%,然后它是否播放了视频。
我试过的(但当我看到控制中的buff量时,它似乎不是缓冲的)
var Video = document.getElementById("videoPlayer");
Video.oncanplaythrough = function HasBuff() {
alert("Is Buffered");
Video.play();
};
正如之前所说的,当查看视频的控制时,这个代码似乎没有太多的缓冲,甚至1/4都没有缓冲,Prehaps最好是检查视频是否缓冲了50%左右,然后播放它,尽管我不确定如何做到这一点或如何进行。
感谢您的阅读,我处于"初学者水平",所以如果这似乎是一个简单或愚蠢的问题,很抱歉,但我们都必须从某个地方开始,对吗?:)再次感谢。
我认为你可以在播放事件时使用这个
var vid = document.getElementById("myVideo");
vid.onplaying = function() {
alert("The video is now playing");
};
或者,如果你想检查视频当前是缓冲区,你可以在这里使用onwaiting事件更多信息http://www.w3schools.com/tags/ref_av_dom.asp
我做了一个小测试:
var vid = document.getElementById("video");
var buffered = function() {
var bufferedPercent =
vid.duration > 0 && vid.buffered.length > 0 ?
vid.buffered.end(0) / vid.duration * 100 :
0;
return 'buffered ' + bufferedPercent.toFixed(0) + '%';
};
vid.onprogress = function() {
console.log('progress: ' + buffered());
};
vid.oncanplay = function() {
console.log('canplay: ' + buffered());
};
vid.oncanplaythrough = function() {
console.log('canplaythrough: ' + buffered());
};
vid.onsuspend = function() {
console.log('suspend: ' + buffered());
};
在Chrome上,我得到这样的输出:
canplay: buffered 5%
canplaythrough: buffered 5%
progress: buffered 15%
progress: buffered 25%
suspend: buffered 25%
我的测试视频"缓冲"从未超过25%(自动播放禁用)。在Firefox上,停留时间为19%。
所以看起来你不能强迫浏览器缓冲超过它想要的。我也试过显式调用load(),没有区别。也许如果你向前搜索,它可能会缓冲更多,但它可能会丢弃已经缓冲的部分(我没有尝试过)。但浏览器在触发canplaythrough事件后似乎缓冲了很多,然后在停止缓冲时触发了suspend事件,所以也许您可以使用它。
总之,我看到的选项是:
- 理想的方式是:相信浏览器对何时开始播放的估计(autoplay=true)
- 破解方法:等待挂起事件,然后启动视频(autoplay=false)。这两个浏览器似乎以这种方式进行了更多的缓冲
类似这样的东西:
vid.onsuspend = function() {
if (vid.paused) {
vid.play();
}
};
相关文章:
- 如何播放部分音频文件
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 播放当前视频时如何停止其他视频?JavaScript
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 是否可以使用iframe API在iOS浏览器上播放youtube视频
- 如何检查用户在html5视频播放器中观看了完整的视频
- tiltSlider播放/暂停视频元素(如果li有当前类)
- 可以在响应时隐藏iphone上的“播放”按钮以进行视频播放
- JS,用于播放提示音以通知未按预期工作
- 如何检查html5视频是否有足够的缓冲,以便在不停止缓冲的情况下播放
- 使 Flowplayer-Flash 在缓冲时立即播放视频
- JavaScript + HTML5 音频播放器 - 停止缓冲,事件处理程序问题
- icecast audio.js在没有缓冲的情况下播放
- 让JW播放器在点击播放之前缓冲帧
- 只有在缓冲完完整的视频后才能开始播放HTML5视频
- 如何流播放器播放,而mp4文件是缓冲
- 创建一个寻找、暂停或播放的缓冲视频
- HTML5缓冲和播放音频与createMediaElementSource()
- 使用IFrame API的YouTube嵌入式视频不能播放完美的循环,并在每个循环中重新缓冲视频
- 在iPad上播放playVideo()命令后,YouTube iFrame API处于缓冲状态