Android flatter_ffmpeg-如何访问输出路径?

Android flatter_ffmpeg-如何访问输出路径?,android,flutter,dart,ffmpeg,android-ffmpeg,Android,Flutter,Dart,Ffmpeg,Android Ffmpeg,我需要合并(连接)两个音频文件在一个颤振应用程序 我正在尝试使用flatter_ffmpeg包 https://pub.dev/packages/flutter_ffmpeg Ffmpeg是强大的音频和视频工具 flatter_cache_manager包来存储来自https的文件 https://pub.dev/packages/flutter_cache_manager 以及为处理这些路径而提供的路径 https://pub.dev/packages/path_provider 对于缓

我需要合并(连接)两个音频文件在一个颤振应用程序

我正在尝试使用flatter_ffmpeg包

https://pub.dev/packages/flutter_ffmpeg
Ffmpeg是强大的音频和视频工具

flatter_cache_manager包来存储来自https的文件

https://pub.dev/packages/flutter_cache_manager
以及为处理这些路径而提供的路径

https://pub.dev/packages/path_provider
对于缓存部分,我已经做了一些成功的测试

但是,我需要您的帮助来了解如何使用ffmpeg软件包。
根据自述文件,我需要做如下事情

import 'package:flutter_ffmpeg/flutter_ffmpeg.dart';

final FlutterFFmpeg _flutterFFmpeg = new FlutterFFmpeg(); 
var fileCached1 = await DefaultCacheManager().getSingleFile(url1);
var fileCached2 = await DefaultCacheManager().getSingleFile(url2);
var arguments = ["-i", "concat:fileCached1.wav|fileCached2.wav", "-c copy", "output.way"];
_flutterFFmpeg.executeWithArguments(arguments ).then((rc) => print("FFmpeg process exited with rc $rc"));
如何访问output.wav以播放?如何使用路径提供程序

我真的需要你的帮助 关于颤振的信息很少。这个问题可能对其他人有用

提前感谢,,
Ricardo

路径提供程序包允许您访问应用程序的appDir&temp目录,假设您要访问应用程序文档目录:

Directory appDocumentDir = await getApplicationDocumentsDirectory();
String rawDocumentPath = appDocumentDir.path;
如果输出的文件名是“output.wav”

现在outputPath包含将由FFMPEG生成的输出文件的路径,您可以在以后播放/复制/上传或任何您想要的时候使用它

但在FFMPEG部分,concat两个输入文件的命令行是:

ffmpeg -i input1.wav -i input2.wav -filter_complex '[0:0][1:0]concat=n=2:v=0:a=1[out]' -map '[out]' output.wav
如果希望有3个输入文件,请使用n=3并更改命令中的其他部分

颤振\u ffmpeg的用法如下:

import 'package:flutter_ffmpeg/flutter_ffmpeg.dart';

final FlutterFFmpeg _flutterFFmpeg = new FlutterFFmpeg();

_flutterFFmpeg.execute("-i input1.wav -i input2.wav -filter_complex '[0:0][1:0]concat=n=2:v=0:a=1[out]' -map '[out]' output.wav").then((rc) => print("FFmpeg process exited with rc $rc"));
理想情况下,我们希望在此处使用outputPath,因此请执行以下操作:

String commandToExecute = Strings.concatAll(["-i input1.wav -i input2.wav -filter_complex '[0:0][1:0]concat=n=2:v=0:a=1[out]' -map '[out]' ", outputPath]);
您执行该流程的最终声明为:

_flutterFFmpeg.execute(commandToExecute).then((rc) => print("FFmpeg process exited with rc $rc"));
执行后,您可以检查执行输出。零表示成功执行,非零值表示失败:

final FlutterFFmpegConfig _flutterFFmpegConfig = new FlutterFFmpegConfig();

_flutterFFmpegConfig.getLastReturnCode().then((rc) => print("Last rc: $rc"));

_flutterFFmpegConfig.getLastCommandOutput().then((output) => print("Last command output: $output"));
因此,如果出现故障或出现错误,可以检查命令输出以修复bug

您可以在此处找到有关颤振的更多信息:

此外,对于使用ffmpeg和查找有关过滤器的更多信息,您可以查看以下内容:


嗨,拉苏尔加纳!谢谢你非常清晰、结构合理的回答。我正在尝试。很快我会给出反馈。谢谢你的时间。嗨,拉苏尔!我对你非常专业的解释非常满意。你真的帮了我。谢谢,祝你有愉快的一天!
final FlutterFFmpegConfig _flutterFFmpegConfig = new FlutterFFmpegConfig();

_flutterFFmpegConfig.getLastReturnCode().then((rc) => print("Last rc: $rc"));

_flutterFFmpegConfig.getLastCommandOutput().then((output) => print("Last command output: $output"));