您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
This userscript will disable the numbers of notifications along with forcing all videos to use the h.264 codec rather than VP9/AV1.
// ==UserScript== // @name Forcing YouTube to use minimal settings for CPU usage reduction // @version 2025.09.14 // @description This userscript will disable the numbers of notifications along with forcing all videos to use the h.264 codec rather than VP9/AV1. // @author LegendCraftMC // @license MIT // @match *://www.youtube-nocookie.com/* // @match *://www.youtube.com/* // @match *://m.youtube.com/* // @namespace https://greasyfork.org/en/users/933798 // @icon https://www.youtube.com/favicon.ico // @unwrap // @run-at document-idle // @unwrap // @grant none // ==/UserScript== // Add config flags to disable both animations and ambient mode functionally // Enable strict mode to catch common coding mistakes "use strict"; // Define the flags to assign to the EXPERIMENT_FLAGS object const flagsToAssign = { // Disable animated features (except for sub and like buttons) web_animated_actions: false, web_animated_like: false, web_animated_like_lazy_load: false, smartimation_background: false, // Disable ambient lighting kevlar_measure_ambient_mode_idle: false, kevlar_watch_cinematics_invisible: false, web_cinematic_theater_mode: false, web_cinematic_fullscreen: false, enable_cinematic_blur_desktop_loading: false, kevlar_watch_cinematics: false, web_cinematic_masthead: false, web_watch_cinematics_preferred_reduced_motion_default_disabled: false, // More tweaks kevlar_refresh_on_theme_change: false }; const updateFlags = () => { // Check if the EXPERIMENT_FLAGS object exists in the window.yt.config_ property chain const expFlags = window?.yt?.config_?.EXPERIMENT_FLAGS; // If EXPERIMENT_FLAGS is not found, exit the function if (!expFlags) return; // Assign the defined flags to the EXPERIMENT_FLAGS object Object.assign(expFlags, flagsToAssign); }; // Create a MutationObserver that calls the updateFlags function when changes occur in the document's subtree const mutationObserver = new MutationObserver(updateFlags); mutationObserver.observe(document, { subtree: true, childList: true }); // Hide the number of notifications to prevent any annoyances // Save the original descriptor of document.title const originalTitleDescriptor = Object.getOwnPropertyDescriptor(Document.prototype, 'title'); // Create a custom getter and setter Object.defineProperty(document, 'title', { get: function() { return originalTitleDescriptor.get.call(this); }, set: function(newValue) { // Remove the (#) with regex. const interceptedValue = newValue.replace(/^\(\d+\)\s?/, ""); // Call the original setter originalTitleDescriptor.set.call(this, interceptedValue); } }); (function() { 'use strict'; const style = document.createElement('style'); style.type = 'text/css'; style.innerText = '.yt-spec-icon-badge-shape--type-notification .yt-spec-icon-badge-shape__badge{display:none;}'; document.head.appendChild(style); })(); // Force all videos to use h.264 (useful if you have a low spec machine when you load videos in 720p60) // Modified from https://github.com/erkserkserks/h264ify/tree/master/src/inject as of 2018-05-16 (MIT license) var mse = window.MediaSource; if (mse){ // Set up replacement for MediaSource type support function var nativeITS = mse.isTypeSupported.bind(mse); mse.isTypeSupported = ourITS(nativeITS); } // Here's the replacement function ourITS(fallback){ // type is a string (hopefully!) sent by the page return function (type) { if (type === undefined) return ''; // We only reject VP9 if (type.toLowerCase().indexOf('vp9') > -1) return ''; if (type.toLowerCase().indexOf('vp09') > -1) return ''; // Added 12/20/2019 // Let Firefox handle everything else return fallback(type); }; } // Add CSS tweaks (disables frosted glass transparency on topbar to revert back to the old topbar color, reducing the bottom gradient in the video player, etc...) (function() { let css = ` /* topbar tweaks */ ytm-mobile-topbar-renderer.frosted-glass, ytm-pivot-bar-renderer.frosted-glass, ytm-feed-filter-chip-bar-renderer.frosted-glass, #background.ytd-masthead, #frosted-glass.ytd-app, #left-arrow-button.ytd-feed-filter-chip-bar-renderer, #right-arrow-button.ytd-feed-filter-chip-bar-rendere { background: var(--yt-spec-base-background) !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important } #left-arrow.ytd-feed-filter-chip-bar-renderer:after { background: linear-gradient(to right, var(--yt-spec-base-background) 20%, rgba(255, 255, 255, 0) 80%) !important } #right-arrow.ytd-feed-filter-chip-bar-renderer:before { background: linear-gradient(to left, var(--yt-spec-base-background) 20%, rgba(255, 255, 255, 0) 80%) !important } ytd-button-renderer.ytd-feed-filter-chip-bar-renderer { background: transparent !important } div#end.style-scope.ytd-masthead .yt-spec-icon-badge-shape--style-overlay.yt-spec-icon-badge-shape--type-cart-refresh .yt-spec-icon-badge-shape__badge { color: #fff !important } .yt-spec-icon-badge-shape--type-notification .yt-spec-icon-badge-shape__badge { display: none !important } /* player tweaks */ #cinematics.ytd-watch-flexy { display: none !important } .ytp-gradient-top, .ytp-gradient-bottom { height: 61px !important; padding: 0 } .ytp-big-mode .ytp-gradient-top, .ytp-big-mode .ytp-gradient-bottom { height: 0 !important } .ytp-gradient-top { background: linear-gradient(to bottom, #0009, #0000) !important } .ytp-gradient-bottom { background: linear-gradient(to top, #0009, #0000) !important }`; if (typeof GM_addStyle !== "undefined") { GM_addStyle(css); } else { let styleNode = document.createElement("style"); styleNode.appendChild(document.createTextNode(css)); (document.querySelector("head") || document.documentElement).appendChild(styleNode); } })();