Ограничения WebRTC firefox
в настоящее время я использую WebRTC в своем личном развитии, все работает нормально. Я получаю поток с веб-камеры, но теперь я хочу использовать ограничения для getUserMedia()
.
var constraints = {
audio: false,
video: {
mandatory : {
minWidth: 1280,
minHeight: 720
}
}
};
когда я тестирую это в Firefox, кажется, что он игнорирует ограничения. Когда я тестировал на Chrome или Opera мои ограничения и мои качество хорошее, кто-нибудь знает почему? Проблема в Firefox?
Спасибо за советы
2 ответов
редактировать ссылка wiki кажется устаревшей, пожалуйста, обратитесь к ответ Кливера внизу.
кажется Firefox еще не реализовал ограничения.
ограничения были реализованы с Chrome 24 и Opera 18. Они могут использоваться для установки значений разрешения видео для вызовов getUserMedia() и RTCPeerConnection addStream ().
и от: https://wiki.mozilla.org/Media/getUserMedia
разрешение захвата [в Firefox] в настоящее время исправлено до 640x480 для видео;
он поддерживает только
минимальные поддерживаемые ограничения: (Примечание: все эти логические значения по умолчанию "false") видео: true / false аудио: true / false подделка: true / false изображение: true / false
в Firefox тут поддержка подмножество ограничений с getUserMedia()
, но не устаревший синтаксис, который используют Chrome и Opera. The mandatory
/ optional
синтаксис был устаревшим много лет назад, и minWidth
и minHeight
за год до этого.
спецификация MediaCapture
согласно спецификации, который теперь стабилен, ваш пример должен быть написан как это:
var constraints = {
audio: false,
video: {
width: { min: 1280 },
height: { min: 720 },
}
};
это работает в Firefox (и Chrome с адаптером.js):https://jsfiddle.net/34qxx5w1
в спецификации, ключевые слова min
, max
и exact
(a.к. a. min == max) по своей сути являются обязательными, тогда как простые значения и ideal
нет. Вот более полный пример:
var constraints = {
audio: false,
video: {
width: { min: 1024, ideal: 1280, max: 1920 },
height: { min: 576, ideal: 720, max: 1080 },
}
};
это работает в Firefox (и Chrome с адаптер.js polyfill в простых случаях).
An ideal
значение, при использовании, имеет гравитацию, что означает, что браузер попытается найти настройку (и камеру, если у вас есть более одного), с наименьшим фитнес из заданных идеальных значений.
простые значения по своей сути идеальны, что означает, что:
var constraints = { video: { width: 640, height: 480 } };
- это то же, что:
var constraints = { video: { width: { ideal: 640 }, height: { ideal: 480 } } };
другими словами, предпочтение, которое getUserMedia()
постараюсь почтить, но никогда не подведу.
если вы должны имейте определенное разрешение, используйте эту стенографию:
var constraints = { video: { width: { exact: 640 }, height: { exact: 480 } } };
в Firefox
сейчас width
, height
, frameRate
и (на мобильном телефоне) facingMode
поддерживаются в Firefox. Кроме того, некоторые предостережения по версии:
FF32-37: простые значения и
ideal
не поддерживается. Однако значения не являются обязательными, если вы не добавляете non-specrequire
ключевое слово.FF38+: реализует спецификацию для вышеуказанных ограничений. Улучшена обработка камер Mac (хотя частота кадров имеет ограничения на Mac).
FF43+: осуществляет
MediaStreamTrack.applyConstraints()
иmediaDevices.getSupportedConstraints()
.FF46+: осуществляет
echoCancellation
.