Как настроить параметры вроде 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 не меняются.