8000 优化修复iOS、Android多人视频时的bug,避免接口变更。 · flutter-webrtc/flutter-webrtc@7c9250a · GitHub
[go: up one dir, main page]

Skip to content

Commit 7c9250a

Browse files
committed
优化修复iOS、Android多人视频时的bug,避免接口变更。
1 parent a40dffb commit 7c9250a

File tree

6 files changed

+15
-19
lines changed

6 files changed

+15
-19
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ 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-
String peerConnectionId = call.argument("peerConnectionId");
301+
String peerConnectionId = call.argument("ownerTag");
302302
FlutterRTCVideoRenderer re 8000 nder = renders.get(textureId);
303303

304304
if (render == null) {

ios/Classes/FlutterWebRTCPlugin.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult) result
394394
NSNumber *textureId = argsMap[@"textureId"];
395395
FlutterRTCVideoRenderer *render = self.renders[textureId];
396396
NSString *streamId = argsMap[@"streamId"];
397-
NSString *peerConnectionId = argsMap[@"peerConnectionId"];
397+
NSString *peerConnectionId = argsMap[@"ownerTag"];
398398
if(render){
399399
[self setStreamId:streamId view:render peerConnectionId:peerConnectionId];
400400
}

lib/get_user_media.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class navigator {
1313
<String, dynamic>{'constraints': mediaConstraints},
1414
);
1515
String streamId = response["streamId"];
16-
MediaStream stream = new MediaStream(streamId);
16+
MediaStream stream = new MediaStream(streamId, "local");
1717
stream.setMediaTracks(response['audioTracks'], response['videoTracks']);
1818
return stream;
1919
} on PlatformException catch (e) {
@@ -34,7 +34,7 @@ class navigator {
3434
<String, dynamic>{'constraints': mediaConstraints},
3535
);
3636
String streamId = response["streamId"];
37-
MediaStream stream = new MediaStream(streamId);
37+
MediaStream stream = new MediaStream(streamId, "local");
3838
stream.setMediaTracks(response['audioTracks'], response['videoTracks']);
3939
return stream;
4040
} on PlatformException catch (e) {

lib/media_stream.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@ import 'utils.dart';
66
class MediaStream {
77
MethodChannel _channel = WebRTC.methodChannel();
88
String _streamId;
9+
String _ownerTag;
910
List<MediaStreamTrack> _audioTracks = new List<MediaStreamTrack>();
1011
List<MediaStreamTrack> _videoTracks = new List<MediaStreamTrack>();
11-
MediaStream(this._streamId);
12+
MediaStream(this._streamId,this._ownerTag);
13+
14+
String get ownerTag => _ownerTag;
1215

1316
void setMediaTracks(List<dynamic> audioTracks, List<dynamic> videoTracks){
1417

lib/rtc_peerconnection.dart

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ typedef void SignalingStateCallback(RTCSignalingState state);
1616
typedef void IceGatheringStateCallback(RTCIceGatheringState state);
1717
typedef void IceConnectionStateCallback(RTCIceConnectionState state);
1818
typedef void IceCandidateCallback(RTCIceCandidate candidate);
19-
typedef void AddStreamCallback(MediaStream stream, String peerConnectionid);
19+
typedef void AddStreamCallback(MediaStream stream);
2020
typedef void RemoveStreamCallback(MediaStream stream);
2121
typedef void AddTrackCallback(MediaStream stream, MediaStreamTrack track);
2222
typedef void RemoveTrackCallback(MediaStream stream, MediaStreamTrack track);
@@ -100,13 +100,14 @@ class RTCPeerConnection {
100100
break;
101101
case 'onAddStream':
102102
String streamId = map['streamId'];
103+
103104
MediaStream stream = _remoteStreams.firstWhere((it) => it.id == streamId, orElse: () {
104-
var newStream = new MediaStream(streamId);
105+
var newStream = new MediaStream(streamId, _peerConnectionId);
105106
newStream.setMediaTracks(map['audioTracks'], map['videoTracks']);
106107
_remoteStreams.add(newStream);
107108
return newStream;
108109
});
109-
if (this.onAddStream != null) this.onAddStream(stream,_peerConnectionId);
110+
if (this.onAddStream != null) this.onAddStream(stream);
110111
_remoteStreams.add(stream);
111112
break;
112113
case 'onRemoveStream':
@@ -126,7 +127,7 @@ class RTCPeerConnection {
126127
String kind = track["kind"];
127128

128129
MediaStream stream = _remoteStreams.firstWhere((it) => it.id == streamId,orElse: () {
129-
var newStream = new MediaStream(streamId);
130+
var newStream = new MediaStream(streamId, _peerConnectionId);
130131
_remoteStreams.add(newStream);
131132
return newStream;
132133
});

lib/rtc_video_view.dart

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,20 +61,12 @@ class RTCVideoRenderer {
6161
}
6262
}
6363

64-
void setSrcObjectForId(MediaStream stream, String peerConnectionId) {
65-
_srcObject=stream;
66-
_channel.invokeMethod('videoRendererSetSrcObject', <String, dynamic>{
67-
'textureId': _textureId,
68-
'streamId': stream != null ? stream.id : '',
69-
'peerConnectionId': peerConnectionId
70-
});
71-
}
72-
7364
set srcObject(MediaStream stream) {
7465
_srcObject = stream;
7566
_channel.invokeMethod('videoRendererSetSrcObject', <String, dynamic>{
7667
'textureId': _textureId,
77-
'streamId': stream != null ? stream.id : ''
68+
'streamId': stream != null ? stream.id : '',
69+
'ownerTag': stream != null ? stream.ownerTag : ''
7870
});
7971
}
8072

0 commit comments

Comments
 (0)
0