我有一个文本文件与视频文件的所有路径,我想concat使用https://pub.dev/packages/ffmpeg_kit_flutter在我的Flutter应用程序。
为此,我写了一个文件my_file.txt
与以下数据...
/data/user/0/com.example.video_merger/cache/75f72300-1203-4e2c-93cf-65777152f1d16524788775537818173.mp4
/data/user/0/com.example.video_merger/cache/318d5ea7-3e0c-4453-903b-06966aa86f348487775694692938421.mp4
现在我使用下面的代码来合并所有上面的视频。
String outputPath = "/data/user/0/com.example.video_merger/app_flutter/output.mp4";
String commandToExecute = '-f concat -i $rawDocumentPath/my_file.txt -c copy $outputPath';
FFmpegKit.execute(commandToExecute).then((session) async {
final returnCode = await session.getReturnCode();
print("FFmpeg Process Exited With ReturnCode = $returnCode");
GallerySaver.saveVideo(outputPath).then((_) {
print("Merged Video Saved");
});
if (ReturnCode.isSuccess(returnCode)) {
// SUCCESS
} else if (ReturnCode.isCancel(returnCode)) {
// CANCEL
} else {
// ERROR
}
});
但它给我的错误如下所示...
FFmpeg Process Exited With ReturnCode = 1
E/GallerySaver(31493): /data/user/0/com.example.video_merger/app_flutter/output.mp4: open failed: ENOENT (No such file or directory)
但是当我直接使用下面的ffmpeg
命令而不从文本文件中阅读时,效果很好,并保存了我的视频。
String commandToExecute = '-y -i ${_storedVideoOne!.path} -i ${_storedVideoTwo!.path} -r 24000/1001 -filter_complex \'[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[out]\' -map \'[out]\' $outputPath';
现在我的问题是,我将有动态数量的视频concat,所以我想使用文本文件,我会写所有的路径,然后将使合并的视频从他们。所以什么是我的ffmpeg
命令错误...???
1条答案
按热度按时间0md85ypi1#
首先,您可以使用此代码打印出失败原因。
从你的代码来看,
-c copy
这对最新的ffmpeg_kit_flutter
不起作用。尝试删除它或替换为-c:v mpeg4