不播放视频的 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 视频时长的主要内容,如果未能解决你的问题,请参考以下文章