百度云网盘视频音频倍速播放

百度云在线视频/音频 倍速播放,没有额外的按钮,直接点击视频中的倍数按钮 即可倍数播放。需要定制脚本请联系QQ2847046608

// ==UserScript==
// @name         百度云网盘视频音频倍速播放
// @namespace    http://tampermonkey.net/
// @version      2025-03-22
// @description  百度云在线视频/音频 倍速播放,没有额外的按钮,直接点击视频中的倍数按钮 即可倍数播放。需要定制脚本请联系QQ2847046608
// @author       You
// @match        https://yun.baidu.com/pfile/video?*
// @match        https://yun.baidu.com/disk/main*
// @match        https://pan.baidu.com/pfile/video?*
// @match        https://pan.baidu.com/disk/main*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=baidu.com
// @grant        none
// @license MIT
// ==/UserScript==

(function () {
  'use strict';

  if (!localStorage.playSpeed) {
    localStorage.playSpeed = 1;
  }

  // 等待元素出现
  function waitForElement(selector, timeout = 3000) {
    return new Promise((resolve, reject) => {
      const element = document.querySelector(selector);
      if (element) return resolve(element); // 如果元素已存在,立即返回

      const observer = new MutationObserver(() => {
        const found = document.querySelector(selector);
        if (found) {
          observer.disconnect(); // 停止监听
          resolve(found);
        }
      });

      observer.observe(document.body, { childList: true, subtree: true });

      setTimeout(() => {
        observer.disconnect(); // 超时后停止监听
        reject(new Error(`等待 ${selector} 超时`));
      }, timeout);
    });
  }


  // 音频
  (function () {
    const OriginalAudio = window.Audio;

    window.Audio = function (...args) {
      var myAudio = new OriginalAudio(...args);

      waitForElement(".audio-time-wrap").then(el => {
        var jiedian = document.querySelector(".audio-time-wrap");
        jiedian.insertAdjacentElement('afterend', myAudio);
        jiedian.style.display = "none";

        myAudio.controls = true;
        myAudio.style.width = "100%";
      }).catch(err => {
      });

      // 强制设置播放速度为 2 倍速
      myAudio.playbackRate = localStorage.playSpeed;
      myAudio.addEventListener('ratechange', () => {
        localStorage.playSpeed = myAudio.playbackRate;
        //console.log(`播放速度改变为: ${audio.playbackRate}x`);
      });
      return myAudio;
    };

    // 保留原型链
    window.Audio.prototype = OriginalAudio.prototype;
  })();

  //视频倍速
  clearInterval(window.asdasd);
  window.asdasd = setInterval(() => {
    var affsdasd = document.querySelector(".vp-video__control-bar--playback-rates");
    if (!!affsdasd && !affsdasd.classList.contains("aaaa")) {
      affsdasd.classList.add("aaaa");
      clearInterval(window.asdasd);




      //点击“选集”跳转到开头
      document.querySelector(".vp-aside-box__top-title").addEventListener("click", () => {
        document.querySelector("video").currentTime = 2
      });



      affsdasd.insertAdjacentHTML('afterbegin', `
<div class="vp-video__control-bar--video-button is-svip"><!----><button type="button" class="vp-btn normal is-round" style=""><!----><span><!----> 4X</span></button><!----><!----></div>
<div class="vp-video__control-bar--video-button is-svip"><!----><button type="button" class="vp-btn normal is-round" style=""><!----><span><!----> 3X</span></button><!----><!----></div>
<div class="vp-video__control-bar--video-button is-svip"><!----><button type="button" class="vp-btn normal is-round" style=""><!----><span><!----> 2.5X</span></button><!----><!----></div>
`)

      function changeSpeed(sp) {
        if (!!!sp) {
          sp = localStorage.playSpeed ?? 1;
        }
        document.querySelector("video").playbackRate = sp;

        document.querySelector(".chgsp.is-selected")?.classList.remove("is-selected");
        document.querySelector(".sp" + (sp + "").replace(/\./g, "-"))?.classList.add("is-selected");
      }

      document.querySelectorAll(".vp-video__control-bar--playback-rates > .vp-video__control-bar--video-button").forEach(o => {
        o.classList.add("chgsp");
        var sps = "sp" + o.querySelector("button").innerText.replace("X", "").trim().replace(/\./g, "-");
        o.classList.add(sps);

        o.onclick = function () {
          localStorage.playSpeed = o.querySelector("button").innerText.replace("X", "").trim();
          changeSpeed();
          document.querySelector("video").play();
          document.querySelector("wora-pc-dialog").style.display = "none";
        }
      });
      document.querySelector("video").onplay = function () {
        changeSpeed();
      }

      window.isRightDownTime = undefined;
      [
        document.body,
        document.querySelector(".video-js"), ...document.querySelector(".video-js").querySelectorAll('*')
      ].forEach(oo => {
        oo.onkeydown = () => {
          switch (event.code) {
            case "Right":
            case "ArrowRight":
              if (!!!window.isRightDownTime) {
                window.isRightDownTime = new Date();
              } else {
                changeSpeed(4.3);
              }
              event.stopImmediatePropagation();
              break;
          }
        };

        oo.onkeyup = () => {
          switch (event.code) {
            case "Right":
            case "ArrowRight":
              if (new Date() - window.isRightDownTime < 450) {
                document.querySelector("video").currentTime += 20;
              }
              window.isRightDownTime = undefined;
              changeSpeed();
              event.stopImmediatePropagation();
              break;
          }
        };
      });
    }
  }, 1000)
})();

QingJ © 2025

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