addSubtitleToVideo method
Future<void>
addSubtitleToVideo({
- required String videoPath,
- required String subtitlePath,
- required String outputPath,
- bool isOverride = true,
- void onStdout(
- String data
- VideoCodec videoCodec = VideoCodec.h264,
- VideoBitrate bitrate = VideoBitrate.k1000,
- 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);
}