网站视频过大,加载缓慢解决方法【分段加载视频】

上班无聊的时候写了一个个人网站,加了个视频,发现加载的特别慢,必应搜了一下,大部分建议都是增加服务器带宽,那为何不使用分段加载。因为优点能解决影响,缺点也会带来一个新的影响

优点能将大视频分割成多个小视频后。在播放时,先加载第一段视频,当观看第一段时,后续的视频可以在后台加载。从而减少用户等待的时间。缺点是如果视频在分割或播放切换时处理不当,会导致播放不连贯。在片段之间的过渡可能会出现明显的停顿感,影响观看。所以分段加载更适合个人使用或者要求不高的网站使用。


以下代码只是初步代码,如需使用可正常运行后根据自身想法修改

/* HTML */

复制代码
<div class="video-container">  
	<video id="video1" controls preload="auto"><source src="shipin/1.mp4" type="video/mp4"></video>
	<video id="video2" style="display:none;" controls preload="auto"><source src="shipin/2.mp4" type="video/mp4"></video>
	<video id="video3" style="display:none;" controls preload="auto"><source src="shipin/3.mp4" type="video/mp4"></video>
	<video id="video4" style="display:none;" controls preload="auto"><source src="shipin/4.mp4" type="video/mp4"></video>
</div>

/* JAVA */

复制代码
<script>  
document.addEventListener('DOMContentLoaded', (event) => {
    const videos = [
        document.getElementById('video1'),
        document.getElementById('video2'),
        document.getElementById('video3'),
        document.getElementById('video4')
    ];
  
    let currentIndex = 0;
    const totalVideos = videos.length;
	
    videos.forEach((video, index) => {
		video.addEventListener('ended',()=>{
			// 隐藏当前视频
            videos[index].style.display = 'none';
			// 更新以指向下一个视频
            currentIndex = (index + 1) % totalVideos;
			// 显示下一个视频,但不播放
            videos[currentIndex].style.display = 'block';
            // 不是第一个视频,则播放它   是第一个视频,则不播放,保持停止状态
            if(currentIndex !== 0){
				videos[currentIndex].play();
            }
        });
    });
	
    // 初始播放第一个视频
    videos[currentIndex].style.display = 'block';
    videos[currentIndex].play();
});
</script>

/* STYLE */

复制代码
<style>
    .video-container{
        position: relative;
        width: 100%;
        height: 0;
        padding-bottom: 56.25%;
        overflow: hidden;  
    }
	
    .video-container video {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
    }  
</style>
相关推荐
Louis Maos5 小时前
堆与栈分配的本质区别
java·开发语言
人道领域6 小时前
【零基础学java】(HashMap源码解析--添加第一个元素)
java·哈希算法·散列表
chenyuhao20246 小时前
Linux网络编程:TCP协议
linux·运维·服务器·网络协议·tcp/ip·udp·tcp
毕设源码-朱学姐6 小时前
【开题答辩全过程】以 果蔬禽蛋生鲜食品采购配送系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
csdnZCjava6 小时前
VMware 14无法连接 MKS: 套接字连接尝试次数太多;正在放弃
运维·服务器
hweiyu006 小时前
Linux 命令:xz
linux·运维·服务器
zfj3216 小时前
java线程的不同状态下调用interrupt()方法后的行为及注意事项
java·开发语言·interrupt·线程中断·线程状态
廋到被风吹走7 小时前
【Java】【Jdk】Jdk17->Jdk21
java·开发语言
御水流红叶7 小时前
路由虚拟机的安装
运维·服务器
叁散7 小时前
实验一:船舶位置感知与MMSI数据分析
java