音频播放器播放不一致/奇怪的音频(网址mp3链接)会导致抖动

时间:2020-06-09 09:43:21

标签: ios flutter audio https audio-player

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

我一直在使用:

  audioplayer: ^0.8.1
  audioplayer_web: ^0.7.1

播放来自https链接的音频。

该问题具有一些奇怪的不一致效果。 -播放少量音频后,即使加载了新网址,它仍会继续播放相同的音频 -播放很少的音频后,声音听起来很奇怪,就像用其他音频切掉了一部分一样。

什么是好的音频播放器可以接受颤振的URL链接,从而产生一致的结果?

1 个答案:

答案 0 :(得分:1)

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

然后必须关闭实例。即使文章已经过时(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-

希望有帮助。