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-
希望对您有所帮助。
按照以下说明进行操作: 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-
希望对您有所帮助。