MediaStreamTrack: метод applyConstraints()
Базовая Широко поддерживается *
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2017 года.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Метод applyConstraints() интерфейса MediaStreamTrack применяет набор ограничений к треку. Эти ограничения позволяют веб-сайту или приложению установить идеальные значения и допустимые диапазоны значений для ограниченных свойств трека, таких как частота кадров, размеры, отмена эха и т. д.
Ограничения могут использоваться для обеспечения соответствия медиа определенным вашим предпочтениям. Например, вы можете предпочесть видео высокой плотности, но потребовать, чтобы частота кадров была немного низкой, чтобы поддерживать скорость передачи данных достаточно низкой, чтобы не перегружать сеть. Ограничения также могут указывать идеальные и/или допустимые размеры или диапазоны размеров. Подробнее о применении ваших предпочтительных ограничений см. Применение ограничений в разделе Возможности, ограничения и настройки.
Синтаксис
applyConstraints() applyConstraints(constraints)
Параметры
constraintsНеобязательно-
Объект
MediaTrackConstraints, перечисляющий ограничения, применяемые к ограниченным свойствам трека; все существующие ограничения заменяются новыми значениями, указанными в этом объекте, а любые ограниченные свойства, не включенные в него, восстанавливаются до своих значений по умолчанию. Если этот параметр опущен, все настроенные пользовательские ограничения сбрасываются. Этот объект представляет собой базовый набор ограничений, который должен применяться для разрешенияPromise. Объект может содержать расширенное свойство, содержащее массив дополнительныхMediaTrackConstraintsобъектов, которые обрабатываются как точные требования.
Возвращаемое значение
Объект Promise, который разрешается, когда ограничения успешно применены. Если ограничения не могут быть применены, промис отклоняется с помощью объекта OverconstrainedError, который является исключением DOMException с именем OverconstrainedError и дополнительными параметрами, указывающими, что ограничения не могут быть выполнены. Это может произойти, если указанные ограничения слишком строги, чтобы найти соответствие при попытке настроить трек.
Примеры
В следующем примере показано, как указать базовый и расширенный наборы ограничений. Указывается, что страница или веб-приложение нуждается в ширине от 640 до 1280 и высоте от 480 до 720, причем последнее число в каждой паре предпочтительнее. Расширенное свойство дополнительно указывает, что предпочтительный размер изображения составляет 1920 на 1280 или соотношение сторон 1,333, если это значение недоступно. Обратите внимание, что эти ограничения также иллюстрируют то, что спецификация называет стратегией понижения требований.
const constraints = {
width: { min: 640, ideal: 1280 },
height: { min: 480, ideal: 720 },
advanced: [{ width: 1920, height: 1280 }, { aspectRatio: 1.333 }],
};
navigator.mediaDevices.getUserMedia({ video: true }).then((mediaStream) => {
const track = mediaStream.getVideoTracks()[0];
track
.applyConstraints(constraints)
.then(() => {
// Do something with the track such as using the Image Capture API.
})
.catch((e) => {
// The constraints could not be satisfied by the available devices.
});
});
Спецификации
Совместимость браузеров
| Настольный | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
applyConstraints |
59 | 12 | 43 | 46 | 11 | 59 | 43 | 43 | 11 | 7.0 | 59 |
aspectRatio_constraint |
59 | ≤79 | Нет | 46 | 11 | 59 | 43 | 43 | 11 | 7.0 | 59 |
autoGainControl_constraint |
67 | ≤79 | 5546 | 54 | Нет | 67 | 5546 | 48 | Нет | 9.0 | 67 |
channelCount_constraint |
59 | ≤79 | Нет | 46 | 11 | 59 | Нет | 43 | 11 | 7.0 | 59 |
deviceId_constraint |
59 | ≤79 | 43До Firefox 69, Firefox поддерживал толькоdeviceId в ограничениях, передаваемых в getUserMedia(). |
46 | 11 | 59 | 43Firefox для Android поддерживает толькоdeviceId при использовании в ограничениях, передаваемых в getUserMedia(). |
43 | 11 | 7.0 | 59 |
displaySurface_constraint |
107 | 107 | Нет | 93 | 11.1 | 107 | Нет | 73 | 11.3 | 21.0 | 107 |
echoCancellation_constraint |
59 | ≤79 | 50 | 46 | 11 | 59 | 50 | 43 | 11 | 7.0 | 59 |
facingMode_constraint |
59 | ≤79 | 50 | 46 | 11 | 59 | 50 | 43 | 11 | 7.0 | 59 |
frameRate_constraint |
59 | ≤79 | 50 | 46 | 11 | 59 | 50 | 43 | 11 | 7.0 | 59 |
groupId_constraint |
59 | ≤79 | 70 | 46 | 11 | 59 | 79 | 43 | 11 | 7.0 | 59 |
height_constraint |
59 | ≤79 | 50 | 46 | 11 | 59 | 50 | 43 | 11 | 7.0 | 59 |
latency_constraint |
59 | ≤79 | 50 | 46 | 11 | 59 | 50 | 43 | 11 | 7.0 | 59 |
logicalSurface_constraint |
Нет | Нет | Нет | Нет | 11.1 | Нет | Нет | Нет | 11.3 | Нет | Нет |
noiseSuppression_constraint |
67 | ≤79 | 5546 | 54 | Нет | 67 | 5546 | 48 | Нет | 9.0 | 67 |
resizeMode_constraint |
72 | 79 | Нет | 60 | Нет | 72 | Нет | 51 | Нет | 11.0 | 72 |
sampleRate_constraint |
59 | ≤79 | Нет | 46 | 11 | 59 | Нет | 43 | 11 | 7.0 | 59 |
sampleSize_constraint |
59 | ≤79 | Нет | 46 | 11 | 59 | Нет | 43 | 11 | 7.0 | 59 |
suppressLocalAudioPlayback_constraint |
109 | 109 | Нет | 95 | Нет | 109 | Нет | 74 | Нет | 21.0 | 109 |
volume_constraint |
59 | ≤79 | Нет | 46 | 11 | 59 | Нет | 43 | 11 | 7.0 | 59 |
width_constraint |
59 | ≤79 | 50 | 46 | 11 | 59 | 50 | 43 | 11 | 7.0 | 59 |
См. также
© 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/MediaStreamTrack/applyConstraints