addAudioImage static method
Future<XFile>
addAudioImage({
- void onStatistics()?,
- VideoExportFormat outputFormat = VideoExportFormat.mp4,
- String audioPath = '',
- String imagePath = '',
Implementation
static Future<XFile> addAudioImage({
void Function(FFmpegStatistics)? onStatistics,
VideoExportFormat outputFormat = VideoExportFormat.mp4,
String audioPath = '',
String imagePath = '',
}) async {
final String outputPath =
kIsWeb ? webOutputPath(outputFormat) : await ioOutputPath(imagePath, outputFormat);
String duration = '00:00:30.00';
final Completer<void> completer = Completer<void>();
await FFmpegKit.executeAsync('-i $audioPath -hide_banner', (FFmpegSession session) async {
final String? output = await session.getOutput();
duration = extractDuration(output ?? '') ?? '';
completer.complete();
});
await completer.future;
final String videoPath = outputPath.replaceAll('.mp4', '_video.mp4');
await const FFmpegExport().executeFFmpegIO(
execute:
'-loop 1 -i $imagePath -c:v h264_videotoolbox -vf "scale=1920:-2" -b:v 4000k -t $duration $videoPath',
outputPath: outputPath,
outputMimeType: outputFormat.mimeType,
onStatistics: onStatistics,
);
return const FFmpegExport().executeFFmpegIO(
execute: '-i $videoPath -i $audioPath -c:v copy -c:a aac -shortest $outputPath',
outputPath: outputPath,
outputMimeType: outputFormat.mimeType,
onStatistics: onStatistics,
);
}