HTML5播放器

实现目标

  • 有进度条,可拖动点击
  • 有音量,可改变音量
  • 有倍速,可改变播放速度
  • 有前进后退按钮
  • 有暂停播放键

实现代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>HTML Video Player</title><link rel="stylesheet" href="style.css">
</head>
<body><div class="player"><video class="player__video viewer" src="./oceans.mp4" ></video><div class="player__controls"><div class="progress"><div class="progress__filled"></div></div><button class="player__button toggle" title="Toggle Play">►</button><input type="range" name="volume" class="player__slider" min="0" max="1" step="0.05" value="0.2"><input type="range" name="playbackRate" class="player__slider" 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><script src="scripts.js"></script>
</body>
</html>
const player = document.querySelector('.player');
const video = player.querySelector('.viewer');
const toggle = player.querySelector('.toggle');
const skipButtons = player.querySelectorAll('button[data-skip]');
// console.log(skipButtons);
const ranges = player.querySelectorAll('.player__slider');
// console.log(ranges);
const progressBar = player.querySelector('.progress__filled');
console.log(progressBar);
const progress = player.querySelector('.progress');
console.log(progress);
function togglePlay(){// console.log(video.paused);//播放状态 true 暂停const method = video.paused?'play':'pause';video[method]();// if(video.paused){//     video.play();// }else{//     video.pause();// }
}
function updateToggle(){const icon = video.paused?'►':'ǁ';//https://www.copypastecharacter.com/all-characterstoggle.textContent = icon;
}
function skip(){console.log('skip....');video.currentTime += parseFloat(this.dataset.skip);//字符串处理成小数类型
}
function handleRange(){//声音和速度// console.log(this.name);//当前被点击元素名// console.log(this.value);//对应的值video[this.name] = this.value;
}
function handleProgress(){//进度条const percent = (video.currentTime / video.duration) * 100;progressBar.style.flexBasis = `${percent}%`;//百分号
}
function screb(e){const screbTime = (e.offsetX / progress.offsetWidth) * video.duration;video.currentTime = screbTime;
}video.addEventListener('click',togglePlay);//点击画面
video.addEventListener('play',updateToggle);//播放状态
video.addEventListener('pause',updateToggle);//暂停状态
toggle.addEventListener('click',togglePlay);//点击按钮
video.addEventListener('timeupdate',handleProgress);//进度条
progress.addEventListener('click',screb);//调整进度条
let mousedown = false;
progress.addEventListener('mousedown',()=>mousedown = true);
progress.addEventListener('mouseup',()=>mousedown = false);
progress.addEventListener('mousemove',e=>mousedown && screb(e));//短路运算符的妙用
skipButtons.forEach(item=>item.addEventListener('click',skip));ranges.forEach(item=>item.addEventListener('change',handleRange));
ranges.forEach(item=>item.addEventListener('mousemove',handleRange));

实现效果

