2014-01-13 31 views
0

正在嘗試爲播放列表分配持續時間......但是正如我在完成該視頻後使用的函數一樣,但我想要的是視頻只能在其播放時播放分配的持續時間之後,它應該停止,下一個視頻應該play..am使用下面的代碼...如何設置html視頻的持續時間

<video id="myVideo" height="100%" width="100%" autoplay onended="run();"> 
     <source id="ss" src="video/video1.ogg" type='video/ogg'> 
    </video> 

    <script type="text/javascript"> 
    // num_files++; 
     //alert(num_files); 
     video_count =1; 
     videoPlayer = document.getElementById("ss");   
     video=document.getElementById("myVideo"); 
     time2= Math.round(+new Date()/1000); 
     function run(){ 
     for(i=1;i<=3;i++) 
     { 
      //alert(duration[i]); 
      time1= Math.round(+new Date()/1000); 

      // alert('ctime'+time1); 
      dur_time=parseInt(time2,10)+parseInt(duration[i],10); 
      // alert('dtime'+dur_time); 
       video_count++; 
       if(time1<dur_time) 
       { 
         video_count--; 

       //alert(video_count); 
       if (video_count > num_files) video_count = 1; 

       videoPlayer.setAttribute("src","video/video"+video_count+".ogg");  
      //alert(video_count); 
      video.pause(); 
      video.load(); 
      video.play(); 
      time1= Math.round(+new Date()/1000); 
       } 
     } 
     } 
    </script> 

回答

1

你需要點擊進入timeupdate事件,播放視頻時被更新:

video.addEventListener('timeupdate', function() { 

    if (this.currentTime >= dur_time) { 
     this.pause(); 
     /// next action 
    } 

}, false); 

你可能可以實現相同的使用輪詢(即。 setTimeout/setInterval/​​),但使用該事件是一種更乾淨的方法,只會根據實際時間更新進行更新。

更新

您也可以停止一定的有效期,這樣以後的視頻,然而,這是不是「幀精確」,但在某些極端的情況下也許有幫助:

var seconds = 3; 

setTimeout(stopVideo, seconds * 1000); /// ms 
video.play(); 

function stopVideo() { 
    if (video.isPlaying) { 
     video.pause(); 
     /// next action 
    } 
} 
+0

timeupdate將正常工作,但問題是,如果視頻是小添e持續時間更多,視頻必須重複..但在這種情況下,它沒有發生..我添加了循環到視頻標籤,但相同的視頻會在超時後重複...因此,如何避免這種情況? – meena

+0

@ user3145475如果視頻正在重複播放,則currentTime將在每次循環時重置。在這種情況下你可以做的是使用你在啓動視頻的同時設置的'setTimeout(stopVideo,wantedDuration)'。這次函數'stopVideo'可以調用暫停方法。如果視頻短於甚至允許這樣做,那麼我認爲你運氣不佳,因爲我們只能在瀏覽器允許的情況下做很多事情,而setTimeout並不準確。我會用一個簡短的例子來更新我的答案。 – K3N

+0

而不是setTimeout的,我們可以使用下面的代碼和它的工作對我罰款video.addEventListener( 「timeupdate」,函數(){// 警報(VIDEO_COUNT); dur_time = parseInt函數(time2,10)+7; if(this.currentTime> = 7 || time1> = dur_time){ this.pause(); advanceVideo(); time2 = Math.round(+ new Date()/ 1000); } } time1 = Math (+新日期()/ 1000); },false); – meena

0

代替setTimeout的,我們可以使用下面的代碼和它的工作對我罰款

video.addEventListener("timeupdate", function() { 
      // alert(video_count); 
      dur_time=parseInt(time2,10)+7; 

     if (this.currentTime >= 7 || time1 >= dur_time) { 
     this.pause(); 
     advanceVideo(); 
     time2= Math.round(+new Date()/1000); 
    } 
    time1= Math.round(+new Date()/1000); 
     }, false);