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

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

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

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

标签: javascript css html


【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 2018-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-08
        • 1970-01-01
        相关资源
        最近更新 更多