startVideoRecording method

Future<bool> startVideoRecording({
  1. String? path,
  2. UVideoCodec? codec,
  3. int? bitrate,
  4. bool? enableAudio,
  5. Duration? maxDuration,
})

Implementation

Future<bool> startVideoRecording({String? path, UVideoCodec? codec, int? bitrate, bool? enableAudio, Duration? maxDuration}) async {
  final int? id = _sessionId;
  if (id == null || value.isRecording) return false;
  try {
    await UCameraChannel.invoke<void>("startRecording", <String, Object?>{
      "sessionId": id,
      "path": path,
      "codec": (codec ?? _config.videoCodec).name,
      "bitrate": bitrate ?? _config.videoBitrate,
      "enableAudio": enableAudio ?? _config.enableAudio,
      "maxDurationMs": (maxDuration ?? _config.maxRecordingDuration)?.inMilliseconds,
      "maxBytes": _config.maxRecordingBytes,
    });
    _recordedBeforePause = Duration.zero;
    _recordingStartedAt = DateTime.now();
    _startRecordingTicker();
    _emit(value.copyWith(state: UCameraState.recording, recordingDuration: Duration.zero, recordingBytes: 0));
    return true;
  } on UCameraException catch (error) {
    _fail(error);
    return false;
  } catch (error) {
    _fail(UCameraException(code: UCameraErrorCode.unknown, message: "$error"));
    return false;
  }
}