Расширение для браузера, которое усиливает звук видео до 600% и выравнивает громкость. Тихие диалоги в фильмах поднимаются, взрывы и музыка опускаются, лимитер на выходе не даёт усиленному звуку хрипеть. Работает в Chrome, Edge, Яндекс Браузере, Opera, Brave и Firefox, обрабатывает звук внутри браузера и ничего никуда не отправляет.
Я сделал его для фильмов и сериалов в браузере. Разговоры в них записаны тихо, а экшен громко, и при просмотре дома я всё время крутил громкость.
- Поставьте расширение по инструкции ниже.
- Включите видео. Расширение подключится само в режиме «Авто», настраивать ничего не нужно.
- Если звук всё равно тихий, сдвиньте ползунок «Громкость». Ночью включите режим «Ночь».
Если расширение не может подключиться к видео напрямую, например на сайте с защитой DRM, в Chrome, Edge, Яндекс Браузере, Opera и Brave оно обрабатывает звук всей вкладки. Захват включается сам при открытии окна расширения, кнопкой «Обрабатывать звук всей вкладки» или сочетанием Alt+Shift+V.
Окно расширения открывается по значку на панели браузера. Если значка не видно, нажмите на значок пазла справа от адресной строки и закрепите «Ровный звук».
| Браузер | Как поставить |
|---|---|
| Firefox | С addons.mozilla.org в одно нажатие, обновляется само |
| Chrome, Edge, Яндекс Браузер, Opera, Brave | Из архива в режиме разработчика, около минуты. В магазины для этих браузеров расширение ещё не отправлено |
-
Скачайте
steady-volume-<версия>-chromium.zipсо страницы последнего релиза и распакуйте в папку, которую не будете удалять. Если папку удалить, расширение пропадёт из браузера. -
Откройте страницу расширений. Адрес нужно вставить в адресную строку:
Браузер Адрес Chrome, Brave chrome://extensionsEdge edge://extensionsЯндекс Браузер browser://extensionsOpera opera://extensions -
Включите «Режим разработчика». В Chrome переключатель находится справа вверху, в Edge слева внизу.
-
Нажмите «Загрузить распакованное расширение» и выберите распакованную папку, в которой лежит
manifest.json.
При каждом запуске Chrome предлагает отключить расширения в режиме разработчика. Нажмите «Отмена» или закройте окно. Когда расширение появится в Chrome Web Store, ссылка будет здесь, и установка займёт одно нажатие.
Нужен Firefox 140 или новее. Откройте страницу расширения на addons.mozilla.org и нажмите «Добавить в Firefox». Новые версии Firefox ставит сам.
Сборку из репозитория, которой ещё нет в каталоге, можно загрузить на время, до перезапуска браузера: скачайте steady-volume-<версия>-firefox.zip, распакуйте, откройте about:debugging → «Этот Firefox» → «Загрузить временное дополнение» и выберите manifest.json.
| Настройка | Что делает |
|---|---|
| Громкость | Усиление от 100% до 600% (до +15,6 дБ) поверх выравнивания. Пики срезает лимитер |
| Выравнивание | Выкл, Мягко, Авто, Ночь. Режим «Авто» включён по умолчанию |
| Чётче речь | Минус 4 дБ ниже 160 Гц и плюс 4 дБ около 2,8 кГц |
| На этом сайте | Выключает обработку на текущем сайте. Видео, которое уже играет, переключается без перезагрузки |
| Режим | Для чего | Подъём тихого, до | Снижение громкого, до | Компрессор |
|---|---|---|---|---|
| Выкл | Только усиление, динамика остаётся как в записи | 0 | 0 | выключен |
| Мягко | Музыка и клипы | +6 дБ | −6 дБ | порог −16 дБ, 2:1 |
| Авто | Фильмы, сериалы, YouTube | +12 дБ | −12 дБ | порог −22 дБ, 3:1 |
| Ночь | Тихий просмотр ночью, шумная комната | +20 дБ | −20 дБ | порог −28 дБ, 6:1 |
В разделе «Тонкая настройка» семь ползунков: целевая громкость (от −30 до −12 LUFS), подъём тихого и снижение громкого (до 24 дБ), время возврата громкости (0,5-6 с), порог и степень сжатия компрессора, потолок лимитера (от −12 до 0 дБ). После любого изменения режим становится «свои настройки». Кнопка «Сбросить всё» возвращает «Авто», 100% и выключает «Чётче речь».
Окно расширения переведено на 18 языков: русский, английский, украинский, немецкий, французский, испанский, итальянский, португальский (Бразилия), польский, турецкий, японский, корейский, китайский упрощённый и традиционный, индонезийский, вьетнамский, хинди и арабский. Язык берётся из настроек браузера. Переводы, кроме русского и английского, сделаны нейросетью, исправления принимаются в scripts/locales.py.
Расширение ждёт, когда на странице начнёт играть <video> или <audio>, и подключает элемент к цепочке Web Audio. В каждом фрейме страницы цепочка своя:
- Фильтры режима «Чётче речь».
- Автоматическая регулировка усиления. Каждые 100 мс расширение измеряет громкость за последние 400 мс с K-взвешиванием по ITU-R BS.1770 и плавно ведёт её к −20 LUFS. Громкость опускается с постоянной времени 0,2-0,5 с, поднимается за 1,5-3 с. Если громкость ниже −50 LUFS, усиление остаётся прежним, чтобы тишина и шум не поднимались.
- Компрессор
DynamicsCompressorNodeдля коротких скачков, которые регулировка не успевает поймать. - Усиление из ползунка «Громкость».
- Лимитер с потолком −2 дБ и мягкое ограничение выше 0,8 от полной шкалы.
Я собрал цепочку только из встроенных узлов Web Audio и отказался от AudioWorklet. Модуль AudioWorklet загружается отдельным скриптом, и на сайтах со строгой политикой CSP, например на YouTube, браузер может его заблокировать.
Многие плееры берут файл видео с сервера раздачи (CDN) на другом домене. Браузер даёт обработать звук такого файла, только если ответ сервера разрешает это заголовками CORS. Расширение добавляет эти заголовки правилом declarativeNetRequest. Правило действует только для пары «этот сайт и этот сервер» и только для запросов, которые делают элементы <video> и <audio>. После этого расширение перезагружает видео с атрибутом crossorigin с той же секунды и подключает его к обработке. Так работают встроенные плееры VK Видео на других сайтах.
Плееры-веб-компоненты прячут <video> внутри Shadow DOM, туда не доходят события страницы. Расширение находит такие плееры, в том числе в закрытом Shadow DOM, раз в 2 секунды и при запуске видео.
Видео с защитой DRM браузер отдаёт расширениям тишиной. В браузерах на Chromium для таких случаев есть захват звука всей вкладки через tabCapture. Пока захват включён, вкладка звучит только через расширение: звук идёт в отдельный документ расширения, проходит ту же цепочку и выходит в колонки. Firefox захват вкладки не поддерживает.
| Что играет | Chromium (Chrome, Edge, Яндекс, Opera, Brave) | Firefox |
|---|---|---|
| YouTube, плееры на HLS и DASH | да | да |
| Файлы с CDN на другом домене, встроенные плееры VK Видео | да | да |
| Плееры в Shadow DOM | да | да |
| Видео с защитой DRM (Netflix, платные онлайн-кинотеатры) | через захват вкладки | нет |
Звук без <video> и <audio> (браузерные игры, сайты со своей обработкой Web Audio) |
через захват вкладки | нет |
| Звонки и голосовые чаты (Google Meet, Discord) | расширение их пропускает | расширение их пропускает |
| Служебные страницы браузера и магазины расширений | нет | нет |
В таблице сказано, как расширение устроено. Что я проверил своими руками и тестами:
| Что | Где проверено |
|---|---|
| YouTube | Edge 155 в автотесте, Firefox вручную (последняя версия на октябрь 2026) |
| Встроенный плеер VK Видео | Firefox вручную, версия расширения 1.1.0 |
| Тестовая страница: диалог и экшен, видео с чужого сервера с CORS и без, плеер в закрытом Shadow DOM | Edge 155 и Firefox 157, автотесты |
| Захват вкладки на видео с шифрованием ClearKey из примеров dash.js | Edge 155, автотест |
| Netflix, Кинопоиск, онлайн-кинотеатры с Widevine | не проверял |
| Яндекс Браузер, Opera, Brave, Chrome | не проверял отдельно, у них тот же движок Chromium, что у Edge |
ClearKey использует тот же механизм EME, что и защита Netflix, но с открытым ключом.
Если звук на сайте пропал, выключите расширение для этого сайта переключателем «На этом сайте», перезагрузите страницу и откройте issue с адресом страницы.
Работает ли на Netflix или Кинопоиске? В браузерах на Chromium должно работать через захват вкладки: откройте окно расширения во время просмотра, захват включится сам. На этих сервисах я его не проверял. В Firefox нет. Там подойдёт обработка звука на уровне системы: в Windows это «Тонкомпенсация» в свойствах динамиков или Equalizer APO с компрессором.
Работает ли на телефоне? Манифест поддерживает Firefox для Android 142 и новее. На телефоне я расширение не проверял.
Отстаёт ли звук от картинки? Обработка Web Audio добавляет задержку вывода звука, при захвате вкладки задержка больше. Я её не замерял, на тестовых видео рассинхрон на слух не заметен.
Зачем доступ ко всем сайтам? Видео бывает на любом сайте и во встроенных плеерах с других доменов. Расширение читает на странице только элементы <video> и <audio>, а правила заголовков CORS нужны для серверов, с которых плееры грузят видео.
Расширение не собирает данные и само не делает сетевых запросов. Настройки хранятся в storage.sync браузера, правила заголовков CORS живут до закрытия браузера. Захваченный звук вкладки обрабатывается и сразу выводится в колонки, расширение его не записывает. Подробнее в PRIVACY.md.
| Разрешение | Зачем |
|---|---|
storage |
Хранит громкость, режим и список выключенных сайтов |
activeTab |
Окно расширения узнаёт адрес открытой вкладки для переключателя «На этом сайте» |
Доступ ко всем сайтам (<all_urls>) |
Скрипт подключает к обработке элементы <video> и <audio> на любом сайте и во встроенных плеерах |
declarativeNetRequestWithHostAccess |
Добавляет заголовки CORS к ответам сервера с видео, чтобы браузер дал обработать его звук |
tabCapture, offscreen (только Chromium) |
Захват звука вкладки для видео с DRM и сайтов, к плеерам которых нельзя подключиться напрямую |
Расширение бесплатное, без рекламы и платных функций. Если оно вам пригодилось:
- Поставьте звезду репозиторию, по звёздам его находят другие.
- Задонатьте на Boosty, там принимают карты «Мир» и СБП. Другие способы, включая USDT, в DONATE.md.
- Напишите в issue, на каком сайте расширение не подключилось.
Тестовый стенд test/harness.html прогоняет синтетический «фильм» через цепочку в OfflineAudioContext: 12 с тихого диалога, 12 с громкого экшена со взрывами, 12 с диалога. Громкость в таблице это медиана среднеквадратичного уровня по окнам 400 мс, в дБ от полной шкалы, при громкости 100%.
| Режим | Диалог | Экшен | Разница | Пик |
|---|---|---|---|---|
| Без расширения | −40,9 | −24,8 | 16,1 дБ | +0,7 дБ |
| Выкл | −41,1 | −24,8 | 16,2 дБ | −1,4 дБ |
| Мягко | −33,9 | −23,5 | 10,4 дБ | −1,2 дБ |
| Авто | −25,2 | −21,4 | 3,8 дБ | −1,2 дБ |
| Ночь | −22,8 | −19,8 | 3,0 дБ | −2,7 дБ |
Сквозные тесты ставят расширение в браузер и проигрывают тот же файл. Я запускал их на Windows 10 в Edge 155 (test/e2e.mjs, test/e2e-capture.mjs) и Firefox 157 (test/e2e-firefox.mjs). Тесты проверяют подъём тихого диалога и снижение громкого экшена. Видео с чужого сервера с CORS и без него должно подключиться, продолжить играть с той же секунды, и уровень звука на входе обработки должен быть выше −50 LUFS. Плеер в закрытом Shadow DOM тоже должен подключиться. Ещё тесты переключают сайт и тонкую настройку из окна расширения и включают и выключают захват вкладки. Захват вкладки я дополнительно проверил на видео с шифрованием ClearKey из примеров dash.js. На YouTube в Edge 155 расширение подключилось к видео и снизило громкий ролик на 4 дБ.
npm install
node test/make-movie.mjs # тестовый файл test/movie.wav
node test/e2e.mjs msedge # или chrome, chromium
node test/e2e-capture.mjs msedge
npm run lint && node test/e2e-firefox.mjs
npm run serve # стенд: http://127.0.0.1:8765/test/harness.htmlnpm run lint # сборка build/chromium и build/firefox, проверка Firefox-версии через web-ext
npm run build # архивы dist/steady-volume-<версия>-chromium.zip и -firefox.zipsrc/manifest.json написан для Chromium. Скрипт scripts/build.mjs делает из него версию для Firefox: фоновый скрипт без service worker, без tabCapture, offscreen и сочетания клавиш. При публикации тега v* GitHub Actions собирает архивы и прикладывает их к релизу. Если в секретах репозитория есть ключи API addons.mozilla.org, тот же процесс отправляет новую версию в каталог Firefox. Порядок публикации в магазинах описан в docs/publishing.md.
Код расширения написал Claude от Anthropic по моей постановке задачи.
MIT, текст в LICENSE.
Откройте issue и укажите адрес страницы, браузер с версией и текст из нижней части окна расширения во время воспроизведения.
