AVPlayer url持续时间Xcode 12



我正在尝试使用AVPlayer、iOS 13.7和Xcode 12.0获取.mp3 url的持续时间。

首先,AVAudioPlayer可以使用,但它不能使用远程URL,所以我改为AVPlayer,这样我就可以使用来自API的链接。

这是我的获取持续时间方法:

private func getDuration() -> TimeInterval? {
guard let url = url else {
return nil
}

let audioAsset = AVURLAsset(url: url, options: nil)
let duration = CMTimeGetSeconds(audioAsset.duration)
return duration
}

在调试中,url是正确的,下载.mp3文件。audioAsset.duration返回下一个值:

CMTime
- value : 0
- timescale : 0
▿ flags : CMTimeFlags
- rawValue : 17
- epoch : 0

CCD_ 2产生NaN。

有没有任何方法可以只使用AVPlayer获得远程url持续时间?

谢谢你抽出时间。

我找到了答案!

经过大量调试和链接尝试,实际问题是AVURLAsset使用的链接可以直接播放到浏览器中。

例如,对于这样的链接:https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3,您将获得持续时间,但对于结尾没有扩展名的可下载.mp3或.m4a,它将无法获得持续时间。我猜这是关于元数据是如何保存在两者上的。

最新更新