flutter插件audioplayers


一个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();