trimVideo method

Future<void> trimVideo({
  1. required String inputPath,
  2. required String outputPath,
  3. bool isOverride = true,
  4. void onStdout(
    1. String data
    )?,
  5. required Duration start,
  6. required Duration endOrDuration,
  7. TrimMode mode = TrimMode.duration,
  8. TrimVideoCodec codec = TrimVideoCodec.copy,
})

video cut

Implementation

Future<void> trimVideo({
  required String inputPath,
  required String outputPath,
  bool isOverride = true,
  void Function(String data)? onStdout,
  required Duration start, // where to begin
  required Duration endOrDuration, // either duration or end time
  TrimMode mode = TrimMode.duration,
  TrimVideoCodec codec = TrimVideoCodec.copy,
}) async {
  final outFile = File(outputPath);
  if (outFile.existsSync() && isOverride) {
    await outFile.delete();
  }
  final args = <String>[
    '-ss',
    start.inSeconds.toString(),
    '-i',
    inputPath,
    mode.flag,
    endOrDuration.inSeconds.toString(),
    '-c:v',
    codec.ffmpegValue,
    '-c:a',
    codec == TrimVideoCodec.copy ? 'copy' : 'aac',
    outputPath,
  ];

  await ffmpegStart(arguments: args, onStdErrorOut: onStdout);
}