自定义视频播放速度

允许自定义视频播放速度

目前為 2023-07-14 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name 自定义视频播放速度
  3. // @version 2.1
  4. // @description 允许自定义视频播放速度
  5. // @author ChatGPT
  6. // @match http://*/*
  7. // @match https://*/*
  8. // @grant GM_setValue
  9. // @grant GM_getValue
  10. // @run-at document-end
  11. // @namespace https://gf.qytechs.cn/users/452911
  12. // ==/UserScript==
  13.  
  14. function setVideoSpeed() {
  15. 'use strict';
  16.  
  17. let videos = document.querySelectorAll('video,[class*="player"] *');
  18. if (videos.length > 0 && !document.fullscreenElement) {
  19. (function() {
  20. 'use strict';
  21.  
  22. let defaultSpeed = 1;
  23. let currentSpeed = defaultSpeed;
  24.  
  25. let savedSpeed = GM_getValue('videoSpeed');
  26. if (savedSpeed) {
  27. defaultSpeed = parseFloat(savedSpeed);
  28. currentSpeed = defaultSpeed;
  29. }
  30.  
  31. let videos = document.querySelectorAll('video,[class*="player"] *');
  32. for (let i = 0; i < videos.length; i++) {
  33. videos[i].playbackRate = currentSpeed;
  34. }
  35.  
  36. let control = document.createElement('div');
  37. control.textContent = '倍速控制';
  38. control.style.cssText = `
  39. position: fixed;
  40. right: 5px;
  41. top: 30px;
  42. padding: 2px;
  43. background: #ddd;
  44. border: 1px solid #999;
  45. cursor: pointer;
  46. z-index: 9999;
  47. `;
  48.  
  49. document.body.appendChild(control);
  50.  
  51. control.addEventListener('click', () => {
  52. let newSpeed = prompt('请输入新的播放倍速:', currentSpeed);
  53. if (newSpeed) {
  54. saveSpeed(newSpeed);
  55. updateSpeed(newSpeed);
  56. }
  57. });
  58.  
  59. function updateSpeed(newSpeed) {
  60. for (let i = 0; i < videos.length; i++) {
  61. videos[i].playbackRate = newSpeed;
  62. }
  63. currentSpeed = newSpeed;
  64. }
  65.  
  66. function saveSpeed(newSpeed) {
  67. GM_setValue('videoSpeed', newSpeed);
  68. }
  69.  
  70. window.addEventListener('speedChanged', (e) => {
  71. let newSpeed = e.data;
  72. updateSpeed(newSpeed);
  73. });
  74.  
  75. let iframes = document.querySelectorAll('iframe');
  76. iframes.forEach(applySpeed);
  77.  
  78. function applySpeed(iframe) {
  79. let doc = iframe.contentDocument;
  80. let videos = doc.querySelectorAll('video,[class*="player"] *');
  81. videos.forEach(v => v.playbackRate = currentSpeed);
  82. let iframes = doc.querySelectorAll('iframe');
  83. iframes.forEach(applySpeed);
  84. }
  85. })();
  86. }
  87. }
  88.  
  89. document.addEventListener('touchstart', () => {
  90. setVideoSpeed();
  91. });
  92.  
  93. setVideoSpeed();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址