Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML5视频,如何检测视频是否完全缓冲?_Html_Video_Internet Explorer 9_Buffer - Fatal编程技术网

HTML5视频,如何检测视频是否完全缓冲?

HTML5视频,如何检测视频是否完全缓冲?,html,video,internet-explorer-9,buffer,Html,Video,Internet Explorer 9,Buffer,在播放html5视频之前,我必须完全缓冲 但我找不到一个通用的解决方案 我将视频设置为预加载=‘自动’ 我创建了一个setInterval,其中一个函数每200ms查找video.buffered.end(0)属性,并将其与视频持续时间进行比较 在Chrome和Firefox上,video.buffered.end(0)在一段时间后达到视频持续时间=>OK! 在IE9上,视频缓冲结束(0)达到视频持续时间的+/-85%,并停止进行。但网络显示视频已满负荷 我尝试使用video.seakabl

在播放html5视频之前,我必须完全缓冲

但我找不到一个通用的解决方案

  • 我将视频设置为预加载=‘自动’
  • 我创建了一个setInterval,其中一个函数每200ms查找video.buffered.end(0)属性,并将其与视频持续时间进行比较
在Chrome和Firefox上,video.buffered.end(0)在一段时间后达到视频持续时间=>OK! 在IE9上,视频缓冲结束(0)达到视频持续时间的+/-85%,并停止进行。但网络显示视频已满负荷

我尝试使用video.seakable.end(0),但它直接设置为video duration

那么,如何检测在IE9(和其他浏览器)中完全缓冲的html5视频呢

谢谢大家


<!DOCTYPE html>
<html>
<head>
<title>Preload video via AJAX</title>
</head>
<body>
<script>
console.log("Downloading video...hellip;Please wait...")
var xhr = new XMLHttpRequest();
xhr.open('GET', 'BigBuck.m4v', true);
xhr.responseType = 'blob';
xhr.onload = function(e) {
  if (this.status == 200) {
    console.log("got it");
    var myBlob = this.response;
    var vid = (window.webkitURL ? webkitURL : URL).createObjectURL(myBlob);
    // myBlob is now the blob that the object URL pointed to.
    var video = document.getElementById("video");
    console.log("Loading video into element");
    video.src = vid;
    // not needed if autoplay is set for the video element
    // video.play()
   }
  }

xhr.send();
</script>

<video id="video" controls autoplay></video>

</body>
</html>
通过AJAX预加载视频 console.log(“正在下载视频…hellip;请稍候…”) var xhr=new XMLHttpRequest(); xhr.open('GET','BigBuck.m4v',true); xhr.responseType='blob'; xhr.onload=函数(e){ 如果(this.status==200){ console.log(“明白了”); var myBlob=this.response; var vid=(window.webkitURL?webkitURL:URL).createObjectURL(myBlob); //myBlob现在是对象URL指向的blob。 var video=document.getElementById(“视频”); log(“将视频加载到元素”); video.src=vid; //如果为视频元素设置了自动播放,则不需要 //视频播放() } } xhr.send();

这里有更多参考资料。

这可能是您问题的答案-。除了IE9不支持createObjectURL之外