2

我目前正在使用 expo 版本实现一个 react Native 流媒体应用程序,但我遇到了一些困难。请随时回答任何问题,或者只回答一个问题,以及您选择的任何其他问题。

1)在声音播放时实现进度条。为此,我需要获取歌曲的持续时间,然后我使用 Math.Floor 对进度条进行计算,但我目前无法获取当前播放曲目的持续时间。任何关于如何使用声音对象或视频组件来做到这一点的想法都会很棒。

2)我需要能够从我的应用程序和一些研究中播放背景声音,Expo 版本似乎是不可能的。有任何黑客攻击吗???

3) 如何判断当前使用音频组件播放的曲目是否完成??

4)我想要一种情况,当我的设备播放声音时,我可以停止设备中的任何其他声音。关于如何做到这一点的任何想法?

5) 对我使用 react Native 的流媒体应用的任何建议

4

1 回答 1

0

我可以帮你解决前三个问题。

1、获取音频使用总时长,playbackStatus.durationMillis获取当前音频使用时长playbackStatus.positionMillis

通过使用获取播放状态

export const createAudio = async () => {
    const source = require('../../../assets/audio/storiesAudio/storyAudio.mp3');
    const { sound } = await Audio.Sound.createAsync(source,
        {
         shouldPlay: false,
         isLooping: false,
        },
    onPlaybackStatusUpdate,
    );
    this.setState({playbackInstance: sound});
}

onPlaybackStatusUpdate = async (playbackStatus) => {
    await this.setState({ playbackStatus });
    if (this.state.playbackStatus.isPlaying) {
    }
  }

将毫秒转换为分钟和秒

   export const millisToMinutesAndSeconds = (millis) => {
       let minutes = Math.floor(millis / 60000);
       let seconds = ((millis % 60000) / 1000).toFixed(0);
       return (seconds == 60 ? (minutes+1) + ":00" : minutes + ":" + (seconds < 10 ? "0" : 
       "") + seconds);
   }

2、让音频在后台播放

const { sound } = await Audio.Sound.createAsync(
    sourceAudioFile,
    {
        shouldPlay: true, //To play the audio when the component is loadded
        isLooping: false,
    },
    onPlaybackStatusUpdate,
);

3,要检查当前音轨是否播放完毕,请使用playbackStatus.didJustFinish

于 2019-12-03T11:23:54.783 回答