在使用网页播放视屏是常常会有写原生视频标签无法做到的事,比如在手机播放时可能会被手机播放器接管播放,或者加些弹幕,或者自定义些控件。

今天就写了个简单版的 Video 标签 转 Canvas 播放视频的代码功能,该对象使用非常简单

// 使用方法:1
var video = document.querySelector("video") // 获取到视频标签
// 实例化 Canvas 对象并播放,该操作会自动创建一个 Canvas 标签放到 video 标签同级并隐鲹原有的 video 标签
var v2c = new Video2Canvas(video).play(); // 使用方法:2
var video = document.querySelector("video") // 获取到视频标签
var canvas = document.querySelector("canvas") // 获取到自己准备好的canvas标签
// 实例化 Canvas 对象并播放
var v2c = new Video2Canvas(video, canvas).play(); 

这是全部代码


/** @Author: Summer* @LastEditors: Summer* @Description: * @Date: 2022-04-20 14:12:58 +0800* @LastEditTime: 2022-04-20 15:41:17 +0800* @FilePath: \test\index.js*/
(function(){window.Video2Canvas = class Video2Canvas {static PLAY_STATUC = { PLAY: 1, PAUSE: 0 }constructor(video, canvas) {this.statuc = Video2Canvas.PLAY_STATUC.PAUSE;this.video = video;if(!(this.canvas = canvas)) {this.canvas = document.createElement("canvas");this.canvas.width = video.videoWidth,this.canvas.height = video.videoHeight,this.canvas.className = video.className; video.style.display = "none"video.parentNode.appendChild(this.canvas);}this.c2d = this.canvas.getContext("2d");this.video.addEventListener("play", this.play.bind(this))this.video.addEventListener("pause", this.pause.bind(this))}render(){if(this.statuc == Video2Canvas.PLAY_STATUC.PLAY){this.c2d.clearRect(0, 0, this.canvas.width, this.canvas.height);this.c2d.drawImage(this.video, 0, 0, this.canvas.width, this.canvas.height);requestAnimationFrame(this.render.bind(this))}}play(){console.log("播放")if(this.video.paused) this.video.play();this.statuc = Video2Canvas.PLAY_STATUC.PLAY;this.render();return this;}pause(){console.log("暂停")if(this.video.played) this.video.pause();this.statuc = Video2Canvas.PLAY_STATUC.PAUSE;return this;}
}})()

使用原生 Canvas 播放视频相关推荐

  1. 抖音只能上下滑动吗_仿抖音上下滑动播放视频

    太多朋友对短视频,上下滚动播放视频效果比较比较研究,今天看看这个案例. 讲下大概思路,使用Recycleview配合自定义LinearLayoutManager来实现这个功能,这里着重说下自定义Lin ...

  2. vue使用原生videojs 播放m3u8格式的视频——播放m3u8格式视频(一)

    vue使用原生video播放m3u8格式的视频 1.安装依赖 2.页面引入插件(这里我是页面单独引入,减少项目体积) 3.页面中的使用 常见问题 4.实现过程 5.实现.m3u8格式视频播放方法 1. ...

  3. vue使用原生video标签播放视频

    页面效果如下图 如果想实现自动播放,需要加autoplay属性, 但是加了之后也可能出现无法自动播放的问题,还需要在加muted属性 muted 是静音属性 添加了以后 会自动播放 但是没有声音 怎么 ...

  4. 36.Silverlight中播放视频和打印文档【附带源码实例】

    在silverlight实际项目中时常会需要播放视频和打印文档,在本节中我们将制作一个最简单的播放视频和打印文档的实例. 一.播放WMV视频 首先我们创建一个Silverlight应用程序SLShow ...

  5. 基于canvas的视频遮罩插件

    作者:云荒杯倾 作者博客 视频遮罩介绍 为一个视频添加一个覆盖物,从而挡住视频某区域,在视频的某一时间段,比如第10到第20分钟不显示划定的这块区域.应用场景包括遮挡卫视图标.遮挡视频右下角广告.充当 ...

  6. 【Javascript】【视频录制】通过video标签和canvas实现视频截图录制和下载

    录像原理 创建一个画布,video标签本身不具备记录画面功能,所以我们需要通过Canvas来达成这个功能 创建一个录制器,与CanvasStream绑定,这样画布绘制什么,录制器都能触发回调 创建一个 ...

  7. html怎么给视频加遮罩,详解基于canvas的视频遮罩插件

    为一个视频添加一个覆盖物,从而挡住视频某区域,在视频的某一时间段,比如第10到第20分钟不显示划定的这块区域.应用场景包括 遮挡卫视图标 . 遮挡视频右下角广告 . 充当马赛克 等. 一个长视频可能包 ...

  8. 如何在浏览器 console 控制台中播放视频?

    如何在浏览器 console 控制台中播放视频? 要实现这个目标,主要涉及到这几个点: 如何获取和解析视频流? 如何在 console 里播放动态内容? 如何在 console 里播放彩色内容? 如何 ...

  9. VideoView播放视频黑屏问题处理

    前言 你又擦肩而过 你耳机听什么 能不能告诉我 --. 记得 我写给你的情书 都什么年代了 到现在我还在写着 总有一天总有一年会发现 有人默默的陪在你的身边 也许 我不该在你的世界 当你收到情书 也代 ...

最新文章

  1. 大有乾坤,售前机器人背后的 AI 技术
  2. python画图-python画图的两种方法
  3. mysql 5.7报1055错误的解决方法
  4. 计算机网络第七次笔记
  5. Gentoo 安装日记 18(重新配置网络和设置密码)
  6. 基于 LiteSpeed 的一站式 PHP 网站解决方案 LLStack V1.0-1 发布
  7. mac lion 安装 mysql_mac osx下安装mysql
  8. 安卓开发.四大组件.activity.1
  9. 测试化验加工费云服务器文献信息,监管▕ 科研经费使用中的 “红线”和“禁区”典型问题自查清单...
  10. Hexo报错Usage: hexo command处理及图片显示问题
  11. 主机宝iis版_主机宝iis版下载|
  12. matlab-高数 diff 二阶偏导数
  13. 分销渠道都有哪些策略
  14. 两个脑仁疼的error:error in __connection_block_invoke_2: Connection interrupted
  15. Live800:中小企业如何选择在线客服系统?
  16. input正则邮箱_常用正则表达式—邮箱(Email)
  17. 最新的百度网盘不限速下载工具 - 100兆速度理论10m/s
  18. LVTTL与LVCMOS区别
  19. Nolia 给CC添加过滤器
  20. qq无法启动 因为计算机中丢失,登录QQ提示“无法启动,计算机丢失SSOCommon.dll”怎么办?...

热门文章

  1. ValueError: Colors must be aRGB hex values
  2. 京东云疑似关闭3款产品,大洗牌开始?
  3. 向量组的极大无关组和秩的证明题
  4. 【SQL】 196.删除重复的电子邮箱
  5. 11.7-11.8 星期一
  6. Ubuntu 拨号上网设置
  7. 卸载金山快盘后残留的kuaipanshellext.dll和kuaipanshellext64.dll两个文件如何删除
  8. WH_KEYBOARD和WH_KEYBOARD_LL的区别
  9. 太赞了!Hinton等6位图灵奖得主、百余位顶级学者邀你群聊,共话人工智能下一个十年...
  10. 肥宅有理?大数据帮你找到不去健身房的原(jie)因(kou)