js实现视频播放时屏幕显示水印

 更新时间:2023年10月18日 08:24:22   作者:xxnobug  
这篇文章主要为大家详细介绍了js如何实现视频播放时屏幕显示水印的效果,文中的示例代码讲解详细,对我们深入掌握js有一定的帮助,感兴趣的小伙伴可以跟随小编一起学习一下

需求描述:视频在播放的时候能够显示当前观看人的姓名并随机切换位置

内心Os:这个加水印不是视频剪辑工具的功能吗 为啥要让前端来写 什么鬼[崩溃] 没办法崩溃归崩溃 需求还得写啊

思路:既然是在视频播放的时候 那就跟video标签在同一级Dom中 用css定位来实现浮动在视频之上 不就可以了? 有想法就干

上来我就是直接获取video所在的Dom元素 因为我的video是包裹在class是videoPlayBox的div中 所以我先获取到了video的父元素 然后在获取父元素中下属元素

let div = document.getElementById("videoPlayBox");
let divChild = div.firstChild;

创建一个容纳水印数据的Dom元素并给他样式

var appDom = document.createElement("div");
  // appDom.id = "userName";//给这个元素设置id
  // appDom.setAttribute("class", "watermarkClass");//给这个元素设置类名
  // 你也可以直接就是行内样式
     appDom.style.cssText = `position:absolute;top:${this.topValue}px;left:${this.leftvalue}px; color:rgb(192, 196, 204);font-size:20px;opacity:0.5;`;
  // 再给这个元素写入要显示的水印内容
     appDom.innerText = text; // text就是你要显示的内容
  //插入元素
     divChild.appendChild(appDom);

这样基本一个水印插入就完成了 下面就是实现随机出现位置 都用position:absolute 肯定就是随机改变top跟left就可以了 写一个定时器 比如说2秒换一次位置

setInterval(() => {
  // 先获取video所在区域的实际宽高 总不能直接让这个定位离开这个所在区域把 
     let widthValue = document.getElementById("videoPlayBoxWapper").offsetWidth;
     let heightValue =document.getElementById("videoPlayBoxWapper").offsetHeight;
// 然后就是取随机数 赋值给你刚才 top 跟 left 绑定的值
     this.leftvalue = widthValue * Math.random();
     this.topValue = heightValue * Math.random();
// 至此 基本就完事了  但是你运行起来后发现 top 跟 left虽然改变了 但是页面中却没有改变
     document.getElementById("userName").style.left = `${this.leftvalue}px`;
     document.getElementById("userName").style.top = `${this.topValue}px`;
 // 再加上这一步就完事了 
 }, 2000);

当然当定时运行的时候就要考虑到 多次触发这个定时器 就会异步全部执行 会导致出现的时间根本不是你设置的时间 所以你要在触发这个方式的时候 先清除定时器 然后在执行就会避免这个问题

if (this.timer != null) {
     clearInterval(this.timer);
  }
  this.timer =  setInterval(() => {
  // 先获取video所在区域的实际宽高 总不能直接让这个定位离开这个所在区域把 
     let widthValue = document.getElementById("videoPlayBoxWapper").offsetWidth;
     let heightValue =document.getElementById("videoPlayBoxWapper").offsetHeight;
// 然后就是取随机数 赋值给你刚才 top 跟 left 绑定的值
     this.leftvalue = widthValue * Math.random();
     this.topValue = heightValue * Math.random();
// 至此 基本就完事了  但是你运行起来后发现 top 跟 left虽然改变了 但是页面中却没有改变
     document.getElementById("userName").style.left = `${this.leftvalue}px`;
     document.getElementById("userName").style.top = `${this.topValue}px`;
 // 再加上这一步就完事了 
 }, 2000);

到此这篇关于js实现视频播放时屏幕显示水印的文章就介绍到这了,更多相关js水印内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于HTML5+JS实现本地图片裁剪并上传功能

    基于HTML5+JS实现本地图片裁剪并上传功能

    这篇文章主要为大家详细介绍了HTML5本地图片裁剪并上传的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • js性能优化技巧

    js性能优化技巧

    性能优化:简而言之,就是在不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短,本篇文章给大家介绍js性能优化技巧,需要的朋友参考下
    2015-11-11
  • 微信小程序实现自上而下字幕滚动

    微信小程序实现自上而下字幕滚动

    这篇文章主要为大家详细介绍了微信小程序实现自上而下字幕滚动,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • JavaScript中闭包的4个有用技巧分享

    JavaScript中闭包的4个有用技巧分享

    当谈到JavaScript编程中的高级概念和技巧时,闭包(Closures)是一个重要而有趣的主题,闭包是一种函数与其创建时的词法环境的组合,它允许我们捕获和保留局部变量,并在函数之外使用它们,在这篇文章中,我们将深入探讨JavaScript中闭包的4种有用技巧
    2023-10-10
  • 元素全屏的设置与监听实例

    元素全屏的设置与监听实例

    下面小编就为大家带来一篇元素全屏的设置与监听实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • 用console.table()调试javascript

    用console.table()调试javascript

    昨天我了解到Chrome调试工具一个小巧的调试方法,在WDCC期间, Marcus Ross(@zahlenhelfer) 介绍了,chrome调试工具各种调试方法,这个只是其中一种,现在我来给大家秀下。
    2014-09-09
  • javascript判断网页是关闭还是刷新

    javascript判断网页是关闭还是刷新

    本篇文章给大家介绍js判断网页是关闭还是刷新,实现原理就是通过离开页面行为时间onunload触发时间去检测此时的浏览器的窗口大小,根据大小由此判断用户是刷新,跳转或是关闭行为程序,需要的朋友可以参考下本文
    2015-09-09
  • javascript日期格式化方法汇总

    javascript日期格式化方法汇总

    本文给大家汇总介绍了javascript格式化日期时间的几种常用方法,个人对最后一种个性化输出时间比较有兴趣,基本上只要项目中能用到都是使用这种,推荐给小伙伴们。
    2015-10-10
  • javascript中floor使用方法总结

    javascript中floor使用方法总结

    在本篇文章中小编给大家分享了关于javascript中floor使用的知识点内容,有兴趣的朋友们学习下。
    2019-02-02
  • BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法

    BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法

    这篇文章主要介绍了BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法,下面通过本文给大家详细说明一下,需要的朋友可以参考下
    2016-12-12

最新评论