我尝试使用 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'.
我是这样做的:
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,
);