Spec-Zone.ru › Web APIs

API сеанса медиа

Ограниченное использование

Эта функция не относится к Baseline, так как она не работает в некоторых из самых широко используемых браузеров.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

API сеанса медиа предоставляет способ настройки уведомлений о медиа. Он делает это, предоставляя метаданные для отображения пользователем для медиа, которые воспроизводятся вашим веб-приложением.

Он также предоставляет обработчики действий, которые браузер может использовать для доступа к платным медиа-кнопкам, таким как аппаратные кнопки, найденные на клавиатурах, гарнитурах, пультах дистанционного управления, и программные кнопки, найденные в областях уведомлений и на экранах блокировки мобильных устройств. Таким образом, вы можете беспрепятственно управлять медиа, предоставляемыми веб-страницей, через ваше устройство, даже не смотря на веб-страницу.

Цель состоит в том, чтобы пользователи могли знать, что воспроизводится, и управлять этим, не открывая конкретную страницу, которая его запустила. Для поддержки API сеанса медиа браузеру сначала нужен механизм для доступа и управления средствами управления медиа на уровне ОС (например, MediaControl в Firefox).

Концепции и использование сеанса медиа

Интерфейс MediaMetadata позволяет веб-сайту предоставлять богатые метаданные пользовательскому интерфейсу платформы для воспроизводимых медиа. Эти метаданные включают заголовок, имя исполнителя (создателя), название альбома (коллекции), обложку и информацию о главе. Платформа может отображать эти метаданные в центрах медиа, уведомлениях, на экранах блокировки устройств и так далее. Например, разные устройства могут представлять данные API сеанса медиа следующим образом:

Media Session data for the Sintel trailer title and artwork presented on a desktop browser, mobile phone, and smartwatch

Исходный источник изображения: Настройка уведомлений и элементов управления воспроизведением медиа с помощью API сеанса медиа на web.dev (2024)

Интерфейс MediaSession позволяет пользователям управлять воспроизведением медиа через элементы пользовательского интерфейса, определенные пользователем агента. Взаимодействие с этими элементами запускает обработчики действий на веб-странице, воспроизводящей медиа. Так как несколько страниц могут одновременно использовать этот API, пользовательский агент отвечает за вызов обработчиков действий соответствующей страницы. Пользовательский агент предоставляет стандартное поведение, когда страница не определяет собственного.

Доступ к API сеанса медиа

Основным интерфейсом для API сеанса медиа является интерфейс MediaSession. Вместо создания собственного экземпляра MediaSession, вы получаете доступ к API с помощью свойства navigator.mediaSession. Например, чтобы установить текущее состояние сеанса медиа на playing,

navigator.mediaSession.playbackState = "playing";

Интерфейсы

ChapterInformation

Представляет метаданные для отдельной главы медиаресурса (например, видео- или аудиофайла).

MediaMetadata

Позволяет веб-странице предоставлять богатые метаданные о медиа для отображения в пользовательском интерфейсе платформы.

MediaSession

Позволяет веб-странице предоставлять настраиваемые действия для стандартных взаимодействий с воспроизведением медиа.

Примеры

Настройка обработчиков действий для музыкального плеера

Следующий пример демонстрирует обнаружение функции API сеанса медиа. Затем он создаёт объект метаданных для сеанса и добавляет обработчики действий для действий управления пользователем:

