【问题标题】:Getting Duration of Video/Audio in react Native for Progress Bar Impmentation在 React Native 中获取视频/音频的持续时间以进行进度条实现
【发布时间】:2019-04-18 18:41:25
【问题描述】:

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

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

2) 我需要能够从我的应用程序和从 一些研究,世博版似乎是不可能的。任何黑客 围绕这个???

3) 我如何使用音频来确定当前播放的曲目 组件完成了??

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

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

【问题讨论】:

    标签: react-native process expo audio-streaming react-native-sound


    【解决方案1】:

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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      • 2020-09-12
      • 2013-03-01
      • 2016-06-08
      • 2019-04-19
      • 1970-01-01
      相关资源
      最近更新 更多