每日一练 JS30挑战 HTML5播放器相关推荐

  1. 微信小程序练手项目-音乐播放器

    微信小程序练手项目-音乐播放器 该项目只适合练手,大佬请绕道 项目展示图: 项目介绍 微信小程序音乐播放器 页面: 音乐推荐.播放器.播放列表 功能: 播放.暂停.上一首.下一首.跳转播放列表.实时进 ...

  2. HTML5播放器:视频分段播放

    2019独角兽企业重金招聘Python工程师标准>>> 本来想试试能不能越过Vip验证关卡,直接获取到视频资源地址的,但是发现拿到的地址只有几分钟的,或者十几分钟的! 想着这应该是视 ...

  3. 7款高颜值HTML5播放器:让你的音乐有声有色

    原文:http://www.codeceo.com/article/7-cool-html5-player.html 这篇文章我们要分享一些很有个性的HTML5音乐播放器和视频播放器,它们都具有播放器 ...

  4. PHP双码率视频云转码服务系统源码 m3u8切片秒切html5播放器 全开源

    介绍: PHP双码率视频云转码服务系统源码 m3u8切片秒切html5播放器 全开源 PHP双码率视频云转码服务系统源码 m3u8切片秒切 版本特点: 1.修正了双码率无法转码.切片问题,优化&quo ...

  5. 自己的HTML5 播放器

    不知道写什么,主要也是自己水平实在是有限,想想自己会的东西都太基本,网上一搜往后不知道能数多少页,自己表达的也没有别人好.我希望自己写的东西要么是网上没有(可能性就是零--),要么是带着自己的见解.所 ...

  6. html5播放器视频倍速播放功能

    阿酷TONY 2021-3-24 1. 倍速播放功能可以让视频加速或者减速播放: 2. 在PC端,HTML5播放器能轻松实现倍速播放功能,您可以将视频的播放速度设定为0.5倍,1倍(正常速),1.2倍 ...

  7. 安卓uc斗鱼html5,斗鱼HTML5播放器

    // ==UserScript== // @description 基于 flv.js 的斗鱼HTML5播放器. // @icon https://ojiju7xvu.qnssl.com/d5hp/i ...

  8. html网易云客堂,网易云课堂 HTML5 播放器样式调整

    网易云课堂 HTML5 播放器样式调整是一款由作者黄盐分享的一个浏览器扩展插件.通过脚本用户可以配合[视频站启用html5播放器使用],播放器不会出现滚动条,并且有控制按钮,有需要的用户欢迎下载使用体 ...

  9. b站选择HTML5播放器,b站用什么播放器看片好?选择硬解还是软解?看本地视频首选哪一个?...

    b站看视频的时候,我们经常会遇到视频卡顿或者视频黑屏等一系列的症状,有时候我们采用各种方式都不能进行解决,其实这是和播放器的类型有关,一般来说B站都有默认的播放器进行视频播放,除了常规的播放器之外,还 ...

最新文章

  1. oracle三种分区的方式,Oracle 分区表 总结大全(3)
  2. Windows上安装Kafka需要注意的几点
  3. 福师计算机应用基础离线作业一答案,18秋福师《计算机应用基础》在线作业一答案...
  4. 图像滤镜艺术--编码基础(Photoshop基础变换的代码实现)
  5. minute教会你shell
  6. 华为eudemon 200E的hrp双心跳热备配置
  7. android实现控件的手势缩放、移动以及双击还原
  8. 这 26个中国式创新,征服了全世界
  9. Discuz搜索模块解析
  10. java gc什么意思_Java的GC是什么?做了什么?
  11. input输入效果控制onfocus和onblur事件(转)
  12. 一句话,连上隔壁老王家的 WiFi !
  13. 用Squid和DNSPod打造自己的CDN详细教程
  14. 北上广深——这无处安放的肉身
  15. 医院计算机专业年薪,说一些我朋友真实的深圳公立三甲医院编制收入
  16. iphone计算机输入文字,10个鲜为人知的iPhone实用技巧 全知道的算我输!
  17. pcb规则中英文对照
  18. JAVA环境变量配置详解(全网最新详细教程)
  19. 这 10 种 MySQL 经典错误案例,99% 的程序员一定遇到过!你呢?
  20. python中的prettify

热门文章

  1. hive 建表,分桶表(clustered by)、分桶且桶内排序(clustered by+sorted by)、分区表(partitioned by)、分区分桶一起用
  2. win7无法访问计算机权限,解决WIN7有限的访问权限的解决方案合集
  3. 计算机毕业论文内容参考|基于Python的互联网金融产品交易平台的设计与实现
  4. [projecteuler]Counting Sundays
  5. CRM为外贸企业拓展商机提供原动力
  6. A3401液晶电路控制
  7. 邮件自动被服务器删除,Outlook管理IMAP,删除服务器上的邮件
  8. cherrypy@Tutorial 10:Mak ita modern single-pageapplication wth React.js
  9. 19年上海计算机本科生工资,高校发布2019届毕业生就业质量报告:毕业生薪资普涨...
  10. 计算机考研初试350分什么水平,考研总分500考380难吗 考研380分是什么水平