W3C - Первый публичный рабочий проект: аудиосессия
Меню

W3C — Первый публичный рабочий проект: аудиосессия

Опубликовано: 9 ноября, 2024 Обновлено: 9 ноября, 2024 Новости IT

Новости W3C

Сегодня 7 ноября рабочая группа по медиа опубликовала первый публичный рабочий проект аудиосессии. Этот API определяет API-поверхность для управления тем, как аудио рендерится и взаимодействует с другими приложениями для воспроизведения аудио, что позволяет улучшить микширование аудио или эксклюзивное воспроизведение в зависимости от контекста, чтобы обеспечить более согласованный и интегрированный медиаопыт на всех устройствах.

W3C


Описание

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

Кроме того, некоторые платформы автоматически управляют аудиосеансом сайта на основе воспроизведения медиа и API, используемых для воспроизведения аудио. Однако такое поведение не всегда может соответствовать ожиданиям пользователей. Этот API позволяет разработчикам переопределять поведение по умолчанию и получать больше контроля над аудиосеансом.


Примеры

Сайт заранее устанавливает тип аудиосеанса на "воспроизведение и запись":

 
navigator.audioSession.type = 'play-and-record';
// С этого момента громкость может быть установлена ​​на основе 'play-and-record'.
...
// Начать воспроизведение удаленного медиа
remoteVideo.srcObject = remoteMediaStream;
remoteVideo.play();
// Start capturing
navigator.mediaDevices
.getUserMedia({ audio: true, video: true })
.then((stream) => {
localVideo.srcObject = stream;
});

Сайт реагирует на прерывание:

navigator.audioSession.type = 'play-and-record';
// С этого момента громкость может быть установлена ​​на основе 'play-and-record'.
...
// Начать воспроизведение удаленного медиа
remoteVideo.srcObject = remoteMediaStream;
remoteVideo.play();
// Начать захват
navigator.mediaDevices
.getUserMedia({ audio: true, video: true })
.then((stream) => {
localVideo.srcObject = stream;
});

navigator.audioSession.onstatechange = async () => {
if (navigator.audioSession.state === "interrupted") {
localVideo.pause();
remoteVideo.pause();
// Дать понять пользователю, что вызов прерван.
showInterruptedBanner();
for (const track of localVideo.srcObject.getTracks()) {
track.enabled = false;
}
} else {
// Позвольте пользователю решить, когда перезапустить вызов.
const shouldRestart = await showOptionalRestartBanner();
if (!shouldRestart) {
return;
}
for (const track of localVideo.srcObject.getTracks()) {
track.enabled = true;
}
localVideo.play();
remoteVideo.play();
}
};

 

Поделиться ссылкой

Похожие статьи