javascript - 在canplaythrough 上淡出 HTML5 视频海报图像

标签 javascript jquery html5-video

我正在尝试为 HTML5 视频元素的海报属性设置动画。有人知道如何使用 jQuery 定位海报属性吗?我想要的是让海报 img 在视频开始播放时淡出,以避免当前出现的跳跃。这是代码...

HTML:

<video id="vid preload="auto" loop="loop" poster="images/firstFrame.png">
  <source src="video/bg.mp4" type="video/mp4" />
  <source src="video/bg.webm" type="video/webm" />
</video>

JS:

$(document).ready(function() {
  var vid = document.getElementById("vid");

  vid.oncanplaythrough = function() { 
    $('POSTER???').animate({'opacity': '0'});
    vid.oncanplay = vid.play();
  }
});

我搜索了 Google 和 SO,但没有找到此问题的解决方案。 (我发现这个:fade HTML5 video image / poster in and out但它并没有解决问题)

感谢您的投入。

最佳答案

这是我淡出海报的方法,或者更准确地说是淡入视频的方法。

HTML:

<div id="container">
  <video id='video' controls="controls" muted="muted" autoplay="true" preload='none'>
    <source id='mp4' src="http://media.w3.org/2010/05/sintel/trailer.mp4" type='video/mp4'/>
    <source id='webm' src="http://media.w3.org/2010/05/sintel/trailer.webm" type='video/webm'/>
    <source id='ogv' src="http://media.w3.org/2010/05/sintel/trailer.ogv" type='video/ogg'/>
    <p>Your user agent does not support the HTML5 Video element.</p>
  </video>
</div>

CSS:

/* replaces the "cover" image in html5 video */
#container {
  width: 100vw;
  height: auto;
  background-image: url("https://i.ytimg.com/vi/aqz-KE-bpKQ/maxresdefault.jpg");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  background-color: black;
}

#video {
  width: 100%;
  height: auto;
  opacity: 0;                /* start faded out */ 
  transition: opacity 2s;    /* css fade in */
}

jQuery:

/* wait for all elements of DOM to be rendered */
$(document).ready(function() {

    /* force some of these attr */
    $("#video").attr({"autoplay": true,
                            "muted": true});

    /* double ensure that video is muted otherwise chrome
          won't autostart */
    $("#video").prop('muted', true);

    /* when video auto plays, it fades in */
    $("#video").bind('play', function (e) {
      $("#video").css('opacity', 1.0);
    });
});

Codepen

In action on my site

这在 Chrome 上运行得很好,但在其他浏览器上效果可能会有所不同。

关于javascript - 在canplaythrough 上淡出 HTML5 视频海报图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29600103/

相关文章:

javascript - 停止在 PHP AJAX MySQL 中重复 div 内容

javascript - JQuery 小部件 : setting context in sub-widget

javascript - 如何找到内里的类(class)并更改上一级?

javascript - jQuery 加载 + Thymeleaf

video - HTML5视频元素对直播有什么支持?

javascript - 如何检查我的 iPhone Safari 上运行的 Ajax 请求的状态?

javascript - 如果 Javascript 参数不存在,如何将其设置为默认值?

javascript - 嵌套函数解释

javascript - 全元素视频全屏

javascript - 如何检测HTML5视频标签中的 'useless'点击?