start method
Future<void>
start(
- RecordConfig config, {
- required String path,
})
override
Implementation
@override
Future<void> start(
RecordConfig config, {
required String path,
}) async {
_mediaRecorder?.stop();
await _reset();
try {
final mediaStream = await initMediaStream(config);
// Try to assign dedicated mime type.
// If contrainst isn't set, browser will record with its default codec.
final mimeType = getSupportedMimeType(config.encoder);
final mediaRecorder = web.MediaRecorder(
mediaStream,
web.MediaRecorderOptions(
audioBitsPerSecond: config.bitRate,
bitsPerSecond: config.bitRate,
mimeType: mimeType ?? _defaultMimeType,
),
);
mediaRecorder.ondataavailable =
((web.BlobEvent event) => _onDataAvailable(event)).toJS;
mediaRecorder.onstop = ((web.Event event) => _onStop()).toJS;
_elapsedTime.start();
mediaRecorder.start(200); // Will trigger dataavailable every 200ms
_createAudioContext(config, mediaStream);
_mediaRecorder = mediaRecorder;
_mediaStream = mediaStream;
onStateChanged(RecordState.record);
} catch (error) {
_onError(error);
}
}