ChangbaDevs / KTVHTTPCache

A powerful media cache framework.
MIT License
2.35k stars 435 forks source link

通过cacheCompleteFileURLWithURL 获取缓存地址失败,我实在AVPlayer的KVO里判断缓存时间和音乐时间一致的时候获取这个缓存地址,请问是我获取缓存的方法不对么? #117

Closed Mingriweiji-github closed 8 months ago

Mingriweiji-github commented 5 years ago

}else if keyPath == "loadedTimeRanges"{ //获取最新缓存区间 let loadTimeArray = playerItem.loadedTimeRanges let newTimeRange:CMTimeRange = loadTimeArray.first as! CMTimeRange let startSeconds = CMTimeGetSeconds(newTimeRange.start) let durationSeconds = CMTimeGetSeconds(newTimeRange.duration) let totalBuffer = startSeconds + durationSeconds print("总缓存时长\(totalBuffer),总时长\(durationSeconds) 已经播放时长\(self.nowTime ?? 0)") // if Float64(totalBuffer) > Float64(self.nowTime! + 20) {//缓存下面的3个视频} if Float64(totalBuffer) == Float64(durationSeconds) { self.downLoadURL = KTVHTTPCache.cacheCompleteFileURL(with: URL(string: (self.originalURL!))) print("out file music path:\(String(describing: self.downLoadURL))") } } }

Mingriweiji-github commented 5 years ago

luolong123 commented 3 years ago

解决了吗,我这边视频都播放缓存了几遍了,获取的还是空的

Mingriweiji-github commented 3 years ago

解决了吗,我这边视频都播放缓存了几遍了,获取的还是空的

KVO里拿到的缓存地址一般会快两秒,推测应该是缓存写入后的异步造成的时间差,你可以自己写缓存拿到缓存文件的地址相对比较准确。

luolong123 commented 3 years ago

解决了吗,我这边视频都播放缓存了几遍了,获取的还是空的

KVO里拿到的缓存地址一般会快两秒,推测应该是缓存写入后的异步造成的时间差,你可以自己写缓存拿到缓存文件的地址相对比较准确。

不知道啥意思啊,这个缓存的视频想拿到链接直接保存到相册的,但是拿到的链接一直是空的。

libobjc commented 8 months ago
  1. 当地址对应的视频资源被服务器释放后才会合成完整文件
  2. 资源占用中要保存可以用 KTVHCDataReader