Use Hardware Codecs

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

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

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

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
作者
ktt21
1日のインストール数
1
累計インストール数
13
評価
0 0 0
バージョン
2.1.4.3
作成日
2026/04/02
更新日
2026/04/04
大きさ
35.3KB
互換性
Firefox への互換性あり Chrome への互換性あり Opera への互換性あり Safari への互換性あり Edge への互換性あり
ライセンス
MIT
対象サイト
すべてのサイト

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