js实现简单的视频播放

2023-11-13

功能1:播放暂停切换

        思路:准备一个播放的图片和一个暂停的图片;

                   利用标杆思想,设置一个flag变量,播放的时候将flag设置为false,暂停的时候设置为true,如果flag为true则播放同时改变为播放图片,为false则暂停同时改变为暂停图片

功能2:进度条显示

        思路:首先要获取视频播放的当前时间用currentTime()获取,还有视频的总时间,duration()来获取,用document.body.offsetWidth()获取当前屏幕的宽度

        进度条的宽度=(当前时间/总时间)*屏幕宽度

功能3:拖动进度条到某个位置开始播放

思路:用event.clientX()返回当事件被触发时鼠标指针相对于浏览器页面(或客户区)的水平坐标。

        此时进度条的宽度=event.clientX()+‘px’

        此进度条长度所对应的视频时间:(e.clientX / document.body.offsetWidth) * video.duration

代码如下:

 <video src="./1.mp4" id="video"></video>
    <div id="playBox">
        <!-- 播放按钮 -->
        <span id="playBtn"></span>
        <!--进度条 -->
        <div id="compro">
            <div id="progress">
            </div>
        </div>
    </div>
   * {
            margin: 0;
            padding: 0;
        }
        
        #video {
            width: 100%;
        }
        
        #playBox {
            background-color: #fff;
            width: 100%;
            height: 50px;
            padding: 10px 0;
            position: fixed;
            left: 0;
            bottom: 0;
            text-align: center;
        }
        
        #playBtn {
            width: 50px;
            height: 50px;
            display: inline-block;
            background: url(./play.png) no-repeat;
        }
        
        #compro {
            position: absolute;
            top: 0;
            left: 0;
            height: 5px;
            width: 100%;
            background-color: rgba(173, 255, 47, 0.4);
        }
        
        #progress {
            /* width: 100%; */
            height: 5px;
            background-color: rgb(173, 255, 47);
            position: absolute;
            top: 0;
            left: 0;
        }
   window.onload = function() {
            let flag = true
            let timeId = null
            playBtn.addEventListener('click', function() {
                    if (flag) {
                        video.play()
                        playBtn.style.background = "url('./play.png')"
                        progressBar()
                    } else {

                        video.pause()
                        playBtn.style.background = "url('./puse.png')"
                        clearInterval(timeId)
                    }
                    flag = !flag
                })
                // 进度条
            function progressBar() {
                timeId = setInterval(function() {
                    // 获取屏幕的宽度
                    let ctime = video.currentTime
                    let alltime = video.duration
                    let swidth = document.body.offsetWidth
                    let wval = (ctime / alltime) * swidth
                        // console.log(ctime, alltime, swidth);
                    progress.style.width = wval + 'px'
                    if (ctime == alltime) {
                        progress.style.width = 0 + 'px'
                    }
                }, 100)
            }
            // 拖动进度条
            compro.addEventListener('click', function(e) {
                // 改变progress的宽度
                progress.style.width = e.clientX + 'px'
                    // 获取当前宽度的视频播放时间
                video.currentTime = (e.clientX / document.body.offsetWidth) * video.duration
                progressBar()
            })

        }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js实现简单的视频播放 的相关文章

