Nodejs中使用puppeteer控制浏览器中视频播放功能


Posted in NodeJs onAugust 26, 2019

本项目主要功能为在浏览器中自动播放视频,并且实现音量控制,快进快退,全屏控制,播放暂停控制等功能。

仓库地址:  github.com/hapiman/chr…

安装静态服务器

如果电脑上存在nodejs的环境,可以直接安装 anywhere 来访问 index.html 页面。 进入项目根目录,执行命令: anywhere ,然后浏览器会自动打开 http://localhost:8000 页面。

使用puppeteer自动化执行命令

通过在 nodejs 调用前端页面的方法,然后能够Socket实现远程控制浏览器的视频播放。

具体功能实现

var _volumeNum = 1 // 音量值
 var _speedNum = 1 // 速度值
 var videoSrc = 'demo02.mp4' // 切换资源
 window.onload = function () {
  var myVideo = document.getElementById('myVideo')
  var scSource = document.getElementById('sc')
  var myVideoBody = { pause: true }
  // 播放完成指令
  myVideo.addEventListener('ended', function () {
   scSource.src = videoSrc;
   myVideo.load()
   myVideo.play()
  })
  // 初始化
  start()
 }
 // 获取video
 function getVideo() {
  var myVideo = document.getElementById('myVideo')
  return myVideo
 }
 // 快进
 function vforward(params) {
  if (_speedNum >= 2) return
  _speedNum = accAdd(_speedNum, 0.1)
  console.log('vforward _speedNum: ', _speedNum)
  getVideo().playbackRate = _speedNum
 }
 // 快退
 function vbackward() {
  if (_speedNum <= 0.5) return
  var myVideo = getVideo()
  _speedNum = accSub(_speedNum, 0.1)
  console.log('vbackward _speedNum: ', _speedNum)
  getVideo().playbackRate = _speedNum
 }
 // 页面加载之后执行命令
 function start() {
  var myVideo = getVideo()
  myVideo.volume = 1
  myVideo.playbackRate = 1
 }
 // 设置静音
 function setMuted() {
  getVideo().muted = true
 }
 // 设置非静音
 function setNotMuted() {
  getVideo().muted = false
 }
 // 播放
 function vplay() {
  console.log('vplay =>')
  getVideo().play();
 }
 // 暂停
 function vstop() {
  getVideo().pause();
 }
 // 重播
 function vrestart() {
  getVideo().currentTime = 0
  getVideo().play()
 }
 // 取消全屏
 function cancelFull() {
  screenfull.exit()
 }
 // 打开全屏
 function openFull() {
  getVideo().webkitRequestFullscreen()
 }
 // 音量 --
 function reduceVolume() {
  console.log('reduceVolume:: current volume: ', myVideo.volume) // 当前音量
  getVideo().muted = false
  if (_volumeNum <= 0) return
  _volumeNum = accSub(_volumeNum, 0.1)
  getVideo().volume = _volumeNum
 }
 // 音量 ++
 function addVolume() {
  console.log('addVolume:: current volume: ', myVideo.volume)  // 当前音量
  getVideo().muted = false
  if (_volumeNum >= 1) return
  _volumeNum = accAdd(_volumeNum, 0.1)
  getVideo().volume = _volumeNum
 }

遇到的问题

关于人工触发

打开网页的时候,autoplay可以自动播放,但是是静音模式,从76版本开始,chrome浏览器安全机制不再允许有声自动播放视频。

同样的,处于安全考虑,浏览器也不能够在没有用户操作的情况,通过接口设置为全屏。

当前项目引入 puppeteer 目的就是为了模拟人工触发页面的情况。

总结

以上所述是小编给大家介绍的Nodejs中使用puppeteer控制浏览器中视频播放功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

NodeJs 相关文章推荐
Nodejs为什么选择javascript为载体语言
Jan 13 NodeJs
Nodejs多站点切换Htpps协议详解及简单实例
Feb 23 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
nodejs multer实现文件上传与下载
May 10 NodeJs
mac下的nodejs环境安装的步骤
May 24 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
NodeJS 中Stream 的基本使用
Jul 30 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
NodeJS模块与ES6模块系统语法及注意点详解
Jan 04 NodeJs
nodeJS进程管理器pm2的使用
Jan 09 NodeJs
NodeJs生成sitemap站点地图的方法示例
Jun 11 NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 NodeJs
nodejs简单抓包工具使用详解
Aug 23 #NodeJs
nodejs使用node-xlsx生成excel的方法示例
Aug 22 #NodeJs
Nodejs libuv运行原理详解
Aug 21 #NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 #NodeJs
Nodejs 识别图片类型的方法
Aug 15 #NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 #NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 #NodeJs
You might like
php json转换成数组形式代码分享
2014/11/10 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
对Js OOP编程 创建对象的一些全面理解
2016/07/26 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
2016/09/14 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
2017/05/05 Javascript
如何使用VuePress搭建一个类型element ui文档
2019/02/14 Javascript
JS判断两个数组或对象是否相同的方法示例
2019/02/28 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
Python读写Excel文件方法介绍
2014/11/22 Python
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
安装python时MySQLdb报错的问题描述及解决方法
2018/03/20 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
2019/02/21 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
2020/04/15 Python
利用python实现平稳时间序列的建模方式
2020/06/03 Python
Europcar美国/加拿大:预订汽车或卡车租赁服务
2018/11/13 全球购物
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
如何写一份好的英文求职信
2014/03/19 职场文书
医学生求职信
2014/07/01 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
武侯祠导游词
2015/02/04 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
Axios取消重复请求的方法实例详解
2021/06/15 Javascript
如何用H5实现好玩的2048小游戏
2022/07/23 HTML / CSS