Spec-Zone.ru › Web APIs

AudioContext: свойство sinkId

Экспериментально: Это экспериментальная технология
Тщательно проверьте
таблицу совместимости браузеров перед использованием в продакшене.

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.

Свойство sinkId только для чтения интерфейса AudioContext возвращает идентификатор источника текущего аудиоустройства вывода.

Значение

Это свойство возвращает одно из следующих значений в зависимости от того, как был задан идентификатор источника:

Пустая строка

Если идентификатор источника явно не задан, будет использоваться стандартное системное устройство аудиовывода, и sinkId вернет пустую строку.

Строка

Если идентификатор источника задан как строковое значение (с помощью setSinkId() или опцией конструктора sinkId AudioContext()), sinkId вернёт это же строковое значение.

Объект AudioSinkInfo

Если идентификатор источника задан как объект опций (с помощью setSinkId() или опцией конструктора sinkId AudioContext()), 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

См. также

  • Пример тестирования SetSinkId
  • Изменение устройства вывода аудио в Web Audio
  • AudioContext.setSinkId()
  • sinkchange

© 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

Spec-Zone.ru

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