AVAudioPlayer 获取音频时长不准确的解决办法

  1. AVAudioPlayer 通过播放音频发现AVAudioPlayer的duration属性会变,当快播放到最后的时候duration属性才是准确的,如下图:


    image.png

所以解决办法就是将AVAudioPlayer的currentTime设置到靠近最后位置,然后duration属性就是正常了

self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:filePath error:&error];
    if (error) {
        NSLog(@"创建录音播放对象发生错误,错误信息是:%@",error.localizedDescription);
    }else {
        self.audioPlayer.delegate = self;
        self.audioPlayer.meteringEnabled = YES;
        self.audioPlayer.numberOfLoops = 0;
        [self.audioPlayer prepareToPlay];
        
        // 获取准确的时长
        NSLog(@"1.-----%f",self.audioPlayer.duration);
        _audioPlayer.currentTime = self.audioPlayer.duration;
        NSLog(@"2.-----%f",self.audioPlayer.duration);
        _audioPlayer.currentTime = 0;
        NSLog(@"3.-----%f",self.audioPlayer.duration);
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容