Автоматический переход в режим «картинка в картинке» при воспроизведении мультимедиа

Франсуа Бофор
François Beaufort

Опубликовано: 5 февраля 2025 г.

Начиная с Chrome 120, веб-приложения для видеоконференций могут автоматически открывать окно «картинка в картинке», когда пользователь переключает фокус с текущей вкладки. Это полезно для докладчиков, которые хотят видеть участников и взаимодействовать с ними в режиме реального времени во время представления документа или использования других вкладок или окон. Подробности см. в разделе Автоматическая картинка в картинке для веб-приложений для видеоконференций .

В Chrome 134 веб-приложения, воспроизводящие аудио или видео, могут автоматически переходить в режим «картинка в картинке». Это означает, что музыкальные и видеоплееры в Интернете теперь могут плавно переключаться в окно мини-плеера, когда пользователь переключает вкладки, что устраняет необходимость ручной активации.

Окно «картинка в картинке» открывается и закрывается автоматически, когда пользователь Spotify переключает вкладки.

Для поддержки этих вариантов использования воспроизведения мультимедиа настольные веб-приложения Chrome 134 могут автоматически переходить в режим «картинка в картинке» с некоторыми ограничениями, чтобы обеспечить положительный пользовательский опыт. Веб-приложение имеет право на автоматическое воспроизведение мультимедиа «картинка в картинке» только в том случае, если оно соответствует всем следующим условиям:

  • URL-адрес верхнего фрейма безопасен согласно службе безопасного просмотра.

  • СМИ живут в верхнем кадре.

  • СМИ было слышно в течение последних двух секунд.

  • СМИ имеют аудио-фокус.

  • СМИ играют.

  • Обработчик действия медиа-сеанса для действия "enterpictureinpicture" зарегистрирован.

  • Превышено пороговое значение индекса вовлеченности пользователя в мультимедиа , что указывает на то, что пользователь часто использует мультимедиа в этом веб-приложении. Это применимо, если в настройках браузера пользователя установлено значение «Может запрашивать ввод изображения в картинке». Если пользователь явно разрешает веб-приложению использовать режим «картинка в картинке», это условие не применяется.

Автоматическая настройка «картинка в картинке» на информационной панели сайта браузера Chrome.
Автоматическая настройка «картинка в картинке» на информационной панели сайта браузера Chrome.

Ошибка 386193409 отслеживает реализацию условий поверхности, чтобы упростить отладку и реализацию.

Обратите внимание: если другое окно «картинка в картинке» уже открыто, Chrome не запускает автоматическую картинку в картинке. Это правило не применяется, если существующее окно «картинка в картинке» было открыто автоматически и вот-вот закроется.

Когда веб-приложение соответствует требованиям, переключение фокуса на другую вкладку запускает функцию обратного вызова обработчика действий мультимедийного сеанса для действия "enterpictureinpicture" . Это позволяет веб-приложению открывать окно «картинка в картинке» без жестов пользователя. Затем пользователю может быть представлено диалоговое окно разрешения с вопросом, хотят ли они разрешить сайту автоматически вводить картинку в картинке каждый раз, только в этот раз или никогда.

Наложение разрешений в окне «картинка в картинке», спрашивающее пользователя, хотят ли они разрешить сайту автоматически вводить картинку в картинке.
Пользователя спросят, разрешен ли автоматический ввод «картинка в картинке».

Вы можете использовать API «Картинка в картинке» для <video>, чтобы открыть окно «картинка в картинке» из HTML-элемента <video> , или API «Картинка в картинке» для документа , чтобы открыть окно «всегда поверх» для заполнения произвольным HTML-содержимым. Окно «картинка в картинке» не фокусируется при открытии и автоматически закрывается, когда страница снова становится видимой.

В следующем примере показано, как воспроизводить элемент HTML <video> , когда пользователь нажимает кнопку. Затем безопасно зарегистрируйте обработчик действия мультимедийного сеанса для действия "enterpictureinpicture" с функцией обратного вызова, которая открывает окно «картинка в картинке». Это окно содержит видео с API «картинка в картинке» для <video>.

const video = document.querySelector("video");

async function onPlayButtonClick() {
  // Play video.
  await video.play();
}

try {
  // Request video to automatically enter picture-in-picture when eligible.
  navigator.mediaSession.setActionHandler("enterpictureinpicture", async () => {
    await video.requestPictureInPicture();
  });
} catch (error) {
  console.log("The enterpictureinpicture action is not yet supported.");
}

Попробуйте демо-версию проигрывателя VideoJS , в которой демонстрируется API Document Picture-in-Picture, или поиграйте с примерами сеансов Video Media и Audio Media Session .

Привлекайте и делитесь отзывами

Если у вас есть отзывы или вы столкнулись с какими-либо проблемами, вы можете поделиться ими на crbug.com .

Ресурсы

Благодарности

Спасибо Бенджамину Кину и Фрэнку Либерато за их обзоры.