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><inputtype="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;flex