Greasy Fork

来自缓存

Greasy Fork is available in English.

Video Volume Booster (通用音量放大器)

放大任意网站视频音量(支持多倍增益)

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Video Volume Booster (通用音量放大器)
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  放大任意网站视频音量(支持多倍增益)
// @author       Kazzz
// @match        *://*/*
// @grant        none
// @license MIT
// ==/UserScript==

(function () {
    'use strict';

    // === 可调参数 ===
    const GAIN_VALUE = 4.0; // 默认放大倍数(1.0 = 原音量,2.0 = 200%,可根据需求调整)
    const CHECK_INTERVAL = 2000; // 检测视频间隔(毫秒)

    const boostedVideos = new WeakSet();

    function boostVolume(video) {
        if (boostedVideos.has(video)) return;
        try {
            const ctx = new AudioContext();
            const source = ctx.createMediaElementSource(video);
            const gainNode = ctx.createGain();
            gainNode.gain.value = GAIN_VALUE;
            source.connect(gainNode).connect(ctx.destination);
            boostedVideos.add(video);
            console.log(`[VolumeBooster] 已为视频启用音量放大:x${GAIN_VALUE}`);
        } catch (err) {
            console.warn('[VolumeBooster] 无法增强音量:', err);
        }
    }

    function scanVideos() {
        document.querySelectorAll('video').forEach(boostVolume);
    }

    setInterval(scanVideos, CHECK_INTERVAL);
    scanVideos();

    // 可选:按下键盘快捷键 “Shift + ↑/↓” 调整音量倍数
    window.addEventListener('keydown', e => {
        if (!e.shiftKey) return;
        if (e.key === 'ArrowUp') {
            window.GAIN_VALUE = Math.min((window.GAIN_VALUE || GAIN_VALUE) + 0.2, 5);
            console.log(`🔊 当前音量放大倍数: x${window.GAIN_VALUE.toFixed(1)}`);
        } else if (e.key === 'ArrowDown') {
            window.GAIN_VALUE = Math.max((window.GAIN_VALUE || GAIN_VALUE) - 0.2, 1);
            console.log(`🔉 当前音量放大倍数: x${window.GAIN_VALUE.toFixed(1)}`);
        }
    });
})();