YouTube 标准画质

只允许 YouTube 选择 1080P60、1080P30、720P60、720P30 画质。避免由于网络问题卡顿:高画质用不上费流量、低网速降画质瞎眼睛。

目前為 2025-04-22 提交的版本,檢視 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         YouTube 标准画质
// @description  只允许 YouTube 选择 1080P60、1080P30、720P60、720P30 画质。避免由于网络问题卡顿:高画质用不上费流量、低网速降画质瞎眼睛。
// @match        https://www.youtube.com/*
// @version       1.0
// @author         yzcjd
// @author2       ChatGPT4 辅助
// @namespace   https://greasyfork.org/users/1171320
// @license MIT
// ==/UserScript==


(function() {
  'use strict';

  // 定义优先顺序
  const preferredQualities = ['hd1080', 'hd720'];

  // 监听播放状态变化
  function hookPlayer() {
    const checkPlayer = () => {
      const player = document.getElementById('movie_player');

      if (!player || typeof player.getAvailableQualityLevels !== 'function') {
        setTimeout(checkPlayer, 500);
        return;
      }

      console.log('[YouTube Quality Filter] Player ready, binding events.');

      player.addEventListener('onStateChange', function(state) {
        if (state === 1) { // 播放开始
          console.log('[YouTube Quality Filter] Playing - enforcing quality.');
          enforceQuality(player);
        }
      });

      // 视频切换或重新加载时,也重新检测
      setInterval(() => {
        enforceQuality(player);
      }, 30000); // 每30秒强制一次,确保不会被降回高画质
    };

    checkPlayer();
  }

  function enforceQuality(player) {
    if (!player || typeof player.getAvailableQualityLevels !== 'function') return;

    const levels = player.getAvailableQualityLevels(); // 获取当前可用画质
    console.log('[YouTube Quality Filter] Available qualities:', levels);

    let targetQuality = null;

    if (levels.includes('hd1080')) {
      targetQuality = 'hd1080';
    } else if (levels.includes('hd720')) {
      targetQuality = 'hd720';
    }

    if (targetQuality) {
      console.log('[YouTube Quality Filter] Setting quality to:', targetQuality);
      player.setPlaybackQualityRange(targetQuality, targetQuality);
      player.setPlaybackQuality(targetQuality);
    }
  }

  // 监听YouTube内部的导航完成
  window.addEventListener('yt-navigate-finish', () => {
    console.log('[YouTube Quality Filter] Navigation detected - Re-hooking player.');
    setTimeout(hookPlayer, 1000);
  });

  // 初次加载
  hookPlayer();
})();