8000 修复Flutter-WebRTC Android多人视频时bug · flutter-webrtc/flutter-webrtc@a40dffb · GitHub
[go: up one dir, main page]

Skip to content

Commit a40dffb

Browse files
committed
修复Flutter-WebRTC Android多人视频时bug
1 parent c83eacc commit a40dffb

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

android/src/main/java/com/cloudwebrtc/webrtc/FlutterWebRTCPlugin.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ public void onMethodCall(MethodCall call, Result notSafeResult) {
152152
peerConnectionCreateAnswer(peerConnectionId, new ConstraintsMap(constraints), result);
153153
} else if (call.method.equals("mediaStreamGetTracks")) {
154154
String streamId = call.argument("streamId");
155-
MediaStream stream = getStreamForId(streamId);
155+
MediaStream stream = getStreamForId(streamId,"");
156156
Map<String, Object> resultMap = new HashMap<>();
157157
List<Object> audioTracks = new ArrayList<>();
158158
List<Object> videoTracks = new ArrayList<>();
@@ -298,15 +298,15 @@ public void onMethodCall(MethodCall call, Result notSafeResult) {
298298
} else if (call.method.equals("videoRendererSetSrcObject")) {
299299
int textureId = call.argument("textureId");
300300
String streamId = call.argument("streamId");
301-
301+
String peerConnectionId = call.argument("peerConnectionId");
302302
FlutterRTCVideoRenderer render = renders.get(textureId);
303303

304304
if (render == null) {
305305
result.error("FlutterRTCVideoRendererNotFound", "render [" + textureId + "] not found !", null);
306306
return;
307307
}
308308

309-
MediaStream stream = getStreamForId(streamId);
309+
MediaStream stream = getStreamForId(streamId, peerConnectionId);
310310
render.setStream(stream);
311311
result.success(null);
312312
} else if (call.method.equals("mediaStreamTrackHasTorch")) {
@@ -702,7 +702,7 @@ String getNextStreamUUID() {
702702

703703
do {
704704
uuid = UUID.randomUUID().toString();
705-
} while (getStreamForId(uuid) != null);
705+
} while (getStreamForId(uuid,"") != null);
706706

707707
return uuid;
708708
}
@@ -717,15 +717,20 @@ String getNextTrackUUID() {
717717
return uuid;
718718
}
719719

720-
MediaStream getStreamForId(String id) {
720+
MediaStream getStreamForId(String id, String peerConnectionId) {
721721
MediaStream stream = localStreams.get(id);
722722

723723
if (stream == null) {
724-
for (Map.Entry<String, PeerConnectionObserver> entry : mPeerConnectionObservers.entrySet()) {
725-
PeerConnectionObserver pco = entry.getValue();
724+
if (peerConnectionId.length() > 0) {
725+
PeerConnectionObserver pco = mPeerConnectionObservers.get(peerConnectionId);
726726
stream = pco.remoteStreams.get(id);
727-
if (stream != null) {
728-
break;
727+
} else {
728+
for (Map.Entry<String, PeerConnectionObserver> entry : mPeerConnectionObservers.entrySet()) {
729+
PeerConnectionObserver pco = entry.getValue();
730+
stream = pco.remoteStreams.get(id);
731+
if (stream != null) {
732+
break;
733+
}
729734
}
730735
}
731736
}

0 commit comments

Comments
 (0)
0