2013-10-25 144 views
8

我試圖在HTML5視頻播放視頻或播放視頻之前在視頻縮略圖上顯示視頻持續時間,如同您在視頻管或任何其他視頻網站上看到的一樣。HTML5不播放視頻的視頻持續時間

任何幫助將非常感激。

在此先感謝。

+2

我認爲這並不總是可能的,但不啓動該影片。我還懷疑,如果youtube做到了,那麼他們會預先處理服務器上的電影以獲取持續時間。 – akonsu

回答

15

對於HTML5,您應該可以在加載文件的元數據後使用視頻標籤的duration屬性。看到這個答案的一個好辦法做到這一點:

Problem retrieving HTML5 video duration

要通過Mikushi引用anwser:

myVideoPlayer.addEventListener('loadedmetadata', function() { 
    console.log(videoPlayer.duration); 
}); 

通過監聽「等待loadedmetadata」事件,你將確保持續時間值一直加載。

在等待loadedmetadata更多細節可以在這裏找到:http://www.w3schools.com/tags/av_event_loadedmetadata.asp

+2

這是好的,但我想在頁面加載顯示沒有任何點擊事件。 – Sajal

+0

這不是一個onclick事件,這是當視頻元數據加載(在任何點擊事件之前)更多信息在這裏:http://www.w3schools.com/tags/av_event_loadedmetadata.asp – ToddBFisher

+2

+1,感謝您的幫助代碼。不過它應該不是'myVideoPlayer'而是'videoPlayer'而不是'videoPlayer'? –

0
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
    <script type="text/javascript"> 
     function getDuration() { 
      var s = document.getElementById('a'); 
      alert(s.duration) 
     } 
    </script> 
</head> 
<body> 
<div> 
    <video src="2.mp4" id="a" controls="controls"></video> 
    <button onclick="getDuration()">get duration</button> 
</div> 
</body> 

</html> 
0

有一個特殊事件觸發名爲「等待loadedmetadata」視頻元素。一旦觸發了這一項,視頻元素就可以使用諸如持續時間之類的屬性。

這裏的所有HTML5視頻事件的詳盡列表:http://www.w3.org/2010/05/video/mediaevents.html

0
// Assume "video" is the video node 
var i = setInterval(function() { 
    if(video.readyState > 0) { 
     var minutes = parseInt(video.duration/60, 10); 
     var seconds = video.duration % 60; 

     // (Put the minutes and seconds in the display) 

     clearInterval(i); 
    } 
}, 200);