Flutter Audioplayers 延迟
Posted
技术标签:
【中文标题】Flutter Audioplayers 延迟【英文标题】:Flutter Audioplayers delay 【发布时间】:2020-04-23 21:39:38 【问题描述】:我正在使用 Flutter 框架编写一个小游戏。 我正在为 Sounds 使用音频播放器。
它可以像这样正常工作,例如每秒调用 2 次。 但是,当我在下一秒再次调用它超过 5 次时,声音就像延迟一样,然后在大约一秒钟后,所有声音同时播放 :) 听起来很奇怪。
我还在我的 iPhone 上测试了来自 github 的音频播放器示例。以低频重复声音是可以的,但是当我在某个时刻尽可能快地重复单击按钮时,它会出现一些延迟,并且会发生同样的事情。
有什么方法可以在播放下一个声音之前停止上一个声音,或者这不可能吗?
或者还有其他想法如何处理声音?
我就是这样使用它的:
AudioCache upgradeSound = new AudioCache();
void playUpgradeSound()
_playUpgradeSound(upgradeSound);
void _playUpgradeSound(AudioCache ac) async
await ac.play('audio/upgr.mp3');
提前非常感谢您
【问题讨论】:
你有什么解决办法吗? 我的情况也一样。 【参考方案1】:我通过单例类解决了类似的问题,第一次播放后我可以得到状态,我可以停止以前的播放。
class Audio
static final playerCache = AudioCache();
static AudioPlayer audioPlayer;
static void play(String audioName) async
audioPlayer = await playerCache.play('$audioName.mp3');
static void stop()
audioPlayer.stop();
...
child: IconButton(
onPressed: ()
try
if (Audio.audioPlayer.state ==
AudioPlayerState.PLAYING)
Audio.stop();
else
Audio.play('bid');
catch (e)
Audio.play('bid');
,
...
【讨论】:
【参考方案2】:在自己的文档中有一行代码。
要使用低延迟 API,更好地处理游戏声音,请使用:
AudioPlayer audioPlayer = AudioPlayer(mode: PlayerMode.LOW_LATENCY);
在这种模式下,后端不会触发任何持续时间或位置更新。此外,无法使用 seek 方法将音频设置为特定位置。此模式在网络上也不可用。
希望有用。
【讨论】:
以上是关于Flutter Audioplayers 延迟的主要内容,如果未能解决你的问题,请参考以下文章
[Flutter] 音频播放插件 audioplayers 的一个路径坑
flutter -- 音频播放 audioplayers - 简书