if ("mediaSession" in navigator) {
  navigator.mediaSession.metadata = new MediaMetadata({
    title: "Unforgettable",
    artist: "Nat King Cole",
    album: "The Ultimate Collection (Remastered)",
    artwork: [
      {
        src: "https://dummyimage.com/96x96",
        sizes: "96x96",
        type: "image/png",
      },
      {
        src: "https://dummyimage.com/128x128",
        sizes: "128x128",
        type: "image/png",
      },
      {
        src: "https://dummyimage.com/192x192",
        sizes: "192x192",
        type: "image/png",
      },
      {
        src: "https://dummyimage.com/256x256",
        sizes: "256x256",
        type: "image/png",
      },
      {
        src: "https://dummyimage.com/384x384",
        sizes: "384x384",
        type: "image/png",
      },
      {
        src: "https://dummyimage.com/512x512",
        sizes: "512x512",
        type: "image/png",
      },
    ],
  });

  navigator.mediaSession.setActionHandler("play", () => {
    /* Code excerpted. */
  });
  navigator.mediaSession.setActionHandler("pause", () => {
    /* Code excerpted. */
  });
  navigator.mediaSession.setActionHandler("stop", () => {
    /* Code excerpted. */
  });
  navigator.mediaSession.setActionHandler("seekbackward", () => {
    /* Code excerpted. */
  });
  navigator.mediaSession.setActionHandler("seekforward", () => {
    /* Code excerpted. */
  });
  navigator.mediaSession.setActionHandler("seekto", () => {
    /* Code excerpted. */
  });
  navigator.mediaSession.setActionHandler("previoustrack", () => {
    /* Code excerpted. */
  });
  navigator.mediaSession.setActionHandler("nexttrack", () => {
    /* Code excerpted. */
  });
  navigator.mediaSession.setActionHandler("skipad", () => {
    /* Code excerpted. */
  });
  navigator.mediaSession.setActionHandler("togglecamera", () => {
    /* Code excerpted. */
  });
  navigator.mediaSession.setActionHandler("togglemicrophone", () => {
    /* Code excerpted. */
  });
  navigator.mediaSession.setActionHandler("hangup", () => {
    /* Code excerpted. */
  });
}

Некоторые пользовательские агенты отключают автоматическое воспроизведение для медиа-элементов на мобильных устройствах и требуют пользовательского жеста для запуска медиа. Следующий пример добавляет событие pointerup к кнопке воспроизведения на странице, которая затем используется для запуска кода сеанса медиа:

playButton.addEventListener("pointerup", (event) => {
  const audio = document.querySelector("audio");

  // User interacted with the page. Let's play audio!
  audio
    .play()
    .then(() => {
      /* Set up media session controls, as shown above. */
    })
    .catch((error) => {
      console.error(error);
    });
});

Использование обработчиков действий для управления презентацией слайдов

Обработчики действий "previousslide" и "nextslide" могут использоваться для обработки перехода вперед и назад по презентации слайдов, например, когда пользователь вводит презентацию в окно «картинка в картинке» и нажимает кнопки браузера для перемещения по слайдам.

try {
  navigator.mediaSession.setActionHandler("previousslide", () => {
    log('> User clicked "Previous Slide" icon.');
    if (slideNumber > 1) slideNumber--;
    updateSlide();
  });
} catch (error) {
  log('Warning! The "previousslide" media session action is not supported.');
}

try {
  navigator.mediaSession.setActionHandler("nextslide", () => {
    log('> User clicked "Next Slide" icon.');
    slideNumber++;
    updateSlide();
  });
} catch (error) {
  log('Warning! The "nextslide" media session action is not supported.');
}

См. Пример презентации слайдов/сеанса медиа для рабочего примера.

Спецификации

Спецификация
Сеанс медиа
# the-mediasession-interface

Совместимость с браузерами

Рабочий стол Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
Media_Session_API 73 79 82 60 15 57
82Firefox предоставляет API, но не предоставляет соответствующий пользовательский интерфейс управления медиа.
43 15 7.0 Нет
metadata 73 79 82 60 15 57
82Firefox предоставляет API, но не предоставляет соответствующий пользовательский интерфейс управления медиа.
43 15 7.0 Нет
playbackState 73 79 82 60 15 57
82Firefox предоставляет API, но не предоставляет соответствующий пользовательский интерфейс управления медиа.
43 15 7.0 Нет
setActionHandler 73 79 82 60 15 57
82Firefox предоставляет API, но не предоставляет соответствующий пользовательский интерфейс управления медиа.
43 15 7.0 Нет
setCameraActive 93 93 Нет 79 Нет 93 Нет 66 Нет 17.0 Нет
setMicrophoneActive 93 93 Нет 79 Нет 93 Нет 66 Нет 17.0 Нет
setPositionState 81 81 82 68 15 57
82Firefox предоставляет API, но не предоставляет соответствующий пользовательский интерфейс управления медиа.
43 15 7.0 Нет

См. также

  • Настройка уведомлений и элементов управления воспроизведением медиа с помощью API сеанса медиа на web.dev (2024)

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Media_Session_API

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API