当用户使用video.js滚动时播放视频
play video when user scrolls specifically using video.js
我意识到这个问题的变体之前已经问过了,但没有一个具体涉及如何在video.js上做到这一点
我使用video.js为我的视频。我需要视频播放时,用户滚动到他们的观点。很多人都问过html5视频的问题,但我想具体了解一下video.js。我已经做了以下的,但没有运气-
var videos = videojs('movie-id_html5_api');
videojs("movie-id_html5_api").ready(function(){
var videos = this;
fraction = 0.8;
function checkScroll() {
for(var i = 0; i < videos.length; i++) {
var video = videos[i];
var x = video.offsetLeft, y = video.offsetTop, w = video.offsetWidth, h = video.offsetHeight, r = x + w, //right
b = y + h, //bottom
visibleX, visibleY, visible;
visibleX = Math.max(0, Math.min(w, window.pageXOffset + window.innerWidth - x, r - window.pageXOffset));
visibleY = Math.max(0, Math.min(h, window.pageYOffset + window.innerHeight - y, b - window.pageYOffset));
visible = visibleX * visibleY / (w * h);
if (visible > fraction) {
videos.play();
} else {
videos.pause();
}
}
}
});
window.addEventListener('scroll', checkScroll, false);
window.addEventListener('resize', checkScroll, false);
我还应该提到我有多个视频具有相同的ID 'movie-id_html5_api',我都想让他们在滚动时播放。
提前感谢!!
我更新了jsFiddle,使其只在滚动到视图中时播放每个视频。如果视频不在可视范围内,则暂停播放。这归功于playVideos函数的Stack Overflow答案,以及将每个视频播放器id存储在数组中。也要归功于isOnScreen()函数的Stack Overflow答案。
videojs.options.flash.swf = "http://vjs.zencdn.net/c/video-js.swf";
var players = ['example_video_1', 'example_video_2'];
window.addEventListener("resize", playVideos, false);
window.addEventListener("scroll", playVideos, false);
// Loop through all the players, check if video player is visible in the viewport. If it is visible, play it. If not, do not play it.
function playVideos() {
for (var i = 0; i < players.length; i++)
{
var videoPlayer = $('#' + players[i]);
var videoPlayerElem = _V_('#' + players[i]);
if (isOnScreen(videoPlayer))
{
videoPlayerElem.play();
}
else
{
videoPlayerElem.pause();
}
}
}
function isOnScreen(element) {
var elementOffsetTop = element.offset().top;
var elementHeight = element.height();
var screenScrollTop = $(window).scrollTop();
var screenHeight = $(window).height();
var scrollIsAboveElement = elementOffsetTop + elementHeight - screenScrollTop >= 0;
var elementIsVisibleOnScreen = screenScrollTop + screenHeight - elementOffsetTop >= 0;
return scrollIsAboveElement && elementIsVisibleOnScreen;
}
相关文章:
- 只在滚动时播放循环css动画-滚动停止时停止
- 滚动时播放youtube视频
- 如何在向下滚动时停止自动播放
- 滚动播放视频,但只能播放一次
- 如何使此代码更干燥?(滚动播放多个 css 动画)
- 能够在jQuery插件中的滚动位置自动播放
- 在滚动上播放视频
- 图表.js饼图动画,在页面中的某个位置通过垂直滚动播放一次
- 在视频播放器中达到特定时间时滚动
- 分离JPlayer's播放列表从播放器启用滚动移动
- HTML文档类型导致视频自动播放而不滚动到
- HTML5视频播放一旦滚动进入视图
- 滚动到时自动播放Youtube视频
- 在从无限滚动加载页面的html5音频播放器上连续播放时出现问题
- 当用户使用video.js滚动时播放视频
- jQuery播放下一个视频上的滚动
- 到达滚动点后如何播放动画
- jquery工具切换播放/暂停按钮可滚动
- 播放HTML5视频时,滚动到,然后播放,直到完成,只播放一次
- 滚动播放一次视频有问题吗