【问题标题】:Flutter Audioplayers delayFlutter Audioplayers 延迟
【发布时间】: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');
     }

提前非常感谢您

【问题讨论】:

  • 你有什么解决办法吗?
  • 我的情况也一样。

标签: flutter delay audio-player


【解决方案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 方法将音频设置为特定位置。此模式在网络上也不可用。

    希望有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-05
      • 2023-01-22
      • 2020-04-08
      • 2020-10-12
      • 2021-06-13
      • 2021-05-22
      • 2022-11-07
      相关资源
      最近更新 更多