startWeb method

  1. @override
void startWeb(
  1. MediaStream stream, {
  2. dynamic onDataChunk(
    1. dynamic blob,
    2. bool isLastOne
    )?,
  3. String mimeType = 'video/webm',
})
override

Only for Flutter Web

Implementation

@override
void startWeb(
  MediaStream stream, {
  Function(dynamic blob, bool isLastOne)? onDataChunk,
  String mimeType = 'video/webm',
}) {
  var _native = stream as MediaStreamWeb;
  _recorder = html.MediaRecorder(_native.jsStream, {'mimeType': mimeType});
  if (onDataChunk == null) {
    var _chunks = <html.Blob>[];
    _completer = Completer<String>();
    _recorder.addEventListener('dataavailable', (html.Event event) {
      final html.Blob blob = js.JsObject.fromBrowserObject(event)['data'];
      if (blob.size > 0) {
        _chunks.add(blob);
      }
      if (_recorder.state == 'inactive') {
        final blob = html.Blob(_chunks, mimeType);
        _completer.complete(html.Url.createObjectUrlFromBlob(blob));
      }
    });
    _recorder.onError.listen((error) {
      _completer.completeError(error);
    });
  } else {
    _recorder.addEventListener('dataavailable', (html.Event event) {
      onDataChunk(
        js.JsObject.fromBrowserObject(event)['data'],
        _recorder.state == 'inactive',
      );
    });
  }
  _recorder.start();
}