【问题标题】:HTML 5 video with custom controls: show duration before playing带有自定义控件的 HTML 5 视频:播放前显示持续时间
【发布时间】:2017-05-02 20:44:58
【问题描述】:

我正在构建一个自定义控件 HTML5 视频播放器。你可以看到它HERE。 我遇到的问题是无法在播放之前显示视频的持续时间。

HTML:

<div class="video-container">
    <video poster="img/flamenco.jpg">
        <source src="flamenco.mp4" type="video/mp4" />
        <source src="flamenco.ogg" type="video/ogg" />
    </video>
    <div class="controls-wrapper">
        <div class="progress-bar">
            <div class="progress"></div>
        </div>
        <ul class="video-controls">
            <li><input type="button" name="play-pause" value="Play" class="play"></li>
            <li><input type="button" name="prev" value="Previous video" class="previous"></li>
            <li><input type="button" name="next" value="Next video" class="next"></li>
            <li class="mute-toggle unmuted"><input type="checkbox" name="mute" value="Mute"></li>
            <li class="volume-container"><input class="volume-slider" type="range" value="1" max="1" step="0.01"></li>
            <li class="show-time disable-select"><span class="current-time">00:00</span><span>/</span><span class="duration"></span></li>
            <li class="fullscreen-container"><input type="button" name="toggle-fullscreen" value="Fullscreen" class="fullscreen"></li>
        </ul>
    </div>
</div>

JavaScript:

var currentTimeDuration = function(){
    var currTimeStr = Math.round(video.currentTime).toString();
    var durationStr = Math.round(video.duration).toString();
    $('.current-time').text(currTimeStr.timeFormat());
    $('.duration').text(durationStr.timeFormat());
}

$(video).on('timeupdate', function(){
    currentTimeDuration();
});

上述函数的问题是它只显示视频开始后的当前时间和持续时间。我希望它会在页面加载时显示类似 00:00 / 02:22 的内容。

有什么提示吗?谢谢!

【问题讨论】:

  • 另一个问题没有得到回答,可能是因为没有明确表述。我相信我的问题是明确而详细的。
  • 这行似乎有问题:“video.onload = currentTimeDuration;”就像可能没有调用 currentTimeDuration 一样。你能把它包装在一个匿名函数中吗?也许像“video.onload = function() { currentTimeDuration(); }”
  • 我查过了,不是这个问题。

标签: javascript html video html5-video


【解决方案1】:

video.duration 在“loadedmetadata”事件之后是正确的。尝试添加元数据加载处理程序:

$(video).on('loadedmetadata', function(){
    currentTimeDuration();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2020-12-11
    • 2020-11-29
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多