Twitch & YouTube Audio Normalizer

Tenta ajustar o volume para X LUFS no Twitch e YouTube //Attempts to adjust the volume to X LUFS on Twitch and YouTube //尝试将音量调整到在Twitch和YouTube上为X LUFS

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Twitch & YouTube Audio Normalizer
// @namespace    http://tampermonkey.net/
// @version      0.7RR
// @description  Tenta ajustar o volume para X LUFS no Twitch e YouTube //Attempts to adjust the volume to X LUFS on Twitch and YouTube //尝试将音量调整到在Twitch和YouTube上为X LUFS
// @author       Nuzoeto
// @match        https://www.twitch.tv/*
// @match        https://www.youtube.com/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // Função para ajustar o volume para x LUFS
    // 调整音量到 x LUFS 的功能
    // Function to adjust the volume to x LUFS
    function adjustVolumeToMinus9LUFS() {
        // Defina o valor desejado para x LUFS (ajuste conforme necessário)
        // 设置 x LUFS 的期望值(根据需要调整)
        // Set the desired value for x LUFS (adjust as needed)
        const targetLufs = -5;

        // Obtenha todos os elementos de áudio e vídeo na página
        // 获取页面上的所有音频和视频元素
        // Get all audio and video elements on the page
        const mediaElements = document.querySelectorAll('audio, video');

        mediaElements.forEach((element) => {
            // Obtenha o valor atual do volume
            // 获取当前音量值
            // Get the current volume value
            const currentVolume = element.volume;

            console.log('Volume atual:', currentVolume);

            // Use a API de áudio HTML5 para ajustar o volume
            // 使用 HTML5 音频 API 调整音量
            // Use the HTML5 audio API to adjust the volume
            const audioContext = new (window.AudioContext || window.webkitAudioContext)();
            const source = audioContext.createMediaElementSource(element);
            const gainNode = audioContext.createGain();

            source.connect(gainNode);
            gainNode.connect(audioContext.destination);

            // Calcule o ajuste necessário para o ganho
            // 计算必要的增益调整
            // Calculate the necessary gain adjustment
            const gainAdjustment = Math.pow(5, targetLufs / 20);

            // Ajuste o ganho
            // 调整增益
            // Adjust the gain
            gainNode.gain.value = currentVolume * gainAdjustment;

            // Inicie a reprodução se o áudio estiver pausado
            // 如果音频已暂停,则开始播放
            // Start playback if the audio is paused
            if (element.paused) {
                element.play();
            }
        });
    }

    // Chame a função para ajustar o volume
    // 调用调整音量的功能
    // Call the function to adjust the volume
    adjustVolumeToMinus9LUFS();
})();