Use Hardware Codecs

Проигрывать видео только аппаратными кодеками, поддерживаемые вашим устройством. (Перехватывает: canPlayType, isTypeSupported, addSourceBuffer, decodingInfo, VideoDecoder/AudioDecoder.isConfigSupported. Работает во всех фреймах.)

K instalaci tototo skriptu si budete muset nainstalovat rozšíření jako Tampermonkey, Greasemonkey nebo Violentmonkey.

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

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Userscripts.

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

K instalaci tohoto skriptu si budete muset nainstalovat manažer uživatelských skriptů.

(Už mám manažer uživatelských skriptů, nechte mě ho nainstalovat!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Už mám manažer uživatelských stylů, nechte mě ho nainstalovat!)

Autor
ktt21
Denně instalací
2
Celkem instalací
14
Hodnocení
0 0 0
Verze
2.1.4.3
Vytvořeno
02. 04. 2026
Aktualizováno
04. 04. 2026
Size
35,3 KB
Kompatibilita
Kompatibilní s Firefox Kompatibilní s Chrome Kompatibilní s Opera Kompatibilní s Safari Kompatibilní s Edge
Licence
MIT
Spustit na
všech stránkách

Use Hardware Codecs

Проигрывать видео только аппаратными кодеками, поддерживаемые вашим устройством. Для этого работает во всех фреймах и использует 5 методов перехвата:

  • canPlayType;

  • isTypeSupported;

  • addSourceBuffer;

  • decodingInfo;

  • VideoDecoder/AudioDecoder.isConfigSupported.

Цель скрипта:

Принудительное использование только аппаратных (HW) кодеков для воспроизведения видео на всех сайтах.
Скрипт предотвращает использование программных (SW) кодеков, которые нагружают CPU и расходуют батарею, особенно на мобильных устройствах.
При установке флага AllowSW=true при невозможности воспроизвести видео как HW-кодек пропускать воспроизведение как SW, после нескольких запросов SW-кодеков от плеера.

Основной функционал:

  1. Перехват всех путей выбора кодека
    • HTMLVideoElement.canPlayType
    • MediaSource.isTypeSupported
    • MediaSource.prototype.addSourceBuffer
    • navigator.mediaCapabilities.decodingInfo
    • VideoDecoder.isConfigSupported (WebCodecs API – низкоуровневый)
  2. Постоянный кэш аппаратных возможностей
    • Результаты тестирования кодеков сохраняются в localStorage.
    • Кэш общий для всех вкладок через BroadcastChannel.
    • Не тестирует одни и те же кодеки при каждом запуске.
  3. Безопасный fallback на H.264 пока кэш не заполнен
    • H.264 гарантированно поддерживается аппаратно почти на всех устройствах.
  4. Блокировка SW-кодеков с адаптивным порогом
    • Если плеер упорно запрашивает SW (например, не знает о HW), скрипт через SW_BLOCK_THRESHOLD (по умолчанию 6) временно разрешает SW, чтобы избежать чёрного экрана.
  5. Работа во всех фреймах
    • @all-frames true + @inject-into page позволяет внедряться в cross‑origin iframe (там, где это технически возможно).
    • Исключение: Web Workers – туда скрипт проникнуть не может, но такие сайты (Rutube) обычно сами выбирают HW.
  6. Минимальное влияние на производительность
    • Все тесты выполняются асинхронно, не блокируют рендеринг.
    • После заполнения кэша никаких повторных тестов – только проверка по Map.
  7. Поддержка мобильных устройств
    • Определяет платформу и использует упрощённый safe fallback для экономии трафика и батареи.

Настройки для продвинутых пользователей:

const DEBUG = false;         // true = подробные логи в консоль

const ClearCache = false;      // true = очистить кэш при следующей загрузке

const AllowSW = false;         // true = разрешить SW если HW недоступен

const SW_BLOCK_THRESHOLD = 6;  // Порог SW-запросов до fallback

Код для вставки в массив CODECS_TO_TEST (если найден новый HW кодек, отсутсвующий в массиве - будет сообщение в косноли об этом событии):

vp09.00.51.08.01.01.01.01.00', // добавленный найденный HW-кодек для ускорения старта в следующий раз

Ограничения (известные):

  • Web Workers – скрипт не может перехватить API в отдельном потоке (Rutube, некоторые современные плееры). Однако такие сайты обычно сами выбирают HW-кодеки.
  • Cross-origin iframe с жёсткой политикой безопасности – иногда браузер блокирует внедрение даже с @all-frames.
  • localStorage изолирован по origin – кэш для разных доменов не совместный. Для same-origin iframe используется window[MAP_KEY].