一个Flutter插件可播放多个同时播放的音频文件,适用于Android和iOS。
添加依赖
dependencies:
audioplayers: ^0.10.0
使用
AudioPlayer实例一次可以播放单个音频。要创建它,只需调用构造函数:
AudioPlayer audioPlayer = new AudioPlayer();
要使用低延迟API,更适合游戏声音,请使用:
AudioPlayer audioPlayer = new AudioPlayer(mode: PlayerMode.LOW_LATENCY);
在此模式下,后端不会触发任何持续时间或位置更新。此外,不可能使用搜索方法将音频设置为特定位置。
您可以创建多个实例以同时播放音频。
对于返回Future <int>
的所有方法:这是操作的状态。如果为1,则操作成功。否则,它是平台本机错误代码。默认情况下禁用日志!要调试,请运行:
AudioPlayer.logEnabled = true;
播放
有三种可能的音频来源:
Internet上的远程文件 用户设备上的本地文件 Flutter项目的本地资产
对于远程文件或本地文件,使用播放方法,只需正确设置标志isLocal。对于Local Assets,您必须使用AudioCache类(参见下文)。要播放远程文件,只需使用url调用play(默认情况下isLocal参数为false):
play() async {
int result = await audioPlayer.play(url);
if (result == 1) {
// success
}
}
对于本地文件,添加isLocal参数:
playLocal() async {
int result = await audioPlayer.play(localPath, isLocal: true);
}
isLocal标志是必需的,因为iOS对它有所不同(Android无论如何都不关心)。
还有一个可选的命名double volume参数,默认为1.0。它可以从0.0(静音)到1.0(最大),线性变化。
也可以使用setVolume方法随时更改音量。
控制
播放后,您可以通过暂停,停止和搜索命令控制音频。
暂停将暂停音频,但将光标保持在原位。随后调用播放将从此点恢复。
int result = await audioPlayer.pause();
停止将停止音频并重置光标。随后调用播放将从头开始恢复。
int result = await audioPlayer.stop();
最后,使用seek来跳过你的音频:
int result = await audioPlayer.seek(new Duration(milliseconds: 1200));
此外,您可以恢复(如播放,但没有新参数):
int result = await audioPlayer.resume();