Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 4 additions & 6 deletions common/darwin/Classes/FlutterWebRTCPlugin.m
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
#import "FlutterRTCMediaStream.h"
#import "FlutterRTCPeerConnection.h"
#import "FlutterRTCVideoRenderer.h"
#import "FlutterRTCMediaRecorder.h"
#import "FlutterRTCFrameCryptor.h"
#import "VideoEffectProcessor.h"
#import "ProcessorProvider.h"
#import "VideoFrameProcessor.h"
#if TARGET_OS_IPHONE
#import "FlutterRTCMediaRecorder.h"
#import "FlutterRTCVideoPlatformViewFactory.h"
#import "FlutterRTCVideoPlatformViewController.h"
#endif
Expand Down Expand Up @@ -1529,8 +1529,9 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
message:[NSString stringWithFormat:@"Error: peerConnection not found!"]
details:nil]);
}
#if TARGET_OS_IOS
} else if ([@"startRecordToFile" isEqualToString:call.method]){
#if TARGET_OS_IOS

NSDictionary* argsMap = call.arguments;
NSNumber* recorderId = argsMap[@"recorderId"];
NSString* path = argsMap[@"path"];
Expand All @@ -1549,10 +1550,7 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
];
}
result(nil);
#endif

} else if ([@"stopRecordToFile" isEqualToString:call.method]) {
#if TARGET_OS_IOS
NSDictionary* argsMap = call.arguments;
NSNumber* recorderId = argsMap[@"recorderId"];
FlutterRTCMediaRecorder* recorder = self.recorders[recorderId];
Expand All @@ -1564,7 +1562,7 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
message:[NSString stringWithFormat:@"Error: recorder with id %@ not found!",recorderId]
details:nil]);
}
#endif
#endif
} else {
[self handleFrameCryptorMethodCall:call result:result];
}
Expand Down
4 changes: 2 additions & 2 deletions example/lib/src/get_user_media_sample.dart
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ class _GetUserMediaSampleState extends State<GetUserMediaSample> {
if (await file.exists()) {
await file.delete();
}
_mediaRecorder = MediaRecorder();
_mediaRecorder = MediaRecorder(albumName: 'FlutterWebRTC');
setState(() {});

final videoTrack = _localStream!
Expand All @@ -145,7 +145,7 @@ class _GetUserMediaSampleState extends State<GetUserMediaSample> {
}

// album name works only for android, for ios use gallerySaver
await _mediaRecorder?.stop(albumName: 'FlutterWebRTC');
await _mediaRecorder?.stop();
setState(() {
_mediaRecorder = null;
});
Expand Down
2 changes: 1 addition & 1 deletion ios/stream_webrtc_flutter.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ A new flutter plugin project.
s.source_files = 'Classes/**/*'
s.public_header_files = 'Classes/**/*.h'
s.dependency 'Flutter'
s.dependency 'StreamWebRTC', '125.6422.065'
s.dependency 'StreamWebRTC', '125.6422.070'
s.ios.deployment_target = '13.0'
s.static_framework = true
s.pod_target_xcconfig = {
Expand Down
13 changes: 10 additions & 3 deletions lib/src/media_recorder.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
import 'package:flutter/foundation.dart';

import 'package:webrtc_interface/webrtc_interface.dart' as rtc;

import '../stream_webrtc_flutter.dart';
import 'native/media_recorder_impl.dart' show MediaRecorderNative;

class MediaRecorder extends rtc.MediaRecorder {
MediaRecorder() : _delegate = mediaRecorder();
MediaRecorder({
String? albumName,
}) : _delegate = (kIsWeb || kIsWasm)
? mediaRecorder()
: MediaRecorderNative(albumName: albumName);

final rtc.MediaRecorder _delegate;

@override
Expand All @@ -21,8 +29,7 @@ class MediaRecorder extends rtc.MediaRecorder {
}

@override
Future stop({String? albumName}) =>
_delegate.stop(albumName: albumName ?? "FlutterWebRtc");
Future stop() => _delegate.stop();

@override
void startWeb(
Expand Down
8 changes: 6 additions & 2 deletions lib/src/native/media_recorder_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,13 @@ import 'media_stream_track_impl.dart';
import 'utils.dart';

class MediaRecorderNative extends MediaRecorder {
MediaRecorderNative({
String? albumName = 'FlutterWebRTC',
}) : _albumName = albumName;
static final _random = Random();
final _recorderId = _random.nextInt(0x7FFFFFFF);
var _isStarted = false;
final String? _albumName;

@override
Future<void> start(
Expand Down Expand Up @@ -42,13 +46,13 @@ class MediaRecorderNative extends MediaRecorder {
}

@override
Future<dynamic> stop({String? albumName}) async {
Future<dynamic> stop() async {
if (!_isStarted) {
throw "Media recorder not started!";
}
return await WebRTC.invokeMethod('stopRecordToFile', {
'recorderId': _recorderId,
'albumName': albumName,
'albumName': _albumName,
});
}
}
3 changes: 0 additions & 3 deletions lib/src/native/rtc_video_platform_view_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,6 @@ class RTCVideoPlatformViewController extends ValueNotifier<RTCVideoValue>
@override
int get videoHeight => value.height.toInt();

@override
RTCVideoValue get videoValue => value;

@override
int? get textureId => _viewId;

Expand Down
3 changes: 0 additions & 3 deletions lib/src/native/rtc_video_renderer_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,6 @@ class RTCVideoRenderer extends ValueNotifier<RTCVideoValue>
@override
int get videoHeight => value.height.toInt();

@override
RTCVideoValue get videoValue => value;

@override
int? get textureId => _textureId;

Expand Down
5 changes: 5 additions & 0 deletions lib/src/video_renderer_extension.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import 'package:stream_webrtc_flutter/stream_webrtc_flutter.dart';

extension VideoRendererExtension on RTCVideoRenderer {
RTCVideoValue get videoValue => value;
}
3 changes: 0 additions & 3 deletions lib/src/web/rtc_video_renderer_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,6 @@ class RTCVideoRenderer extends ValueNotifier<RTCVideoValue>
@override
int get videoHeight => value.height.toInt();

@override
RTCVideoValue get videoValue => value;

@override
int get textureId => _textureId;

Expand Down
1 change: 1 addition & 0 deletions lib/stream_webrtc_flutter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ export 'src/helper.dart';
export 'src/desktop_capturer.dart';
export 'src/media_devices.dart';
export 'src/media_recorder.dart';
export 'src/video_renderer_extension.dart';
export 'src/native/factory_impl.dart'
if (dart.library.js_interop) 'src/web/factory_impl.dart';
export 'src/native/rtc_video_renderer_impl.dart'
Expand Down
2 changes: 1 addition & 1 deletion macos/stream_webrtc_flutter.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ A new flutter plugin project.
s.source_files = ['Classes/**/*']

s.dependency 'FlutterMacOS'
s.dependency 'WebRTC-SDK', '125.6422.06'
s.dependency 'WebRTC-SDK', '125.6422.07'
s.osx.deployment_target = '10.14'
end
4 changes: 2 additions & 2 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ environment:

dependencies:
collection: ^1.17.0
dart_webrtc: ^1.5.4
dart_webrtc: ^1.5.3+hotfix.2
flutter:
sdk: flutter
path_provider: ^2.0.2
web: ^1.0.0
webrtc_interface: ^1.2.3
webrtc_interface: ^1.2.2+hotfix.2

dev_dependencies:
flutter_test:
Expand Down