AV1 Codec Blocker

Force websites to use alternative video codecs by blocking AV1.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name                AV1 Codec Blocker
// @icon                https://www.google.com/s2/favicons?sz=64&domain=youtube.com
// @author              ElectroKnight22
// @namespace           electroknight22_av1_codec_blocker_namespace
// @version             1.0.0
// @description         Force websites to use alternative video codecs by blocking AV1.
// @match               *://*/*
// @run-at              document-start
// @grant               none
// @inject-into         page
// @license             MIT
// ==/UserScript==

/*jshint esversion: 11 */

(function () {
    'use strict';

    // Modern Logic
    if (window.MediaSource) {
        const originalIsTypeSupported = window.MediaSource.isTypeSupported;
        window.MediaSource.isTypeSupported = function (mime) {
            if (typeof mime === 'string' && (mime.includes('av01') || mime.includes('av1'))) return false;
            return originalIsTypeSupported.call(this, mime);
        };
    }

    // Legacy Fallback Logic
    const originalCanPlayType = window.HTMLMediaElement.prototype.canPlayType;
    window.HTMLMediaElement.prototype.canPlayType = function (mime) {
        if (typeof mime === 'string' && (mime.includes('av01') || mime.includes('av1'))) return '';
        return originalCanPlayType.call(this, mime);
    };

})();