使用 Flutter WebRTC 切换流似乎失败

问题描述 投票:0回答:1

我尝试使用 Flutter WebRTC 从前置摄像头切换到后置摄像头,但无法使其工作。

我有以下内容

      // Stop the current stream and remove the tracks
      await Future.forEach(videoStream!.getVideoTracks(), (MediaStreamTrack? track) async {
        if (track != null) {
          try {
            await track.stop();
            await videoStream!.removeTrack(track);
          } catch (e) {
            if (kDebugMode) {
              print(e);
            }
          }
        }
      });

      videoStream!.getVideoTracks().forEach((track) {
        track.stop();
        videoStream!.removeTrack(track, removeFromNative: true);
      });

      final mediaConstraints = {
        'audio': false, // NO need to capture audio again
        'video': {
          'deviceId': videoInputDeviceId,
        }
      };
      MediaStream newStream = await navigator.mediaDevices.getUserMedia(mediaConstraints);

      final newTrack = newStream.getVideoTracks()[0];
      await videoStream!.addTrack(newTrack, addToNative: true);

如果我在它们周围放置 try catch ,则会出现以下错误

flutter: PlatformException(mediaStreamRemoveTrack: Track is nil, null, null, null)
flutter: !--- Event: Failed to enable webcam
flutter: Concurrent modification during iteration: Instance(length:0) of '_GrowableList'.
flutter webrtc flutter-webrtc
1个回答
1
投票

我是这样做的:

MediaStream localStream;
if (localStream != null) {
   await localStream!.getVideoTracks()[0].switchCamera();
}

更新

localStream!.getVideoTracks()[0].switchCamera();

目前已弃用

使用它来使用 flutter_webrtc 依赖项 0.9.47 版本 https://pub.dev/packages/flutter_webrtc ->

Helper.switchCamera(
    local_renderer.srcObject!.getVideoTracks()[0],
    video_device_id,
    local_stream,
  );
© www.soinside.com 2019 - 2024. All rights reserved.