Use Hardware Codecs

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

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

作者
ktt21
日安装量
0
总安装量
62
评分
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].