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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容