【问题标题】:audioplayer playing inconsistent / weird audio (url mp3 link) result in flutteraudioplayer 播放不一致/奇怪的音频(url mp3 链接)导致颤动
【发布时间】:2020-09-28 10:52:02
【问题描述】:

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

我一直在使用:

  audioplayer: ^0.8.1
  audioplayer_web: ^0.7.1

从 https 链接播放音频。

它有一些奇怪的不一致效果的问题。 - 播放少量音频后,即使加载了新的 url,它也会继续播放相同的音频 - 播放几个音频后,声音很奇怪,就像某些部分与其他音频一样。

什么是一个好的音频播放器,可以接受 url 链接以产生一致的结果?

【问题讨论】:

  • 您的示例中提供的音频播放器效果很好并且具有很好的功能。根据您为我描述的内容,播放声音时似乎您没有关闭会话。似乎您正在堆叠导致奇怪声音的声音。然后你必须关闭实例。
  • 可能。如何关闭实例。我尝试在 AudioProvider audioProvider = new AudioProvider(url); 之前使用 audioProvider = null
  • 例如,它看起来像是在本地使用相同的audio.mp3文件。
  • 检查我的答案。在提供的链接上,您可以找到更新的示例。如果您无法使更新版本正常工作,我还为您链接了一个替代播放器。希望能帮助到你。 @Axil

标签: ios flutter audio https audio-player


【解决方案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-

希望对你有帮助。

【讨论】:

  • 非常感谢,将尝试审查。我在几个页面中打开音频播放器以播放不同的音频。不确定我是否应该打开一次实例并管理它或在播放后关闭实例。我更喜欢后者,但必须看看如何关闭实例?是否只是设置为 null 会关闭实例?
  • 我不确定它如何与 audioplayer 插件一起使用,但在我为您提供的另一个替代方案中,您有一个播放器实例,您将为它提供一个您可以决定播放的歌曲列表他们以后。我使用 Providers 管理实例以使其在多个页面上工作。如果您可以将答案标记为有用,这样其他人也可以更快地检查它,那就太好了。
  • 答案很简单。 audioPlayer.play(url);我所需要的只是将 url 放在那里,不需要使用 AudioProvider 来解码 url 并存储在本地。
猜你喜欢
  • 2016-07-12
  • 2023-03-22
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 2020-12-18
  • 2022-08-23
  • 2017-09-06
  • 1970-01-01
相关资源
最近更新 更多