视频播放速度控制

通过按c和z键来控制网页视频的播放速度,按x键恢复初始速度,并在调整时显示当前播放速度,新增数字1、2、3设置固定倍速

// ==UserScript==
// @name         视频播放速度控制
// @namespace    http://tampermonkey.net/
// @version      1.0.4
// @description  通过按c和z键来控制网页视频的播放速度,按x键恢复初始速度,并在调整时显示当前播放速度,新增数字1、2、3设置固定倍速
// @author       hsq
// @match        *://*/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    let initialPlaybackRate = 1; // 初始播放速度

    // 创建提示框元素
    const speedInfoDiv = document.createElement('div');
    speedInfoDiv.style.position = 'fixed';
    speedInfoDiv.style.top = '10%';
    speedInfoDiv.style.left = '50%';
    speedInfoDiv.style.transform = 'translateX(-50%)';
    speedInfoDiv.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
    speedInfoDiv.style.color = 'white';
    speedInfoDiv.style.padding = '10px';
    speedInfoDiv.style.borderRadius = '5px';
    speedInfoDiv.style.fontSize = '16px';
    speedInfoDiv.style.zIndex = '999999';
    speedInfoDiv.innerText = '当前播放速度: 1x';
    document.body.appendChild(speedInfoDiv);
    speedInfoDiv.style.display = 'none'; 

    // 获取视频元素
    const video = document.querySelector('video');
    if (!video) return;

    // 检测全屏状态并调整提示框位置
    let isFullscreen = false;

    function onFullscreenChange() {
        isFullscreen = document.fullscreenElement !== null;
        if (isFullscreen) {
            speedInfoDiv.style.top = '10%';
        } else {
            speedInfoDiv.style.top = '10%';
        }
    }

    document.addEventListener('fullscreenchange', onFullscreenChange);

    // 监听键盘事件
    document.addEventListener('keydown', function(event) {
        // 按下c键,增加播放速度
        if (event.key === 'c') {
            video.playbackRate += 0.1;
            showSpeedInfo();
        }
        // 按下z键,减小播放速度
        if (event.key === 'z') {
            video.playbackRate -= 0.1;
            showSpeedInfo();
        }
        // 按下x键,恢复初始播放速度
        if (event.key === 'x') {
            video.playbackRate = initialPlaybackRate;
            showSpeedInfo();
        }
        // 按下数字键1,设置播放速度为1倍
        if (event.key === '1') {
            video.playbackRate = 1;
            showSpeedInfo();
        }
        // 按下数字键2,设置播放速度为2倍
        if (event.key === '2') {
            video.playbackRate = 2;
            showSpeedInfo();
        }
        // 按下数字键3,设置播放速度为3倍
        if (event.key === '3') {
            video.playbackRate = 3;
            showSpeedInfo();
        }
    });

    // 显示播放速度提示框
    function showSpeedInfo() {
        speedInfoDiv.innerText = '当前播放速度: ' + video.playbackRate.toFixed(1) + 'x';
        speedInfoDiv.style.display = 'block'; // 显示提示框

        // 1.5秒后隐藏提示框
        setTimeout(function() {
            speedInfoDiv.style.display = 'none';
        }, 1500); // 提示框在1.5秒后消失
    }
})();