【发布时间】:2017-08-22 20:30:20
【问题描述】:
我在加载页面时收到 40 个视频并使用 foreach 循环进行显示,下面是我显示视频的 html 代码
<div id="videosList">
<div class="video" data-id="{{$i}}">
<div class="videoSlate">
<video id="videoDiv{{$i}}" class="thevideo"
preload="metadata"
poster="/{{$postDetails->video_thumbnail}}" loop>
<source src="/{{$postDetails->videos}}">
Your browser does not support the video tag.
</video>
</div>
</div>
</div>
鼠标悬停在视频上我正在播放视频,鼠标悬停我正在停止视频这里是用于播放和暂停的 javascript 代码
<script>
var figure = $(".video");
var vid = figure.find("video");
[].forEach.call(figure, function (item) {
item.addEventListener('mouseover', hoverVideo, false);
item.addEventListener('mouseout', hideVideo, false);
});
function hoverVideo(e) {
$('.thevideo')[$(this).attr("data-id")].play();
}
function hideVideo(e) {
$('.thevideo')[$(this).attr("data-id")].pause();
}
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
</script>
每个视频大小不超过 6 mb,现在问题是加载页面大约需要 1 分钟,悬停播放视频大约需要 15 到 20 秒,有什么办法可以减少加载时间和视频播放时间。我正在使用 laravel 框架,它在本地工作,但在服务器上却出现问题。
【问题讨论】:
-
在本地你没有下载视频的时间,这可能是你没有问题的原因。
-
YouTube 不只加载看起来像视频的图像屏幕截图,但实际上并没有将视频插入到页面中,直到它被点击(或悬停)?你可能想做类似的事情,你有 40 张图片,但除非用户点击它们,否则它们实际上并不是视频。你可能不得不使用 AJAX 来做到这一点。如果你去 youtube 主页并使用浏览器工具检查视频,你会看到它们是图像。
-
问题在于用户体验方法。您必须重新考虑这一点,或者尝试添加无限滚动。但我建议你改变这种方法,在页面上制作一个视频。
-
勾选这个video stream选项,你可能会得到你想要的。
-
@PunabakaAbhinav:有趣!检查this
标签: javascript php html laravel