- Вопрос или проблема
- Обновление
- Больше не надежный ответ
- Firefox:
- Chrome:
- Ответ или решение
- Как записывать веб-браузеры, когда окно не в фокусе
- 1. Изменение настроек браузера
- Firefox
- Chrome
- Microsoft Edge
- 2. Использование стороннего программного обеспечения
- 3. OBS и браузерные источники
- 4. Дополнительные рекомендации
- Заключение
Вопрос или проблема
Я на Windows 10 и использую OBS для записи окна веб-браузеров. Я записываю онлайн-занятия для последующего использования, часто мне нужно переключать окна или рабочие столы, и когда окно веб-браузера не в фокусе, через 10 секунд в Firefox и немедленно в браузерах на базе Chromium экран веб-браузера зависает (Firefox) или становится черным (Chromium), чтобы экономить ресурсы рендеринга и т. д. Я попробовал много различных способов, чтобы это остановить:
- Изменение стилей Windows, таких как прозрачность и всегда на переднем плане. Смотрите: стили окон и расширенные стили окон
- Установка расширения браузера для изменения объектов документа, например:
document.visibilityState="visible"; document.hidden = false
, чтобы обмануть вкладку, заставив ее думать, что она все еще видима. Смотрите: всегда видимый и всегда активное окно - Попробовать разные программы записи.
- Попробовать разные основные веб-браузеры (Chrome, Firefox, Edge, Opera, Brave).
- Включить аппаратное ускорение.
- Изменить параметры экономии памяти в настройках или в about:config или chrome:flags и связанных расширениях. Смотрите: великое приостановление
Я думаю, что первым это поведение принял Chrome, поэтому я перестал его использовать и перешел на Firefox, затем Firefox принял это, и я перешел на Edge, но обновленный браузер Edge (который основан на Chromium) также это делает. Я также попробовал Opera и Brave.
Другая идея заключалась в записи класса внутри OBS (функция источника браузера), но на большинстве онлайн-сессий мое присутствие ограничивается одной вкладкой/браузером, поэтому я не могу открыть вкладку браузера с браузером OBS для записи сессии. Мне нужно быть активным в браузере, отвечать на занятия и т. д. И я хочу иметь возможность записывать экран и свободно перемещаться между рабочими столами и окнами. Как видите, я не могу записать браузер внутри виртуальной машины, так как мне возможно придется делиться рабочим столом хоста с классом. Установка таких программ, как VS Code и т. д. в виртуальную машину и синхронизация файлов между ними будет слишком хлопотным процессом.
Похожая проблема обсуждалась здесь на форумах OBS: Проблема с захватом окна, когда окно не в фокусе
Обновление
Как указал @Shayan, в последних версиях Chromium этот флаг скрыт. И по умолчанию видео замораживается, если вы переключите фокус вкладок.
Чтобы показать флаг, пока они не уберут его полностью, вы можете включить флаг chrome://flags/#temporary-unexpire-flags-m130
. Но, как и следует из названия, это временно, и флаг обречен, его могут удалить навсегда в любое время, вероятно, в версии 133
, если я правильно понимаю их политику истечения.
Также есть это приложение, которое может работать для других браузеров или окон, у которых нет такой функции/флага: WindowTop, которое пытается установить окно на передний план, включая режим сжатия/прозрачности. Есть проблема, обсуждающая обход для обмана браузеров, но не знаю, насколько хорошо это работает и с какими браузерами.
Больше не надежный ответ
В Chrome есть этот флаг: chrome://flags/#calculate-native-win-occlusion
, который выгружает активную вкладку, если окно не на переднем плане. Вы можете попробовать отключить его. Затем перезапустите браузер, иначе это не подействует.
Я протестировал с последним Chrome как захват окна в последнем OBS и:
- до отключения он замораживал веб-страницы при минимизации, например, при воспроизведении видео на них, не было черного экрана, как вы сообщили
- после отключения уже не замораживал
Firefox:
Перейдите на about:config и поищите browser.tabs.unloadOnLowMemory. Установите значение в false.
Chrome:
Откройте Настройки и используйте строку поиска для поиска “Экономия памяти” (в некоторых клонах Chrome это может быть “Сон вкладок” и т. д.). Выключите эту функцию.
Что касается Microsoft Edge, вам следует искать “Включить режим экономии” и “Сохранить ресурсы с неактивными вкладками” (выключите их).
П.С.: Также убедитесь, что у вас нет никаких сторонних расширений для выгрузки неактивных вкладок.
Я подозреваю, что отключение настройки widget.pause-compositor-when-minimized
может это исправить. (Это не относится к “экономии памяти”, а к “экономии энергии” – довольно распространено, что программы перестают рендерить, когда окно невидимо, особенно сейчас, когда веб-браузеры используют рендеринг GPU, как это делают игры; и, вероятно, Firefox не может знать, что его окно записывается.)
Ответ или решение
Как записывать веб-браузеры, когда окно не в фокусе
Запись веб-браузеров с использованием программного обеспечения, такого как OBS (Open Broadcaster Software), может быть сложностью, особенно когда необходимо переключаться между окнами или рабочими столами во время сессий. На системах Windows 10 многие браузеры, такие как Chrome и Firefox, могут замораживать содержимое вкладок или показывать черный экран, если окно не активно. Эта проблема возникает из-за соображений экономии ресурсов. В данном ответе рассматриваются различные решения для эффективной записи браузеров даже при потере фокуса.
1. Изменение настроек браузера
Firefox
Для Firefox можно внести изменения в конфигурацию, чтобы предотвратить выгрузку вкладок:
- Откройте
about:config
. - Найдите параметр
browser.tabs.unloadOnLowMemory
и установите его значение наfalse
.
Chrome
Для браузеров на базе Chromium проверьте настройки, касающиеся экономии ресурсов и спящего режима:
- Откройте настройки и используйте строку поиска, чтобы найти "Memory Saver" или "Tab Sleep" и отключите эти функции.
- Чтобы протестировать отключение флага, перейдите по адресу
chrome://flags/#calculate-native-win-occlusion
и отключите его. Обязательно перезапустите браузер для применения изменений.
Microsoft Edge
Аналогично, в Edge отключите функции:
- "Turn on efficiency mode" (включение режимы эффективности).
- "Save resources with sleeping tabs" (сохранение ресурсов при спящих вкладках).
2. Использование стороннего программного обеспечения
Если изменения в настройках браузера не дали должного эффекта, можно рассмотреть использование сторонних приложений, таких как WindowTop. Это приложение может помочь удерживать окно браузера на переднем плане, даже если оно не активно, что может снизить вероятность заморозки содержимого.
3. OBS и браузерные источники
Вы также можете рассмотреть возможность использования browser source в OBS. Однако, как вы упомянули, это может оказаться неприменимым в ситуациях, когда вам нужно взаимодействовать с классом. В этом случае запишите окно браузера с использованием функции Window Capture и одновременно минимизируйте переключение между вкладками.
4. Дополнительные рекомендации
- Обратите внимание на расширения, которые могут отключать функции автозагрузки неактивных вкладок или если вы используете сторонние расширения для управления памятью.
- Возможно, стоит проверить наличие обновлений для вашего браузера, так как производители часто выпускают патчи для устранения подобных проблем.
Заключение
Решение проблемы записи веб-браузеров, когда окно не активно, требует комплексного подхода. Начните с изменения настроек конфигурации в используемых браузерах, попробуйте сторонние приложения для управления окнами и максимизируйте функциональность OBS. Надеюсь, данные рекомендации помогут вам успешно записывать ваши онлайн-сессии без прерываний и фризов.