audioplayer 播放不一致/奇怪的音频 (url mp3 link) 导致抖动

audioplayer playing inconsistent / weird audio (url mp3 link) result in flutter

按照以下说明进行操作: https://codingwithjoe.com/playing-audio-from-the-web-and-http/(使用他的示例和 AudioProvider class)

我一直在用:

  audioplayer: ^0.8.1
  audioplayer_web: ^0.7.1

播放来自 https link 的音频。

这个问题有一些奇怪的不一致效果。 - 播放少量音频后,即使加载了新的 url,它仍会继续播放相同的音频 - 播放了几段音频后,声音很奇怪,好像有些部分被其他音频剪切了。

什么是接受 url link 抖动并产生一致结果的好音频播放器?

您的示例中提供的音频播放器效果很好并且具有很好的功能。从你为我描述的内容来看,你似乎在播放声音时没有关闭会话。看起来你正在堆叠导致奇怪声音的声音。

然后你必须关闭实例。尽管该文章已过时(2018 年 3 月),但音频播放器已进一步发展。在这里查看他们的官方指南:

https://pub.dev/packages/audioplayer

这是版本 audioplayer 0.8.1,不是 3.0 或其他版本..

来自文档的示例:

Instantiate an AudioPlayer instance
//...
AudioPlayer audioPlugin = AudioPlayer();
//...

播放器控制:

audioPlayer.play(url);

audioPlayer.pause();

audioPlayer.stop();

状态和当前职位:

//...
_positionSubscription = audioPlayer.onAudioPositionChanged.listen(
  (p) => setState(() => position = p)
);

_audioPlayerStateSubscription = audioPlayer.onPlayerStateChanged.listen((s) {
  if (s == AudioPlayerState.PLAYING) {
    setState(() => duration = audioPlayer.duration);
  } else if (s == AudioPlayerState.STOPPED) {
    onComplete();
    setState(() {
      position = duration;
    });
  }
}, onError: (msg) {
  setState(() {
    playerState = PlayerState.stopped;
    duration = new Duration(seconds: 0);
    position = new Duration(seconds: 0);
  });
});

就像我说的,大多数音频插件都是 运行 具有实例的单例模式。为了提供越来越奇怪的效果,你必须在同一个实例中加载下一首歌曲,不要打开另一个新实例,你不会得到任何奇怪的效果。

如果您想切换到不同的音频播放器,我在应用程序项目中使用的另一个很棒的播放器如下:

https://pub.dev/packages/audio_manager#-readme-tab-

希望对您有所帮助。