h5直播源码,如何实现一个简易播放器?
h5直播源码,如何实现一个简易播放器?
利用 html + js + css 实现一个播放器的简单功能
我们在页面开发过程中会遇到,在页面中播放视频的需求。通常我们利用成熟的 视频播放插件来处理
如: video.js 。但是,为了我们的个人成长,也需要了解下如何实现一个简单的 h5 播放器功能。
要实现一个播放功能通常包括:
1、video 标签的使用
2、模拟视频进度条
3、控制播放和暂停
4、控制音量
5、快进和回退
<div class="player">
<video src="./video.mp4" class="player_video"></video>
<div class="player_controls">
<div class="progress">
<div class="progress_fill"></div>
</div>
<button class="player_button toggle" title="Toggle Play">►</button>
<input
type="range"
class="player_range"
name="playbackRate"
min="0.5"
max="2"
step="0.1"
value="1"
/>
<button data-skip="-10" class="player_button">« 10s</button>
<button data-skip="25" class="player_button">25s »</button>
</div>
</div>
// .scss
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
background: #fff;
min-height: 100vh;
background-size: cover;
display: flex;
align-items: center;
justify-content: center;
margin: 0;
padding: 0;
}
.player {
width: 750px;
border: 2px solid #000;
position: relative;
font-size: 0;
overflow: hidden;
.player_video {
width: 100%;
}
&:fullscreen {
max-width: none;
width: 100%;
}
&:-webkit-full-screen {
max-width: none;
width: 100%;
}
&:hover .progress {
height: 15px;
}
&:hover .player_controls {
transform: translateY(0);
}
}
.player_controls {
display: flex;
position: absolute;
bottom: 0;
width: 100%;
transform: translateY(100%) translateY(-5px);
transition: all 0.3s;
flex-wrap: wrap;
background: rgba(0, 0, 0, 0.7);
& > * {
flex: 1;
}
.player_button {
background: none;
border: 0;
outline: none;
line-height: 1;
color: #fff;
text-align: center;
padding: 0;
cursor: pointer;
max-width: 50px;
&:focus {
border-color: #ffc600;
}
}
.player_range {
width: 10px;
height: 30px;
}
.progress {
flex: 10;
position: relative;
display: flex;
flex-basis: 100%;
height: 5px;
transition: height 0.3s;
background: rgba(0, 0, 0, 0.5);
cursor: ew-resize;
.progress_fill {
// width: 10%;
background: #ffc600;
flex: 0