B站加速脚本原理

可以参见我的上一篇文章(内含源码)学习利器,借助Tampermonkey写一个B站视频加速器脚本

JavaScript控制视频的播放速度,使用下面代码:

var vd = document.getElementsByTagName("video");
vd[0].playbackRate =s;

使用此方法的确可以增加速度,但是如果观看多集的视频会发现,每当加载新的视频就会失效,但是B站上面设置的速度可以在加载新的视频而视频的播放速度不重新变为1倍速

研究B站的本地存储发现:

B站使用了会话存储存放视频的播放速度,键为bilibili_player_settings,值为

{"block":{"status":true,"aiblock":true,"ailevel":3,"type_scroll":true,"type_top":true,"type_bottom":true,"type_reverse":true,"type_guest":true,"type_color":true,"function_normal":true,"function_subtitle":true,"function_special":true,"cloud_level":2,"cloud_source_video":true,"cloud_source_partition":true,"cloud_source_all":true,"size":0,"regexp":false,"dmChecked":true,"list":[]},"video_status":{"videoaid":"20448584","videobvid":"BV1pW411W7kk","videospeed":1}
}

可以看出在video_status的videospeed为1,这个值就是播放的速度,每次加载新的视频时会读取videospeed的值然后设置播放的值为此值。

通过sessionStorage获取信息后发现是字符串类型

var str = sessionStorage.getItem("bilibili_player_settings");

有两种解决方案1.匹配字符串更改数值 2.转化JSON对象更改数值。

方案1:使用字符串匹配不容易匹配要使用正则,但是当第一次打开视频没有点击视频加速按钮时,就会发现会话存储没有videospeed,这就增加了难度

方案2:可以使用

var j = JSON.parse(str);

转换为JSON对象,可以添加属性和更改属性的值。

最后设计一个小按钮可以点击加速,可以灵活的设置速度,外加设置z-index的值来实现网页全屏还可以显示点击按钮。

var sped = document.createElement("div");
sped.innerText = "1X";
sped.style.position = "fixed";
sped.style.backgroundColor = "rgba(253, 102, 1, 0.5)";
sped.style.width = "60px";
sped.style.height = "100px";
sped.style.top = "250px";
sped.style.right = "0px";
sped.style.borderRadius = "15px 0px 0px 15px";
sped.style.fontSize = "24px";
sped.style.display = "flex";
sped.style.alignItems = "center";
sped.style.justifyContent = "center";
sped.style.userSelect = "none";
sped.style.zindex = 99999999;
document.body.appendChild(sped);
$(sped).css({"z-index":99999999})

