Прежде всего, позвольте мне начать с того, что даже если вы получите многоканальную (3+ канала) запись ввода, работающую с JS в браузере, я был бы удивлен, увидев, что она работает хорошо, по крайней мере, с очень большой задержкой. При этом всегда стоит идти и учиться в процессе.
Если вы проверите исходный код для Chromium (Chrome построен поверх), файл audio_input_controller.cc сообщает:
Line 31 >> const int kMaxInputChannels = 3;
Что говорит о том, что если вы хотите перейти выше 3 каналов, я не думаю, что это возможно. Предполагается, что Chrome больше не опирался на это и добавил больше поддержки ввода канала, однако я пока не видел ничего, что поддерживало бы более высокий уровень, чем вход стереоканала непосредственно через Chrome. Это было в папке GitHub без какой-либо конкретной ОС, поэтому я предполагаю, что он используется на всех настольных платформах.
Как указано в MediaDevices.getUserMedia () документах :
Предпочтение media.getusermedia.channels позволяет вам контролировать
максимальное количество каналов для захвата; значение 0, по умолчанию,
говорит getUserMedia () для захвата всех доступных, поддерживаемых,
каналы.
Таким образом, чтобы проверить максимальное количество фактически поддерживаемых входных каналов, я бы установил для этого параметра значение 0 и посмотрел, сколько буферов аудио фактически возвращено - таким образом, вы точно будете знать ограничение канала вашей системы.
Краткое описание
Я не уверен, какова цель вашего приложения, но с точки зрения многоканального ввода через браузер нет другой альтернативы, кроме как ждать, пока сам браузер поддерживает многоканальный ввод. Как вы сказали, ваш DAW может получить доступ к более чем 3-канальному входу, потому что это скомпилированная часть программного обеспечения, работающая отдельно от браузера и имеющая доступ ко всей информации системного уровня (т. Е. Оборудованию вашей звуковой карты и всей связи).
Рекомендация
Я не уверен в вашем уровне опыта программирования, но для такого рода вещей вы обычно используете C ++ (или другой язык, но C ++ обычно подходит для аудио), чтобы создать приложение, отдельное для вашего браузера, и запустить это на вашем ПК. Чтобы получить многоканальный аудиовход в C ++, вы должны использовать такую структуру, как JUCE или portaudio .
Вы можете создать процесс, который будет отправлять аудио с вашего рабочего стола на веб-страницу локально, если вы решили использовать JS в веб-браузере. Это может быть сделано в C ++ или если вы новичок в этом, может быть, Python с PyAudio будет проще начать.
Кроме того, если вы знакомы / не знакомы с Electron.js, , вы также можете создать скомпилированное приложение (например, .exe на windows), которое будет иметь доступ ко всем аудио каналы, поскольку он не работает в браузере, а просто использует браузер для интерпретации JavaScript. Я нашел эту привязку для portaudio для использования в Electron.js, который должен поддерживать многоканальный ввод. Таким образом, вы можете написать настольное приложение, используя только JavaScript / HTML / CSS и иметь многоканальный аудиовход!