dart 如何在特定时间播放和停止音频?

hpxqektj  于 11个月前  发布在  其他
关注(0)|答案(3)|浏览(79)

我有一个使用just_audio插件的音频播放器应用程序。如何在特定时间播放和停止音频?
例如,我有一个20分钟长的音频文件。我希望当我按下播放按钮时,音频将在第5分钟运行,并在第8分钟停止。
下面是我的代码:

void _setInitialPlaylist() async {
    final myAudio1 = Uri.parse("asset:///audio/myAudio.mp3"); // I want this audio play at 00.05.00, stop at 00.08.00
    final myAudio2 = Uri.parse("asset:///audio/myAudio.mp3"); // I want this audio play at 00.09.00, stop at 00.12.00
    final myAudio3 = Uri.parse("asset:///audio/myAudio.mp3"); // I want this audio play at 00.15.00, stop at 00.19.00
    _playlist = ConcatenatingAudioSource(children: [
      AudioSource.uri(myAudio1, tag: 'myAudio1'),
      AudioSource.uri(myAudio2, tag: 'myAudio2'),
      AudioSource.uri(myAudio3, tag: 'myAudio3'),
    ]);
    await _audioPlayer.setAudioSource(_playlist);
  }

字符串

i2loujxw

i2loujxw1#

从文档中:

await player.setClip(start: Duration(seconds: 10), end: Duration(seconds: 20));
await player.play(); // Waits until the clip has finished playing

字符串
在你的情况下,它变成了:

await player.setClip(start: Duration(minutes: 5), end: Duration(minutes: 8));
await player.play();

5vf7fwbs

5vf7fwbs2#

您还可以使用seek方法查找所需的时间,然后启动计时器并在计时器结束时暂停。

int result = await audioPlayer.seek(Duration(minutes: 5));
Timer(Duration(minutes: 3), () {
    int result = await audioPlayer.pause();
});

字符串

oxcyiej7

oxcyiej73#

对于暂停,
_audioPlayer.pause()
对于在特定时间启动音频,
_audioPlayer.seek(Duration(milliseconds:timeInMilliseconds));
_audioPlayer.play();
还有一件事我想添加_audioPlayer.resume是不工作在较新的版本,所以下面的代码可以用于恢复,
_audioPlayer.seek(Duration(milliseconds:player.position.inMilliseconds));
_audioPlayer.play();
我正面临着“恢复”的问题,也许这可以帮助别人在未来。

相关问题