SO user jib , который работает на Firefox и адаптере. js projects написали сообщение в блоге в 2017 году об этой точной функции.
Здесь вот как они применили ограничения к дорожке:
async function apply(c) {
await track.applyConstraints(Object.assign(track.getSettings(), c));
update();
}
c
- это объект с конкретными добавляемыми ограничениями.
Они делают это так, потому что все свойства, которые пропускается при передаче словаря MediaTrackConstraints , который будет сброшен до значений по умолчанию, когда применен .
Теперь, ваше решение должно работать и для заданных вами свойств.
Поэтому, используя эту скрипку, я попробовал несколько UA, установленных на моем компьютере с macOS:
Chrome
Как вы сообщали, настройки не применяются .
Вот проблема , отслеживающая предстоящую реализацию.
Из комментариев этого выпуска вы также можете найти обходной путь, который подразумевает запрос нового MediaStream из того же deviceId
как тот, который вы получили, и применяя т Он желал ограничений.
Вот вилка скрипки стрелы с таким обходным путем. Обратите внимание, что deviceId
получено из track.getSettings()
async function apply(c) {
track.stop(); // required
const new_constraints = Object.assign(track.getSettings(), c, );
const new_stream = await gUM({ audio: new_constraints });
updateSpectrum( audio.srcObject = new_stream );
track = new_stream.getAudioTracks()[0];
update();
}
Firefox
Работает без проблем.
Safari
Плохо падает. На моей машине работает оригинальная скрипка, только с настройка спектра полностью обработает sh гум всего браузера. - Текущий поток остановлен - Любая попытка получить новый поток завершается неудачей - до перезагрузки всего приложения.
Разветвленная скрипка, которую мы сделали для Chrome, по крайней мере, не обрабатывает sh, но это Кажется, что не производит никаких слышимых изменений ...