HTML5从多个部分播放电影而不闪烁屏幕
我有一个video标签和一部电影,每部分10秒钟,名称:1.webm,2.webm ……. 1535.webm。 我尝试制作一个js代码,用于查找video何时结束并播放下一个,但我遇到了问题:屏幕闪烁且电影没有连续播放。 我需要像电影一样播放,连续video。
有没有选择呢? 如果它不在JavaScript中,或者它是许多脚本和代码的组合,则无关紧要。
var src = 0; var video = document.getElementById("my_video"); document.querySelector("#my_video").addEventListener("ended", nextVideo, false); function nextVideo() { src = src + 1; video.src = "files/" + src + ".webm"; video.play(); }
如果你改变video的src
会变得非常困难,因为它会在src
改变后加载整个video,因此你面临着闪烁的屏幕效果。 使用video部件似乎无法获得无缝video,但您可以这样尝试:
使用每个video的不同elements
预加载所有video,并将preload="auto"
属性设置为所有元素。 您需要以一种一次播放一个video的方式播放元素的可见性。 第一个video将autoplayed
。 触发ended
事件时,只需将下一个元素的可见性更改为true,将前一个元素更改为false(不要使用dispay:block/display:none
因为我观察到在某些移动设备中,具有样式display:none
video标记display:none
被浏览器预先加载。 还要保留一些videobackground
,以避免白色背景闪光效果。
请参阅此代码段:
var my_video = document.getElementById("my_video"); var my_video2 = document.getElementById("my_video2"); document.querySelector("#my_video").addEventListener("ended", nextVideo, false); function nextVideo() { my_video2.play(); my_video2.setAttribute('class', ''); my_video.setAttribute('class', 'hidden'); }
.hidden { position: absolute; top: -10000px; left: -10000px; } video { background: black; }
可能这将帮助您制作两个video标签,并在第一个video标签上设置第一个10秒电影,在第二个video标签上设置第二个电影,第三个再次在第一个video标签上设置此过程逐个完成。
检查我的链接http://jsfiddle.net/qoch687a/2/
有timeupdate事件每秒触发,我们检查持续时间
video.ontimeupdate = function timeUp(e){ if(parseInt(e.originalTarget.duration - e.originalTarget.currentTime)==1){ document.getElementById("my_video1").src=videos[1]; document.getElementById("my_video1").play(); document.getElementById("my_video1").onloadeddata = function(){ clearInterval('intTime'); intTime = setTimeout(function(){document.getElementById("my_video").style.display="none"; document.getElementById("my_video1").style.display="block";},1000); }; } }