随机推荐

  • AcWing 894. 拆分-Nim游戏 (博弈论)

    题目 数论章节中的最后一题 也是博弈论的最后一节 堆ai拆分成b1 b2后 一个重要的性质就是sg b1 b2 sg b1 sg b2 import java io BufferedReader import java io IOExcep
  • 工业软件系列之仿真篇:正向研发的加速器

    已剪辑自 https mp weixin qq com s 0VVwg08JH PZhKpvcoRYTA 仿真是通过模型来模拟现实系统中发生的过程 其本质是将物理化学公式模型进行代码化表示 并借助计算机实现计算求解 仿真在离散制造和流程制造
  • 解决linux git已生成配置密钥出现Permission denied (publickey).问题

    前言 在我使用linux的git时 配置的ssh密钥 并且添加进的github 但是在执行git clone 时仍然出现Permission denied publickey 的问题 经过多次的尝试 发现的解决问题的方法 方法 这个问题的原
  • 你知道DashO Pro/Dotfuscator有效保护应用的秘诀吗?看了这篇你就明白了

    Gartner在其2019年7月应用内保护应用内保护市场指南中将应用内保护称为 关键 该指南的摘要建议安全和风险管理负责人 在保护其应用程序客户端时应格外小心 以避免 安全性失败 这就提出了一个问题 什么构成 应有的注意 尽管术语和术语可能
  • Person类

    题目 设计一个 Person 类 成员包括 姓名 性别 年龄 需要实现的功能 成员函数 输入 输出 修改成员 根据有关信息初始化对象 main 函数先输出把对象初始化为缺省值的结果 再输出修改各成员的结果 再输出经输入函数修改各成员的结果
  • origin如何绘制双y轴曲线_如何通过紫外可见漫反射光谱计算带隙/禁带宽度(方法2.tauc plot法)...

    微信公众号试行乱序推送 为了不错过更新 请点击本页面最上方的 结构分析表征 进入公众号主页 点击右上角的三个小点点 在弹出的界面点击 设为星标 并在看完图文或视频后点击右下角的 在看 和 赞 本公众号以各类仪器的测试 分析教程 欢迎关注同名
  • 《机器学习》又名西瓜书个人笔记

    周志华老师写在第十次印刷之际 这是一本教科书 这是一本入门教科书 这是一本面向理工科高年级本科生和研究生的教科书 本书适宜多读几遍 初学机器学习 容易陷入一个误区 以为熟练了 十大算法 便可以解决任何问题 于是将目光仅聚焦在具体算法推导和编
  • Vuforia 的 模型识别中 数据集 Database

    数据集 使用ObjectTracker数据集API可以选择使用的模型目标 可以从中创建和加载模型数据集 继承自DataSet ObjectTracker 加载后 可以激活数据集以供数据集使用ObjectTracker 与我们现有的功能类似
  • SQL注入详解

    一 什么是SQL注入 SQL注入是一种将SQL代码添加到输入参数中 传递到SQL服务器解析并执行的一种攻击方式 select from table where name appName 攻击者利用appName参数值的输入 来生成恶意的SQ
  • mac typora低版本出现图片不显示

    由于mac的系统版本低 安装的typora的版本也相对低 但是会遇到一些问题 尤其是遇到加载的图片 出现不显示 需要手动一个一个修改一下才能显示 如果图片较多就麻烦了 可以切换源代码模式 在源码模式下 编写一个图片的链接 可以在 和imag
  • 使用openCV查看png图片的各通道值

    png格式的图片除了能展现出各种各样的色彩外 还能表现出 透明 的特点 这是因为这种格式的图片除了含有我们常见的RGB三个颜色通道外 还有一个A通道来控制图片的透明效果 使用openCV可以方便的查看各种格式图片各个通道的值 思路如下 首先
  • windows 下的composer 可能遇到(Loading composer repositories with package information)

    最容易遇到下面这个问题 Loading composer repositories with package information Updating dependencies including require dev 在dos界面下输入
  • Unity Inputfield获得和失去焦点

    获取焦点 public InputField inputField void Start inputField ActivateInputField 失去焦点 public InputField inputField void Start
  • electron-egg: 新一代桌面应用开发框架

    当前桌面软件技术有哪些 语言 技术 优点 缺点 C wpf 专业的桌面软件技术 功能强大 学习成本高 Java swing javaFx 跨平台和语言流行 GUI库少 界面不美观 C Qt 跨平台 功能和类库丰富 学习成本高 Swift 无
  • 用Python画笑脸

    开心一下 喵 很早之前画的 放上来做个纪念吧 代码如下 from turtle import screensize 600 600 speed 10 def Arc initial degree step rotate rangeNum s
  • cmake

    ubuntu系统当库安装后 需要包含头文件一般在 usr local include 比如 include directories usr local include ImageMagick 7 这样就能调用各种功能头文件 但还要包含 so
  • 数据结构基本概念及算法分析

    文章目录 1 数据结构基本概念 1 1 基本概念和术语 1 1 1 数据 1 1 2 数据元素 1 1 3 数据项 1 1 4 数据对象 1 1 5 数据结构 1 2 逻辑结构与物理结构 1 2 1 逻辑结构 我们最需要关注的问题 1 2
  • 从在浏览器的输入框输入一个网址,到看到网页的内容,这个过程中发生了什么?

    https www cnblogs com ouyang99 p 10284271 html 从在浏览器的输入框输入一个网址 到看到网页的内容 这个过程中发生了什么 当在浏览器地址栏输入网址 如 www baidu com后浏览器是怎么把最
  • 硬件设计27之RS232

    串口通讯 串口通讯 Serial Communication 是一种设备间非常常用的串行通讯方式 因为它简单便捷 大部分电子设备都支持该通讯方式 电子工程师在调试设备时也经常使用该通讯方式输出调试信息 在计算机科学里 大部分复杂的问题都可以
  • js实现简单的视频播放

    功能1 播放暂停切换 思路 准备一个播放的图片和一个暂停的图片 利用标杆思想 设置一个flag变量 播放的时候将flag设置为false 暂停的时候设置为true 如果flag为true则播放同时改变为播放图片 为false则暂停同时改变为