AVPlayer url 持续时间 Xcode 12

AVPlayer url duration Xcode 12

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

首先,AVAudioPlayer 可以正常工作,但无法与远程 urls 一起使用,所以我更改为 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 returns 下一个值:

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

CMTimeGetSeconds(audioAsset.duration)给出NaN。

有没有什么方法可以仅使用 AVPlayer 来获取远程 url 持续时间?

感谢您的宝贵时间。

我找到答案了!

经过大量调试和 links 尝试后,实际问题是 AVURLAsset 与 links 一起工作,可以直接在浏览器中播放。

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