[英]How to show html5 video poster end of video play?
我想在播放后顯示視頻海報。 我正在嘗試以下代碼,但沒有運氣。
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 並在其上綁定一個 click/touchstart 事件以顯示視頻標簽並隱藏覆蓋層。 當結束事件觸發時,只需隱藏視頻標簽並顯示疊加圖像。
最后我用以下代碼實現了我的目標
var video=$('#cms_video').get(0);
video.play();
video.addEventListener('ended',function(){
v=video.currentSrc;
video.src='';
video.src=v;
});
只需在視頻的末尾,顯示一個與海報 src 相同的 div(使用上 z-index 或隱藏視頻)如果您需要重播視頻,請在顯示的 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
或 class 然后你可以這樣做:
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
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.