倍速播放

使用 - 和 = 键来控制视频倍速,并显示当前倍速

// ==UserScript==
// @name         倍速播放
// @namespace    http://your.namespace.com
// @version      1.0
// @description  使用 - 和 = 键来控制视频倍速,并显示当前倍速
// @author       Your Name
// @match        *://*/*
// @license      MIT
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    window.addEventListener('load', function() {
        var videoElement = document.querySelector('video');

        if (videoElement) {
            var currentSpeedIndex = 3; // 初始倍速为 1.0x
            var playbackSpeedStep = 0.25; // 每次增减的倍速值

            // 创建一个提示框元素
            var speedInfo = document.createElement('div');
            speedInfo.style.position = 'absolute';
            speedInfo.style.top = '50%';
            speedInfo.style.left = '50%';
            speedInfo.style.transform = 'translate(-50%, -50%)';
            speedInfo.style.background = 'rgba(0, 0, 0, 0.7)';
            speedInfo.style.color = 'white';
            speedInfo.style.padding = '5px';
            speedInfo.style.borderRadius = '5px';
            speedInfo.style.zIndex = '9999';
            speedInfo.style.display = 'none'; // 初始隐藏提示框
            videoElement.parentElement.appendChild(speedInfo);

            // 显示提示框并设置定时隐藏
            function showSpeedInfo() {
                speedInfo.style.display = 'block';
                setTimeout(function() {
                    speedInfo.style.display = 'none';
                }, 2000); // 2秒后隐藏提示框
            }

            function updateSpeedInfo() {
                var newSpeed = 0.25 + currentSpeedIndex * playbackSpeedStep;
                if (newSpeed > 8.0) {
                    newSpeed = 8.0; // 最大限制为8倍
                }
                videoElement.playbackRate = newSpeed.toFixed(2); // 保留两位小数

                // 更新提示框文本
                speedInfo.textContent = newSpeed.toFixed(2) + 'x';

                // 显示提示框
                showSpeedInfo();
            }

            document.addEventListener('keydown', function(event) {
                if (event.key === '-' || event.key === '=') {
                    // - 或 = 键按下,减小或增加倍速
                    currentSpeedIndex += (event.key === '-') ? -1 : 1;
                    // 限制倍速值在合法范围内(0.25 到 8.0)
                    currentSpeedIndex = Math.max(0, Math.min(currentSpeedIndex, 32));

                    // 更新倍速和提示框
                    updateSpeedInfo();
                }
            });

            // 初始化提示框
            updateSpeedInfo();
        }
    });
})();