- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在 Flutter 应用中合并(连接)两个音频文件。
我正在尝试使用 Flutter_ffmpeg 包。
https://pub.dev/packages/flutter_ffmpeg
ffmpeg 是一款强大的音视频工具。
flutter_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 来播放?如何使用 path_provider?
我真的需要你的帮助。 :)关于flutter_ffmpeg的信息很少。这个问题可能对其他人有用。
提前致谢,里卡多
最佳答案
path_provider 包让您可以访问应用程序的 appDir 和临时目录,假设您要访问应用程序文档目录:
Directory appDocumentDir = await getApplicationDocumentsDirectory();
String rawDocumentPath = appDocumentDir.path;
如果您的输出文件名为“output.wav”
String outputPath = Strings.concatAll([rawDocumentPath, "/output.wav"]);
现在 outputPath 包含将由 FFMPEG 生成的输出文件的路径,你可以在以后播放/复制/上传或任何你想要的时候使用它到。
但是在FFMPEG部分,连接两个输入文件的命令行是:
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 并更改命令中的其他部分。
Flutter_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"));
所以如果失败或出现错误,您可以检查命令输出以修复错误
您可以在此处找到有关 flutter_ffmpeg 的更多信息:
https://pub.dev/packages/flutter_ffmpeg
还可以使用 ffmpeg 并找到有关过滤器的更多信息,您可以查看:
关于android - flutter_ffmpeg - 如何访问输出路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60767140/
安装flutter_ffmpeg时我应该设置包名 安卓/build.gradle ext { flutterFFmpegPackage = "" } 并在 ios/Podfile if plu
我需要在 Flutter 应用中合并(连接)两个音频文件。 我正在尝试使用 Flutter_ffmpeg 包。 https://pub.dev/packages/flutter_ffmpeg ffmp
我无法弄清楚为什么我的 ffmpeg 命令不起作用...... Future watermark(filePath, width, height) async { final String out
实际上,我很困惑如何通过 url 或存储将视频和音频文件提供给 Flutter ffmpeg。所以它可以通过人造黄油给我输出。我不知道 ffmpeg 如何在 Flutter 中工作。我使用路径提供程序
我正在使用ffmpeg ecuteAsyncWithArguments从头到尾将单个图像叠加到视频中,我使用的filterParam的工作方式正如您在日志中看到的那样。然而,在覆盖过程之后,命令的执行
我正在尝试使用 Flutter_ffmpeg 裁剪视频使用此包 -i $inputPath -filter:v "crop=80:60:200:100" -c $outputPath ,但我收到此错误
我是一名优秀的程序员,十分优秀!