如何显示html5视频海报结束视频播放

How to show html5 video poster end of video play?

本文关键字:视频 海报 结束 播放 html5 何显示 显示      更新时间:2023-09-26

我想在播放后展示视频海报。我正在尝试遵循代码,但没有运气。

var video=$('#cms_video').get(0);
video.play();
video.addEventListener('ended',function(){
    this.posterImage.show();
});  

一种更直接的方法:

<script type="text/javascript">
var video= $('#cms_video').get(0);       
video.addEventListener('ended',function(){
    video.load();     
},false);
</script>

这是loganphp答案的快捷方式。事实上,当更改视频标签的 src 时,您会隐式调用其上的 load()。

此方法需要再次请求媒体 URL,并且根据缓存设置,它可能会重新下载完整长度的媒体资源,从而导致客户端不必要的网络/CPU 使用率。但它仍然以loganphp问它的方式回答了这个问题。

如果您想绕过此警告,您可以使用并覆盖图像/div,并在其上绑定单击/触摸启动事件以显示视频标签并隐藏叠加层。触发已结束事件后,只需隐藏视频标签并显示叠加图像即可。

这是我

找到的解决方案:

var video=$('#cms_video').get(0);        
video.play();
video.addEventListener('ended',function(){
    v=video.currentSrc;
    video.src='';
    video.src=v;            
});

只需在视频末尾,显示一个与海报相同的div(带有较高的 z 索引或隐藏视频)如果需要重播视频,请在显示的div 上绑定点击事件(以切换可见性和重播)

**视频开始自动播放,海报显示在视频末尾**

<script src="http://ajax.googleapis.com/ajax/libs/prototype/1.7/prototype.js"></script>
<body>
<script type="text/javascript">
document.observe('dom:loaded', function(evt){
    $$('video').each(function(elm){
        elm.play();
      var wrapper = elm.wrap('span');
      var vid = elm.clone(true);
      elm.observe('ended', function(){
        wrapper.update(vid);
     });
    });
});
</script>
<video id="myvideo" poster="1.png" >
    <source src="1.mp4" type="video/mp4" />
</video>

试试这个

var video=$('#cms_video').get(0);        
  video.play();
  video.addEventListener('ended',function(){
   v=video.currentSrc;
   video.src='';
   video.src=v;   
   $('#cms_video')[0].autoplay=false
    $('#cms_video')[0].load()
});  

尝试给你的海报一个id或类,然后你可以做:

var video=$('#cms_video').get(0);
video.play();
video.addEventListener('ended',function(){
    $('#poster').show();
    // ^ Use . here if you apply class instead of if for your poster 
});