Как настроить параметры вроде iso и exposure в android приложении на Flutter?

Я использую Flutter с flutter_webrtc, но при создании локального стрима (MediaStream) параметры по типу iso, exposure, focusDistance, brightness и contrast не работают, в гугле не нашёл вопросов на эту тему, в webrtc_interface-1.2.0/lib/src/mediadevices.dart эти параметры есть MediaTrackSupportedConstraints, но при создании стрима они не работают.

Создание MediaStream:

  Future<MediaStream> _getMediaStream() async {
    MediaStream localStream = await navigator.mediaDevices.getUserMedia({
      'audio': true,
      'video': {
        'facingMode': 'environment',
        'width': _deviceInfo['cameraInfo']['resolution']['current']['width'],
        'height': _deviceInfo['cameraInfo']['resolution']['current']['height'],
        'frameRate': _deviceInfo['cameraInfo']['fps']['current'],
        'exposureMode': _deviceInfo['cameraInfo']['exposure']['mode'],
        'focusMode': _deviceInfo['cameraInfo']['focus']['mode'],
        'focusDistance': _deviceInfo['cameraInfo']['focus']['offset'],
        'iso': _deviceInfo['cameraInfo']['iso']['offset'],
        'brightness': _deviceInfo['cameraInfo']['brightness']['offset'],
        'contrast': _deviceInfo['cameraInfo']['contrast']['offset']
      }
    });

    return localStream;
  }

Пример по умолчанию _deviceInfo['cameraInfo']:

    Map<String, dynamic> cameraSettings = {
  "iso": {
    "offset": 100,
    "min": 100,
    "max": 3200,
  },
  "exposure": {
    "mode": "none",
    "modes": ["none", "manual", "single-shot", "continuous"],
    "offset": 1.3,
    "min": await controller.getMinExposureOffset(),
    "max": await controller.getMaxExposureOffset(),
  },
  "focus": {
    "mode": "none",
    "modes": ["none", "manual", "single-shot", "continuous"],
    "offset": 0.0,
    "min": 0.0,
    "max": 1.0,
  },
  "brightness": {
    "offset": 0.0,
    "min": -1.0,
    "max": 1.0,
  },
  "contrast": {
    "offset": 0.0,
    "min": -1.0,
    "max": 1.0,
  },
  "zoom": {
    "offset": 0.0,
    "min": await controller.getMinZoomLevel(),
    "max": await controller.getMaxZoomLevel(),
  },
  "resolution": {
    "current": {
      "width": 720,
      "height": 480,
    },
    "available": [
      {
        "width": 320,
        "height": 240,
      },
      {
        "width": 720,
        "height": 480,
      },
      {
        "width": 1280,
        "height": 720,
      },
      {
        "width": 1920,
        "height": 1080,
      },
    ],
  },
  "fps": {
    "current": 30,
    "ranges": [10, 30, 60],
  },
};

Почему это может не работать? При изменении настроек я пересоздаю MediaStream с новыми параметрами, после чего пересоздаю RTCPeerConnection, снова обмениваюсь офферами и ICE кандидатами, но никакие параметры кроме width, height и frameRate не меняются.


Ответы (0 шт):