Flutter FFmpeg|从TXT文件中合并多个视频并另保存为视频

cgfeq70w  于 2023-04-07  发布在  Flutter
关注(0)|答案(1)|浏览(153)

我有一个文本文件与视频文件的所有路径,我想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命令错误...???

0md85ypi

0md85ypi1#

首先,您可以使用此代码打印出失败原因。

FFmpegKit.executeAsync(
  command,
  (_) {},
  (log) {
    print(log.getMessage());
  },
);

从你的代码来看,-c copy这对最新的ffmpeg_kit_flutter不起作用。尝试删除它或替换为-c:v mpeg4

相关问题