AVPlayer url持续时间Xcode 12 [关闭]
Posted
技术标签:
【中文标题】AVPlayer url持续时间Xcode 12 [关闭]【英文标题】:AVPlayer url duration Xcode 12 [closed] 【发布时间】:2020-11-26 09:51:08 【问题描述】:我正在尝试使用 AVPlayer、ios 13.7 和 Xcode 12.0 获取 .mp3 网址的持续时间。
首先,使用 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
和CMTimeGetSeconds(audioAsset.duration)
给出NaN。
有什么方法可以只使用 AVPlayer 来获取远程 url 的持续时间吗?
感谢您的宝贵时间。
【问题讨论】:
您没有将AVURLAsset
对象提供给AVPlayer
。
这个持续时间在给 AVPlayer 的模型中。播放器播放url,但时长始终为nan。
【参考方案1】:
我找到了答案!
经过大量调试和链接尝试,实际问题是 AVURLAsset 与可以直接在浏览器中播放的链接一起工作。
例如,对于这样的链接:https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3
,您将获得持续时间,但对于末尾没有扩展名的可下载 .mp3 或 .m4a 将不会获得持续时间。猜猜这是关于元数据如何保存在它们上面的。
【讨论】:
以上是关于AVPlayer url持续时间Xcode 12 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7中的iOS 7 AVPlayer AVPlayerItem持续时间不正确
AVPlayer 的 addPeriodicTimeObserverForInterval 中的 CMTime:回调永远不会达到项目的持续时间
使用 MPRemoteCommandCenter 为 AVPlayer 和 AVAudioPlayer 添加当前时间和持续时间的位置