Ограничения 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-spec require ключевое слово.

  • FF38+: реализует спецификацию для вышеуказанных ограничений. Улучшена обработка камер Mac (хотя частота кадров имеет ограничения на Mac).

  • FF43+: осуществляет MediaStreamTrack.applyConstraints() и mediaDevices.getSupportedConstraints().

  • FF46+: осуществляет echoCancellation.