Expo-AV 陆续播放音频

问题描述 投票:0回答:2

我正在使用 Expo-AV,我正在尝试找到一种简单的方法来连续播放 3 个音频文件。

我在网上找不到任何东西,有人有Expo-AV的经验吗?

非常感谢。

javascript react-native expo expo-av
2个回答
2
投票

expo-av 的文档显示了一个从媒体播放列表中播放的示例。这是一个有点啰嗦的例子,因为它涵盖了很多情况,但它做了你想要它做的事情。

这一行显示了它们如何初始化

Audio.Sound.createAsync
- 第三个参数是在播放状态更改时运行的回调。在该回调中,您可以检查音频是否已完成播放,如果已完成,则播放下一个声音。该示例执行此操作here


0
投票

这就是我实现这一目标的方法。

const sounds = [];
for (const note of notes) {
  const sound = new Audio.Sound();
  await sound.loadAsync(soundFile);
  sounds.push(sound);
}

for (const sound of sounds) {
  await sound.setStatusAsync({ shouldPlay: true });

  await new Promise((resolve, reject) => {
    sound.setOnPlaybackStatusUpdate((status: AVPlaybackStatus) => {
      if (status.positionMillis > status.durationMillis * 0.8) {
        console.log('Done playing');

        resolve(true);
      }
    });
  });
}

请注意,在我的场景中,当播放完成 80% 时,我将播放标记为已完成。您可以调整值或也使用

positionMillis == durationMillis

status
中还有一些其他有用的值。这是在我的场景中最有效的方法。但看看
status
对象中的其他值。

© www.soinside.com 2019 - 2024. All rights reserved.