一份B站视频加速器脚本原理请查收相关推荐

  1. python批量下载b站_PYTHON批量下载B站视频小脚本

    无聊废话 最近在学习HCIE的视频,收藏了几个相关的视频,结果前几天...视频被下架了了...呃...(⊙o⊙)- 视频被下架 视频被下架了...我学了一半呀...哭... 在网上一顿找,依旧找不到. ...

  2. 一份来自清华的数据分析笔记,请查收!

    之前发过很多数据分析的文章,收到不少好评,但也有一些困惑: 入门数据分析该学哪些知识点?该看哪些书? 是从 Python入手还是 R 语言?常用的算法有哪些? 练手做项目的数据库去哪里找?好用的爬虫工 ...

  3. Jeff Dean:我们写了一份「稀疏模型设计指南」,请查收

    来源:机器之心 本文约1600字,建议阅读5分钟 稀疏模型在深度学习领域发挥着越来越重要的作用. 稀疏模型在深度学习领域发挥着越来越重要的作用.对于给定的 token 或样本,它可以只激活模型的一小部 ...

  4. bootstrap 垂直居中 布局_给你一份详细的CSS布局指南,请查收

    作者:catboy 文章来源:http://t.cn/A6wtKzip 在我们前端开发过程中,写css(包括sass, less, stylus这样的预处理器)进行设计稿的样式还原是一项重要的工作,而 ...

  5. 报表开发难上手?这里有一份 Fastreport 最新中文用户指南,请查收

    Fast Reports,Inc.成立于1998年,多年来一直致力于开发快速报表软件,包括应用程序.库和插件.FastReport的报表生成器(VCL平台和.NET平台).跨平台的多语言脚本引擎Fas ...

  6. 有一份程序员脱单攻略,请查收

    身为一个程序员资深荣誉女友,我就厚颜无耻地从一个女生的角度,八一八追女生这件事,给广大程序猿同胞几条小Tips吧. ★ 你总说女生只会找你修电脑,却不知是木讷的你技术真的太好! 记得很久之前在网上看到 ...

  7. 汽车十大轮胎排名韩泰轮胎:这份秋冬季汽车轮胎挑选攻略请查收!

    人间朝暮,叶落惊秋.随着气温的下降,北方的车友们此时是不是已经默默的把更换秋冬季轮胎提上日程了呢?轮胎作为汽车的重要部件之一,直接关系着行车安全.可是如今的轮胎市场产品五花八门,如何才能选出一款优秀. ...

  8. 叮咚,您有一份专线链路带宽管理方案,请查收

    身为网络运维工程师, 你是否曾经遇到过这些问题? 业务部门, 三天两头来投诉, 称业务端应用非常慢.业务无法及时响应, 怀疑带宽容量不够,要求增加带宽! 其他分支机构或者部门, 每当有应用要升级或者上 ...

  9. 叮,一份详细的LIN收发器选型指南请查收

    文章目录 1. NXP的LIN收发器介绍 单通道LIN收发器 功能描述 参数对比 双通道LIN收发器 四通道LIN收发器 功能描述 参数对比 LIN Mini-SBC 功能描述 参数对比 总结 2. ...

  10. 金秋月圆,学习礼包“WAIC可信隐私计算论坛”完整视频已上架!请查收~

    在上周举办的2022WAIC期间好消息频传"隐语可信隐私计算技术栈 "入选 2022WAIC"镇馆之宝" ,"隐语开放平台"全球首发,&qu ...

最新文章

  1. mysql 死锁记录
  2. WriteFile和GetSystemDirectory
  3. Django知识总结(一)
  4. [Effective C++读书笔记]003_条款03_尽可能使用const
  5. python中easygui有几种_Python 模块EasyGui详细介绍
  6. SQLServer 与 MySQL
  7. AttributeError: module ‘tensorflow‘ has no attribute ‘InteractiveSession‘或 ‘placeholder‘的解决
  8. poj 3461 Oulipo kmp 预处理
  9. 关于 Spring 注解和 XML 的选择问题
  10. springboot-bean生命周期
  11. 如何在React.js文件中设置标签的背景图片
  12. Component is missing template or render function
  13. MapReduce实现倒排索引(Inverted Index)
  14. 二维码怎么知道自己被扫描 ()==> java 篇 带一点点(Android)
  15. A股上市公司财报披露时间
  16. WPF TabControl 隐藏标头
  17. 四舍五入VS银行家舍入
  18. POI导出Excel (满满的干货啊)
  19. 适合开车听的歌 开车必听歌曲排行榜 适合年轻人开车听的歌
  20. win+r 快捷命令

热门文章

  1. 基于STC12C5A60S2的SDHC卡的初始化和读写过程
  2. linux图形显卡驱动r600,R600/R700八款显卡Mesa开源驱动性能简测
  3. android assets绝对路径,Android获取assets文件路径
  4. pycharm如何正确打包ocr且让打包出来的exe尽量小
  5. 解决NUC8豆子峡谷装黑苹果键盘错位的设置
  6. 模拟京东快递单号查询案例
  7. Windows 10升级无法选择保留个人文件、设置问题解决
  8. idea导入myeclipse项目以后报错,配置文件灰色以及 com.alipay.demo.trade.Main test_trade_precreate 严重: 系统异常,预下单状态未知
  9. 服务器ie浏览器总是未响应怎么办,IE8浏览器总是无响应或卡死崩溃怎么办
  10. 服务器被ddos攻击?分析如何防止DDOS攻击?