Javascript 不播放视频的HTML5视频持续时间

Javascript 不播放视频的HTML5视频持续时间,javascript,css,html,Javascript,Css,Html,我试图在HTML5中获得视频持续时间,而不播放视频,或者在播放视频之前在视频拇指上显示视频,就像你在YouTube或任何其他视频网站上看到的那样 任何帮助都将不胜感激 提前感谢。对于HTML5,加载文件元数据后,您应该能够使用视频标记的持续时间属性。请参阅以下答案,以获得一个好方法: 引用Mikushi的anwser: myVideoPlayer.addEventListener('loadedmetadata', function() { console.log(videoPlaye

我试图在HTML5中获得视频持续时间,而不播放视频,或者在播放视频之前在视频拇指上显示视频,就像你在YouTube或任何其他视频网站上看到的那样

任何帮助都将不胜感激


提前感谢。

对于HTML5,加载文件元数据后,您应该能够使用视频标记的持续时间属性。请参阅以下答案,以获得一个好方法:

引用Mikushi的anwser:

myVideoPlayer.addEventListener('loadedmetadata', function() {
    console.log(videoPlayer.duration);
});
通过侦听“loadedmetadata”事件,您将确保已加载持续时间值

有关loadedmetadata的更多详细信息,请参见:

编辑

根据@lucas vasques的评论,您可以使用
durationchange
来代替
loadmetadata
事件,该事件描述为

元数据已加载或已更改,表示持续时间已更改 媒体。例如,当加载介质时,会发送此消息 足够使持续时间已知


函数getDuration(){
var s=document.getElementById('a');
警报(持续时间)
}
获取持续时间

视频元素上会触发一个名为“loadedmetadata”的特殊事件。一旦触发此选项,视频元素上的属性(如持续时间)将可用


以下是所有HTML5视频事件的详尽列表:

我认为不启动电影并不总是可能的。我还怀疑youtube是否会这样做,然后他们会在服务器上预处理电影以获得持续时间。这是可以的,但我希望在页面加载时不显示任何单击事件。这不是onclick事件,这是视频元数据加载时(在任何单击事件之前)更多信息:+1,感谢您提供的有用代码。它不应该是回调中的
myVideoPlayer
而不是
videoPlayer
吗?+1,当同一视频元素(作为源元素)中使用同一视频的多个版本时,它也可以工作。有一个更新:使用
durationchange
而不是
loadedmetadata
<!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>
// 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);