我使用react-native-sound播放循环音频文件(完全是mp3格式)。问题是循环之间存在差距。 这是我的代码示例:
loadSound = (s) => {
let sound = new Sound(s, Sound.MAIN_BUNDLE, (error) => {
if (error) {
console.log('failed to load the sound', error);
return;
} else {
sound.setNumberOfLoops(-1);
}
});
return sound;
}
let sound = loadSound('campfire.mp3')
sound.play();
有没有解决方法如何让循环听起来流畅?
实际上,这个issue在github上是开放的,但还没有解决方案......
答案 0 :(得分:0)
由于Android MediaPlayer(在后台使用)中的错误,因此循环之间存在间隙。 为了解决该问题,我创建了react-native-audio-exoplayer模块,该模块的功能与react-native-sound相同,但是它基于Android ExoPlayer。该API有所不同,但更加健壮和现代(请看docs)。 稍后,如果我有时间,我将发出pull请求,以在react-native-sound中引入ExoPlayer。 但是现在可以随意使用react-native-audio-exoplayer作为一个很好的解决方法(目前仅在Android上实现)。
答案 1 :(得分:0)
使用以下版本的 react-native-sounds 修复了差距问题。
https://github.com/Menardi/react-native-sound-gapless.git
来自 git repo 的 README:
<块引用>简单地将轨道设置为在 Android 上循环并不会使其无间隙, 而是在重新开始赛道之前留下短暂的沉默。然而, Android 确实支持不同版本之间的无缝播放 轨道。所以,这个分叉基本上两次加载相同的轨道,并得到 Android 为我们处理无缝播放。缺点是 您将使用比以前更多的内存,因为曲目已加载 两次。在大多数情况下,这无关紧要,但您可以分析您的 如果您担心,请在 Android Studio 中使用应用程序。
答案 2 :(得分:-1)
我在循环声音时遇到同样的问题。我要做的就是在声音播放完成后调用相同的播放声音功能。希望对您有帮助。
@Injectable({
providedIn: 'root',
})