在开发的过程中, 可能会遇到多个音频组合后播放的需求, 主要是使用ffmpeg 进行编码处理
需要用到插件: flutter_ffmpeg的filter_complex相关功能
1、
flutter_ffmpeg:
path: plugins/flutter_ffmpeg
2、
// 引入头文件
import 'package:flutter_ffmpeg/flutter_ffmpeg.dart';
3、
// 声明 FlutterFFmpeg
final FlutterFFmpeg _flutterFFmpeg = FlutterFFmpeg();
4、拼接多个音频, filePaths是一个等待拼接的多个音频的地址数组, outputPath是最终拼接完成的目标音频地址
Future<String> mergeMp3Files(List<String> filePaths, String outputPath) async {
// 判断读写权限。拼接后要写入到指定地址outputPath
PermissionStatus _permissionStatus = PermissionStatus.denied;
final status = await Permission.storage.request();
_permissionStatus = status;
if (_permissionStatus != PermissionStatus.granted) {
gbs.shower.toast("请开启文件读写权限");
return "";
}
String fullCommand = filePaths.join(' ');
fullCommand = '$fullCommand -filter_complex "[0:a][1:a]concat=n=${filePaths.length}:v=0:a=1[out]" -map "[out]" $outputPath';
int session = await _flutterFFmpeg.execute(fullCommand);
if (session == 0) {
return outputPath;
}
print("--------------------p------------------------拼接失败");
return "";
}
5、flutter_ffmpeg还有许多功能, 如视频文件和音频文件拼接, 视频文件转音频文件等