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,它不会'不知道持续时间。猜猜这是关于如何在两者上保存元数据的。
我正在尝试使用 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,它不会'不知道持续时间。猜猜这是关于如何在两者上保存元数据的。