AVAudioPlayer

最近有个播放wav文件的需求
很简单的使用了AVAudioPlayer
然后发现总时长获取一直有问题
换了一个豆瓣的开源框架发现获取的时长还是有问题

AVURLAsset* audioAsset = [AVURLAsset URLAssetWithURL:audioFileURL options:nil];
CMTime audioDuration = audioAsset.duration;
float audioDurationSeconds = CMTimeGetSeconds(audioDuration);

  audioPlayer.duration()

ok

!上面两种方法获取时长都不行

下载下来 用苹果的QuickTimer Player打开
获取时间还是有问题
以为是wav文件有问题
但是安卓获取时长没问题
改后缀名为.mp3
用VLC播放器打开
获取的时长没有问题
猜测是文件名的原因

          DispatchQueue.global().async {[weak self] in
            if self?.urlString == nil{
                MainHUD.showErrorWithStatus("资源加载失败")
                return
            }
            let url = URL(string: (self?.urlString!)!)

           let fileName = (self?.urlString?.md5)!+".mp3"

           let filePath = fileName.cachesDir()
           
           if FileManager.default.fileExists(atPath: filePath) != true{
              try? data?.write(to: URL(fileURLWithPath: filePath), options: [.atomic])
          }
          do{
                
                self?.audioPlay = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: filePath))
                
                DispatchQueue.main.async(execute: {
                    self?.audioPlay?.start()
                    self?.timer?.fireDate = NSDate.distantPast
                })
            }catch{
                MainHUD.showErrorWithStatus("资源加载失败")
                self?.back()
            }

保存到本地为mp3文件来获取时长
还有问题

没办法 google扒贴
在发现一个很不错的开源三方 只不过不更新了 支持MRC
·AudioStreamer

你可能感兴趣的:(AVAudioPlayer)