视频倍速修改

自定义页面所有视频播放速度,默认1.5倍

目前為 2024-12-27 提交的版本,檢視 最新版本

// ==UserScript==
// @name         视频倍速修改
// @version      1.01
// @description  自定义页面所有视频播放速度,默认1.5倍
// @author       Lama AI 辅助
// @match        http://*/*
// @match        https://*/*
// @grant        GM_setValue
// @grant        GM_getValue
// @run-at       document-end
// @namespace    https://gf.qytechs.cn/users/1171320
// @license MIT
// ==/UserScript==

function setVideoSpeed() {
    'use strict';

    let defaultSpeed = 1.5;
    let currentSpeed = defaultSpeed;
    let savedSpeed = GM_getValue('videoSpeed');

    if (savedSpeed) {
        defaultSpeed = parseFloat(savedSpeed);
        currentSpeed = defaultSpeed;
    }

    function updateSpeed(newSpeed) {
        let videos = document.querySelectorAll('video, [class*="player"] video'); //More robust selector
        videos.forEach(video => {
            try {
                video.playbackRate = parseFloat(newSpeed);
            } catch (error) {
                console.error("Error setting playbackRate:", error);
            }
        });
        currentSpeed = newSpeed;
    }

    function saveSpeed(newSpeed) {
        GM_setValue('videoSpeed', newSpeed);
    }


    //Handle iframes recursively
    function applySpeedToIframe(iframe) {
        try {
            const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
            const iframeVideos = iframeDoc.querySelectorAll('video, [class*="player"] video');
            iframeVideos.forEach(video => {
                try {
                    video.playbackRate = currentSpeed;
                } catch (error) {
                    console.error("Error setting playbackRate in iframe:", error);
                }
            });
            const iframeIfames = iframeDoc.querySelectorAll('iframe');
            iframeIfames.forEach(applySpeedToIframe);
        } catch (error) {
            console.error("Error accessing iframe content:", error);
        }
    }

    updateSpeed(currentSpeed); //Set initial speed

    let iframes = document.querySelectorAll('iframe');
    iframes.forEach(applySpeedToIframe);


    let control = document.createElement('div');
    control.textContent = '倍速';
    control.style.cssText = `
        position: fixed;
        right: 5px;
        top: 30px;
        padding: 2px;
        background: #ddd;
        border: 1px solid #999;
        cursor: pointer;
        z-index: 9999;
    `;

    document.body.appendChild(control);

    control.addEventListener('click', () => {
        let newSpeed = prompt('输入播放倍速:', currentSpeed);
        if (newSpeed) {
            saveSpeed(newSpeed);
            updateSpeed(newSpeed);
        }
    });
}


let throttleTimer;

const throttle = () => {
    if (throttleTimer) return;

    throttleTimer = setTimeout(() => {
        setVideoSpeed();
        throttleTimer = null;
    }, 800);
};


//Call setVideoSpeed directly instead of relying on scroll event alone.
setVideoSpeed();
//window.addEventListener('scroll', throttle); //Keep this if you want to trigger on scroll as well

QingJ © 2025

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