videoToVideo method
Future<void>
videoToVideo({
- required String inputPath,
- required String outputPath,
- bool isOverride = true,
- void onStdout(
- String data
- VideoCodec videoCodec = VideoCodec.h264,
- VideoBitrate bitrate = VideoBitrate.k1000,
- VideoResolution resolution = VideoResolution.r720p,
- List<
VideoFilterOption> ? filters,
re-encode video
Implementation
Future<void> videoToVideo({
required String inputPath,
required String outputPath,
bool isOverride = true,
void Function(String data)? onStdout,
VideoCodec videoCodec = VideoCodec.h264,
VideoBitrate bitrate = VideoBitrate.k1000,
VideoResolution resolution = VideoResolution.r720p,
List<VideoFilterOption>? filters, // optional
}) async {
final outFile = File(outputPath);
if (outFile.existsSync() && isOverride) {
await outFile.delete();
}
final args = [
'-i', inputPath,
'-c:v', videoCodec.ffmpegName,
'-b:v', bitrate.ffmpegValue,
'-s', resolution.ffmpegValue,
'-c:a', 'copy', // audio stream ကို 그대로 retain
];
// filters
if (filters != null && filters.isNotEmpty) {
final filterString = filters.map((f) => f.ffmpegString).join(',');
args.addAll(['-filter:v', filterString]);
}
//last add
args.add(outputPath);
await ffmpegStart(arguments: args, onStdErrorOut: onStdout);
}