AudioContext: свойство sinkId
Экспериментально: Это экспериментальная технология
Тщательно проверьте таблицу совместимости браузеров перед использованием в продакшене.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Свойство sinkId только для чтения интерфейса AudioContext возвращает идентификатор источника текущего аудиоустройства вывода.
Значение
Это свойство возвращает одно из следующих значений в зависимости от того, как был задан идентификатор источника:
- Пустая строка
-
Если идентификатор источника явно не задан, будет использоваться стандартное системное устройство аудиовывода, и
sinkIdвернет пустую строку. - Строка
-
Если идентификатор источника задан как строковое значение (с помощью
setSinkId()или опцией конструктораsinkIdAudioContext()),sinkIdвернёт это же строковое значение. - Объект
AudioSinkInfo -
Если идентификатор источника задан как объект опций (с помощью
setSinkId()или опцией конструктораsinkIdAudioContext()),sinkIdвернет объектAudioSinkInfo, отражающий те же значения, что были установлены в начальном объекте опций.
Примеры
В нашем примере тестирования SetSinkId мы создаем аудиограф, который генерирует трехсекундный импульс белого шума через AudioBufferSourceNode, который мы также пропускаем через GainNode, чтобы немного его приглушить. Мы также предоставляем пользователю выпадающее меню, чтобы позволить им изменить устройство аудиовывода.
Когда нажимается кнопка воспроизведения, мы собираем аудиограф и запускаем его, а также выводим информацию о текущем устройстве в консоль на основе значения sinkId:
- Пустая строка означает, что по-прежнему используется устройство по умолчанию.
- Если значение является объектом, аудио не будет воспроизводиться ни на каком устройстве, потому что мы установили объект опций, содержащий
type: 'none'. - В противном случае значение будет строкой идентификатора источника, поэтому мы выведем её.
playBtn.addEventListener("click", () => {
const source = audioCtx.createBufferSource();
source.buffer = myArrayBuffer;
source.connect(gain);
gain.connect(audioCtx.destination);
source.start();
if (audioCtx.sinkId === "") {
console.log("Audio playing on default device");
} else if (
typeof audioCtx.sinkId === "object" &&
audioCtx.sinkId.type === "none"
) {
console.log("Audio not playing on any device");
} else {
console.log(`Audio playing on device ${audioCtx.sinkId}`);
}
});
Спецификации
| Спецификация |
|---|
| Web Audio API # dom-audiocontext-sinkid |
Совместимость браузеров
| Рабочий стол | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
sinkId |
110 | 110 | Нет | 96 | Нет | 110 | Нет | 74 | Нет | 21.0 | 110 |
См. также
© 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/AudioContext/sinkId