不播放视频的 HTML5 视频时长

Posted

技术标签:

【中文标题】不播放视频的 HTML5 视频时长【英文标题】:HTML5 Video duration without playing video 【发布时间】:2013-11-04 16:47:34 【问题描述】:

我正在尝试在不播放视频的情况下或在播放视频之前在 html5 中获取视频持续时间以显示在视频拇指上,正如您在您的管或任何其他视频网站上看到的那样。

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

我认为不开始电影并不总是可能的。我还怀疑如果 youtube 这样做,那么他们会在服务器上对电影进行预处理以获得持续时间。 【参考方案1】:

对于 HTML5,一旦加载了文件的元数据,您应该能够使用视频标签的持续时间属性。请参阅此答案以了解如何做到这一点:

Retrieving HTML5 video duration separately from the file

引用 Mikushi 的回答:

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

通过监听 'loadedmetadata' 事件,您将确保已加载持续时间值。

有关加载的元数据的更多详细信息可以在这里找到:http://www.w3schools.com/tags/av_event_loadedmetadata.asp

编辑

根据@lucas-vasques 的评论,您可以使用durationchange 而不是loadmetadata 事件,MDN Media Events list 将其描述为...

元数据已加载或更改,表明持续时间发生了变化 媒体。例如,当媒体已加载时发送 足以知道持续时间。

【讨论】:

没关系,但我想在页面加载时显示,而不是任何点击事件。 这不是 onclick 事件,这是视频元数据加载时(在任何点击事件之前)更多信息:w3schools.com/tags/av_event_loadedmetadata.asp +1,感谢您提供有用的代码。回调中不应该是 myVideoPlayer 而不是 videoPlayer 吗? +1,它也适用于在同一视频元素(作为源元素)中使用同一视频的多个版本的情况。 有一个更新:使用durationchange 而不是loadedmetadata【参考方案2】:
<!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>

【讨论】:

【参考方案3】:

视频元素上触发了一个特殊事件,称为“loadedmetadata”。一旦触发此选项,视频元素上的持续时间等属性就可用。

以下是所有 HTML5 视频事件的详尽列表:http://www.w3.org/2010/05/video/mediaevents.html

【讨论】:

【参考方案4】:
// 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);

【讨论】:

以上是关于不播放视频的 HTML5 视频时长的主要内容,如果未能解决你的问题,请参考以下文章

从 videoJS 显示视频时长

使用 HTML5 视频标签播放视频

Phonegap html5视频不播放

使 HTML5 视频在指定时间停止

如何使用视频元素在 html5 中播放直播视频?

html5 播放事件与视频标签中的播放事件