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