随着海报图像,我想要一个加载程序图像(动画gif)在视频下载时显示。这怎么可能 ?如何将加载器图像添加到HTML5视频?
回答
您可以将侦听器附加到视频的loadstart
事件,并用它在视频元素顶部叠加动画GIF,然后在触发loadeddata
事件时隐藏加载叠加层。请参阅The W3C's media events draft了解您可以接入的事件列表。他们也有demo page for media events。
这是相当复杂的,你必须听各种视频事件正确显示/隐藏&更新加载器映像的宽度。这些事件包括(但不限于):loadstart
,progress
,loadeddata
,waiting
,seeking
,seeked
。您可以使用某个开源播放器(例如jPlayer)或下载其来源以进一步检查。
一个便宜的方法可能是在poster
属性中使用动画GIF,该属性在视频开始播放时将被替换。例如:
<video poster="loading.gif" preload="auto" controls autoplay>
<source type="video/mp4" src="video.mp4"/>
</video>
我花了太长时间才弄明白如何做到这一点,但我会在这里分享它,因为我最终找到了一个方法!当你考虑它时,这是荒谬的,因为加载是所有视频必须做的事情。你会认为他们会在创建html5视频标准时考虑到这一点。
我原来的理论,我认为应该有工作(但不会)是这个
- 添加加载BG图像视频通过JS和CSS
- 删除加载时准备时播放
简单,对吧?问题在于我无法获取背景图像以显示何时设置了源元素或设置了video.src属性。天才/运气的最后一招是(通过实验)发现,如果海报设置为某种东西,背景图像不会消失。我正在使用一张假海报图片,但我想它可以和一张透明的1x1图片一起使用(但为什么还要担心有另一张图片)。所以这使得这可能是一种破解,但它的工作原理,我不必为我的代码添加额外的标记,这意味着它将适用于我所有使用html5视频的项目。
HTML
<video controls="" poster="data:image/gif,AAAA">
<source src="yourvid.mp4"
</video>
CSS(适用于视频与JS装载类)
video.loading {
background: black url(/images/loader.gif) center center no-repeat;
}
JS
$('#video_id').on('loadstart', function (event) {
$(this).addClass('loading')
});
$('#video_id').on('canplay', function (event) {
$(this).removeClass('loading')
});
这完全适用于我,但仅适用于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>
JS
$('#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");
});
CSS
video.background {
background: black
}
有了这个答案,你就不必为了他们没有做的目的而乱搞假海报或滥用属性。希望这可以帮助。
P.S.您当然可以添加更多的活动来添加海报属性,例如如果它不能在视频的中间进一步发挥,需要更多的缓冲
你可以找到的jsfiddle这表明here
- 1. 如何将下载视频按钮添加到HTML5播放器?
- 2. HTML5视频播放 - 图像预加载
- 3. 如何将图像,文本或视频添加到视频中
- 4. 将图像添加到视频
- 5. 将块加载到html5视频
- 6. HTML5视频加载
- 7. 如何将图像添加到视图
- 8. 如何在加载HTML5视频时制作加载图片?
- 9. 如何将音频添加到视频?
- 10. 将视频文件从洪流加载到html5视频
- 11. 如何将活动指示器添加到图像加载
- 12. 如何添加核心图像过滤器到OpenTok视频?
- 13. Aframe将预加载器添加到图像加载天空
- 14. 目标C:将加载视图添加到视图控制器
- 15. 视频未加载/ html5
- 16. html5视频预加载
- 17. iPad/iPhone HTML5视频加载
- 18. jquery视频html5多个视频添加
- 19. html5视频预加载器问题
- 20. 将图像添加到图像/视频OpenCV
- 21. 等到HTML5视频加载时 - Typescript
- 22. 从URL加载图像并将其添加到列表视图
- 23. 如何将视频添加到灯箱?
- 24. 如何将视频添加到html中
- 25. 如何将Youtube视频添加到UITableView?
- 26. 将视频加载到YTPlayerView
- 27. 推广将视频添加到视频
- 28. 如何在页面加载时完全加载HTML5视频?
- 29. 将图像视图添加到图层
- 30. 将视频添加到Unity3d
不错的工作在我的代码! – sputn1k