美文网首页
AVAudioPlayer

AVAudioPlayer

作者: __Objc | 来源:发表于2017-02-17 16:16 被阅读19次

    最近有个播放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

          本文链接:https://www.haomeiwen.com/subject/dlllwttx.html