Javascript 如何将加载程序图像添加到HTML5视频?
除了海报图像,我希望在下载视频时显示加载器图像(动画gif)。这是怎么可能的?您可以将侦听器附加到视频的Javascript 如何将加载程序图像添加到HTML5视频?,javascript,jquery,html,video,Javascript,Jquery,Html,Video,除了海报图像,我希望在下载视频时显示加载器图像(动画gif)。这是怎么可能的?您可以将侦听器附加到视频的加载开始事件,并使用它在视频元素顶部覆盖动画GIF,然后在触发加载数据事件后隐藏加载覆盖。请参阅,以获取可连接到的事件列表 它们还有一个。这相当复杂,您必须收听各种视频事件才能正确显示/隐藏和更新加载程序图像的宽度。这些事件包括(但不限于):loadstart,progress,loadeddata,等待,查找,查找。您可以使用某个开源播放器(例如)或下载其源代码以进一步检查。一种便宜的方法是
加载开始
事件,并使用它在视频元素顶部覆盖动画GIF,然后在触发加载数据
事件后隐藏加载覆盖。请参阅,以获取可连接到的事件列表
它们还有一个。这相当复杂,您必须收听各种视频事件才能正确显示/隐藏和更新加载程序图像的宽度。这些事件包括(但不限于):
loadstart
,progress
,loadeddata
,等待
,查找
,查找
。您可以使用某个开源播放器(例如)或下载其源代码以进一步检查。一种便宜的方法是在海报
属性中使用动画GIF,该属性将在视频开始播放时被替换。例如:
<video poster="loading.gif" preload="auto" controls autoplay>
<source type="video/mp4" src="video.mp4"/>
</video>
我花了很长时间才真正弄明白如何做到这一点,但我将在这里分享,因为我终于找到了一种方法!想想看,这很可笑,因为加载是所有视频都必须做的事情。你可能认为他们在创建html5视频标准时会考虑到这一点 我原本认为应该有效(但不会)的理论是这样的
这对我来说非常有效,但只在mac上的chrome和safari中进行了测试。如果有人发现错误或改进,请告诉我 这是我对这个问题的解决方案,因为pixelearth的答案在firefox上似乎不起作用(可能是假海报的问题) HTML
<video id="video1" height="236" preload="auto" controls>
<source src="yourVideo.mp4">
Your browser does not support HTML5 video.
</video>
CSS
$('#video1').on('loadstart', function (event) {
$(this).addClass('background');
$(this).attr("poster", "/your/loading.gif");
});
$('#video1').on('canplay', function (event) {
$(this).removeClass('background');
$(this).removeAttr("poster");
});
video.background {
background: black
}
有了这个答案,你就不必为了那些不是为之而制作的目的而乱搞假海报或滥用属性。希望这有帮助
当然,可以添加更多的事件来添加海报属性,例如如果它不能在视频中间进一步播放,需要更多的缓冲
您可以找到一个显示我的代码的JSFIDLE
在isVideoLoaded上
标记显示和隐藏加载程序
this.isVideoLoaded=false;
checkVideoLoaded(){
this.isVideoLoaded=true;
}
<video id="video1" height="236" preload="auto" controls>
<source src="yourVideo.mp4">
Your browser does not support HTML5 video.
</video>
$('#video1').on('loadstart', function (event) {
$(this).addClass('background');
$(this).attr("poster", "/your/loading.gif");
});
$('#video1').on('canplay', function (event) {
$(this).removeClass('background');
$(this).removeAttr("poster");
});
video.background {
background: black
}