Use Hardware Codecs

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

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

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

Tendrás que instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Tendrás que instalar una extensión como Tampermonkey antes de poder instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

Autor
ktt21
Instalaciones diarias
2
Instalaciones totales
18
Calificaciones
0 0 0
Versión
2.1.4.3
Creado
02/04/2026
Actualizado
04/04/2026
Tamaño
35.3 KB
Compatibilidad
Compatible con Firefox Compatible con Chrome Compatible con Opera Compatible con Safari Compatible con Edge
Licencia
MIT
Funciona en
Todos los sitios

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