您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
可以自定义键位控制长按播放及正常播放的倍速,范围为 0.1 - 16 。
// ==UserScript== // @name Bilibili 任意倍速播放 // @namespace http://tampermonkey.net/ // @version 1.0 // @description 可以自定义键位控制长按播放及正常播放的倍速,范围为 0.1 - 16 。 // @author MnFeN // @match https://www.bilibili.com/video/* // @grant none // @license MIT // ==/UserScript== (function() { // 以下为用户自定义内容 在这里自定义键位和速度的映射关系 // keycode 可在此查询:https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.forms.keys // 长按这个字典的键:长按时以此速度播放,松开后恢复原先的速度 var sustain = { '16': 0.25, // Shift '17': 0.5, // Ctrl '96': 4, // 小键盘 0 '110': 8, // 小键盘 . }; // 按下这个字典的键:设置相应的播放速度 var setOnce = { '111': 0.25, // 小键盘 / '106': 0.5, // 小键盘 * '97': 1, // 小键盘 1 '98': 2, // 小键盘 2 '99': 3, // 小键盘 3 '100': 4, // 小键盘 4 '101': 5, // 小键盘 5 '102': 6, // 小键盘 6 '103': 7, // 小键盘 7 '104': 8, // 小键盘 8 '105': 9, // 小键盘 9 }; // 按下这个字典的键:加速 (true) 或 减速 (false) var adjust = { '107': true, // 小键盘 + '109': false, // 小键盘 - }; // 这个列表为加速或减速时可用的速度档位 var speedList = [0.1, 0.15, 0.25, 0.5, 0.75, 1, 1.5, 2, 3, 4, 5, 6, 8, 10, 12, 16]; // 用户自定义内容到此为止 var originalSpeed = 1; function setSpeed(speed) { var video = document.querySelector('video') || document.querySelector('bwp-video'); if (video) { video.playbackRate = speed; } } function getSpeed() { var video = document.querySelector('video') || document.querySelector('bwp-video'); if (video) { return video.playbackRate; } else return 0; } document.onkeydown = function(e) { var key = e.keyCode || e.which; if (key in sustain) { setSpeed(sustain[key]); } else if (key in setOnce) { setSpeed(setOnce[key]); } else if (key in adjust) { var shouldIncrease = adjust[key]; var currentSpeed = getSpeed(); setSpeed(getNewSpeed(currentSpeed, shouldIncrease)); } }; function getNewSpeed(currentSpeed, shouldIncrease) { let index; if (shouldIncrease) { index = speedList.findIndex(speed => speed > currentSpeed); index = (index != -1) ? index : (speedList.length - 1); } else { index = speedList.slice().reverse().findIndex(speed => speed < currentSpeed); index = (index != -1) ? speedList.length - index - 1 : 0; } return speedList[index]; } document.onkeyup = function(e) { var key = e.keyCode || e.which; if (sustain[key]) { setSpeed(originalSpeed); } }; })();