我正在尝试合并视频和音频,并使用 ffmpeg_kit_flutter 包在 flutter 应用程序中下载视频,它可以很好地处理由屏幕录像机应用程序录制的视频,该应用程序记录了我的手机屏幕,但它不适用于以下视频:我的手机摄像头或任何其他视频录制的,我不知道问题出在哪里。 这是我的代码:
Future<void> mergeRecordWithIntro({required String videoPath, required String audiPath, })
async
{
final random = Random();
final directory = await getTemporaryDirectory();
String outputVideoPath = '${directory.path}/${random.nextInt(10000)}_merged_video.mp4';
String ffmpegCommand = '-i $videoPath -i $audiPath -c:v copy -c:a aac $outputVideoPath';
await FFmpegKit.execute(ffmpegCommand)
.then((value) async {
await Gal.putVideo(outputVideoPath);
emit(MergeVideoAudioSuccessState());
}).catchError((error){
emit(MergeVideoAudioFailureState());
});
}
保存音频,但确保在保存之前删除特殊字符,使用此正则表达式 String sanitizeFileName(String fileName) { // 删除特殊字符并用下划线替换空格 返回文件名 .replaceAll(RegExp(r'[^\w\s.]'), '') // 删除特殊字符 .replaceAll(RegExp(r'\s+'), '_') // 用下划线替换空格 .replaceAll(RegExp(r'.+'), '.') // 确保只有单个点 .toLowerCase(); // 转换为小写 }
使用这样的命令 '-i "$outputPath" -i "$audioPath" -map 0:v -map 1:a -c:v copy -c:a aac "$finalOutputPath"';