From 4a6694cc3bcaa33a8bae484ca172935140ce13cf Mon Sep 17 00:00:00 2001 From: CloudWebRTC Date: Wed, 14 Jun 2023 13:30:42 +0800 Subject: [PATCH] fix facingMode for mobile web. (#303) --- lib/src/track/local/video.dart | 11 +++++++---- lib/src/track/options.dart | 5 +++-- pubspec.yaml | 4 ++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/src/track/local/video.dart b/lib/src/track/local/video.dart index b816c08..88782aa 100644 --- a/lib/src/track/local/video.dart +++ b/lib/src/track/local/video.dart @@ -206,10 +206,13 @@ extension LocalVideoTrackExt on LocalVideoTrack { logger.warning('Not a camera track'); return; } - - await restartTrack( - options.copyWith(cameraPosition: position), - ); + final newOptions = CameraCaptureOptions( + cameraPosition: position, + deviceId: null, + maxFrameRate: options.maxFrameRate, + params: options.params); + await restartTrack(newOptions); + currentOptions = newOptions; } Future switchCamera(String deviceId, {bool fastSwitch = false}) async { diff --git a/lib/src/track/options.dart b/lib/src/track/options.dart index b60af5b..2eb9384 100644 --- a/lib/src/track/options.dart +++ b/lib/src/track/options.dart @@ -44,8 +44,9 @@ class CameraCaptureOptions extends VideoCaptureOptions { Map toMediaConstraintsMap() { var constraints = { ...super.toMediaConstraintsMap(), - 'facingMode': - cameraPosition == CameraPosition.front ? 'user' : 'environment', + if (deviceId == null) + 'facingMode': + cameraPosition == CameraPosition.front ? 'user' : 'environment' }; if (deviceId != null) { if (kIsWeb) { diff --git a/pubspec.yaml b/pubspec.yaml index 849e659..4250b34 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -24,11 +24,11 @@ dependencies: uuid: ^3.0.6 synchronized: ^3.0.0+3 protobuf: ^2.1.0 - flutter_webrtc: 0.9.33 + flutter_webrtc: 0.9.34 flutter_window_close: ^0.2.2 device_info_plus: ^9.0.0 webrtc_interface: 1.0.13 - dart_webrtc: 1.0.16 + dart_webrtc: 1.0.17 js: ^0.6.4 platform_detect: ^2.0.7 js_bindings: ^0.1.2+1