Я хочу отправить аудиосигнал, исходящий из моего аудиоинтерфейса (focusrite saffire), на мой сервер nodejs. Как мне это сделать? Самый простой способ - получить доступ к аудиоинтерфейсу из браузера (html5), например, захватить вывод микрофона с помощью getUserMedia (https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia), но не смог найти способ получить доступ к моему аудиоинтерфейсу через эту библиотеку. В противном случае я планирую создать настольное приложение, но не знаю, есть ли функция / библиотека, позволяющая получить доступ к моему аудиоинтерфейсу, подключенному к USB.
@ScottStensland Спасибо за ответ, ОС будет Linux. Итак, после изменения входного аудиоустройства по умолчанию на мой аудиоинтерфейс в ОС, я мог бы использовать его для входа в getUserMedia в браузере? Если это так, я сообщу, как только получу свой аудиоинтерфейс.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вероятно, это не имеет ничего общего с Javascript или MediaDevices API. В Linux при использовании Firefox PulseAudio требуется для взаимодействия с вашим аудиооборудованием. Поскольку ваша звуковая карта является интерфейсом ввода / вывода, вы сможете довольно легко протестировать ее, просто проиграв любой звуковой файл в браузере.
Большая часть Конфигурация PulseAudio может быть достигнута с помощью графического интерфейса pavucontrol. Вы должны проверить вкладку «Конфигурация» и обе вкладки «Устройство ввода» и «Устройство вывода», чтобы убедиться, что ваш Focusrite правильно настроен и используется в качестве ввода / вывода звука.
Как только это будет сделано, вы сможете получить доступ к аудиопотоку, используя следующее (доступно только в «защищенном контексте», то есть localhost или обслуживается через HTTPS, как указано на упомянутой вами странице MDN):
navigator.mediaDevices.getUserMedia({ audio: true })
.then(function(stream) {
// do whatever you want with this audio stream
})(фрагмент кода взят из Страница MDN о MediaDevices)
Отправка аудио на сервер - это совсем другая история. Вы что-нибудь пробовали? Вам нужна связь с сервером в реальном времени? Если это так, я бы начал с просмотра WebSockets API. Документацию по WebRTC тоже стоит прочитать, но она больше ориентирована на взаимодействие между клиентом.
Используйте медиаустройство ограничивает для передачи точного идентификатора устройства.
Образец будет
const preferedDeviceName = '<your_device_name>'
const deviceList = await navigator.mediaDevices.enumerateDevices()
const audio = devices.find((device) => device.kind === 'audioinput' && device.label === preferedDeviceName)
const {deviceId} = audio;
navigator.mediaDevices.getUserMedia({audio: { deviceId }}
Возможный дубликат это
Все еще не ясно, следуйте это
какая у тебя ОС? если в Linux есть несколько инструментов для просмотра и изменения аудиоустройства ввода по умолчанию