addSubtitleToVideo method

Future<void> addSubtitleToVideo({
  1. required String videoPath,
  2. required String subtitlePath,
  3. required String outputPath,
  4. bool isOverride = true,
  5. void onStdout(
    1. String data
    )?,
  6. VideoCodec videoCodec = VideoCodec.h264,
  7. VideoBitrate bitrate = VideoBitrate.k1000,
  8. SubtitleCodec subtitleCodec = SubtitleCodec.movText,
})

Implementation

Future<void> addSubtitleToVideo({
  required String videoPath,
  required String subtitlePath,
  required String outputPath,
  bool isOverride = true,
  void Function(String data)? onStdout,
  VideoCodec videoCodec = VideoCodec.h264,
  VideoBitrate bitrate = VideoBitrate.k1000,
  SubtitleCodec subtitleCodec = SubtitleCodec.movText,
}) async {
  final outFile = File(outputPath);
  if (outFile.existsSync() && isOverride) {
    await outFile.delete();
  }

  final args = [
    '-i', videoPath, // main video
    '-i', subtitlePath, // subtitle file
    '-c:v', videoCodec.ffmpegName,
    '-b:v', bitrate.ffmpegValue,
    '-c:a', 'copy', // original audio retain
    '-c:s', subtitleCodec.ffmpegName, // subtitle codec
    '-map', '0:v', // video stream from first input
    '-map', '0:a?', // audio stream if exists
    '-map', '1:s', // subtitle stream from second input
    outputPath,
  ];

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