Use Hardware Codecs

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

作者
ktt21
今日安裝
0
安裝總數
63
評價
0 0 0
版本
2.3.0
建立日期
2026-04-02
更新日期
2026-04-20
尺寸
39.6 KB
相容性
相容於 Firefox 相容於 Chrome 相容於 Opera 相容於 Safari 相容於 Edge
授權條款
MIT
腳本執行於
所有網站

Use Hardware Codecs

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

  • canPlayType;

  • isTypeSupported;

  • addSourceBuffer;

  • decodingInfo;

  • VideoDecoder.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].