8000 Merge pull request #98 from MrAlek/fix/remote-capture · next-coder/flutter-webrtc@abbfbbd · GitHub
[go: up one dir, main page]

Skip to content

Commit abbfbbd

Browse files
authored
Merge pull request flutter-webrtc#98 from MrAlek/fix/remote-capture
Make startRecordToFile and captureFrame able to capture remote tracks
2 parents a151197 + 37032f9 commit abbfbbd

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ public void onMethodCall(MethodCall call, Result notSafeResult) {
314314
VideoTrack videoTrack = null;
315315
String videoTrackId = call.argument("videoTrackId");
316316
if (videoTrackId != null) {
317-
MediaStreamTrack track = localTracks.get(videoTrackId);
317+
MediaStreamTrack track = getTrackForId(videoTrackId);
318318
if (track instanceof VideoTrack)
319319
videoTrack = (VideoTrack) track;
320320
}
@@ -339,7 +339,7 @@ public void onMethodCall(MethodCall call, Result notSafeResult) {
339339
String path = call.argument("path");
340340
String videoTrackId = call.argument("trackId");
341341
if (videoTrackId != null) {
342-
MediaStreamTrack track = localTracks.get(videoTrackId);
342+
MediaStreamTrack track = getTrackForId(videoTrackId);
343343
if (track instanceof VideoTrack)
344344
new FrameCapturer((VideoTrack) track, new File(path), result);
345345
else

ios/Classes/FlutterWebRTCPlugin.m

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult) result
171171
NSString* path = argsMap[@"path"];
172172
NSString* trackId = argsMap[@"trackId"];
173173

174-
RTCMediaStreamTrack *track = self.localTracks[trackId];
174+
RTCMediaStreamTrack *track = [self trackForId: trackId];
175175
if (track != nil && [track isKindOfClass:[RTCVideoTrack class]]) {
176176
RTCVideoTrack *videoTrack = (RTCVideoTrack *)track;
177177
[self mediaStreamTrackCaptureFrame:videoTrack toPath:path result:result];
@@ -482,8 +482,7 @@ - (RTCMediaStream*)streamForId:(NSString*)streamId
482482
{
483483
RTCMediaStream *stream = _localStreams[streamId];
484484
if (!stream) {
485-
for (NSString *peerConnectionId in _peerConnections) {
486-
RTCPeerConnection *peerConnection = _peerConnections[peerConnectionId];
485+
for (RTCPeerConnection *peerConnection in _peerConnections.allValues) {
487486
stream = peerConnection.remoteStreams[streamId];
488487
if (stream) {
489488
break;
@@ -493,6 +492,21 @@ - (RTCMediaStream*)streamForId:(NSString*)streamId
493492
return stream;
494493
}
495494

495+
- (RTCMediaStreamTrack*)trackForId:(NSString*)trackId
496+
{
497+
RTCMediaStreamTrack *track = _localTracks[trackId];
498+
if (!track) {
499+
for (RTCPeerConnection *peerConnection in _peerConnections.allValues) {
500+
track = peerConnection.remoteTracks[trackId];
501+
if (track) {
502+
break;
503+
}
504+
}
505+
}
506+
507+
return track;
508+
}
509+
496510
- (RTCIceServer *)RTCIceServer:(id)json
497511
{
498512
if (!json) {

0 commit comments

Comments
 (0)
0