在iOS 10中,Apple添加了离线HLS.在文档中,他们提到:
Important: Downloaded HLS assets are stored on disk in a private
bundle format. This bundle format may change over time,and developers
should not attempt to access or store files within the bundle
directly,but should instead use AVFoundation and other iOS APIs to
interact with downloaded assets.
看来对这些文件的信息访问是有限的.我正在尝试查找存储文件的大小.这就是我的工作.下载完成后,我保存相对路径
func urlSession(_ session: URLSession,assetDownloadTask: AVAssetDownloadTask,didFinishDownloadingTo location: URL) { //Save path video?.downloadPath = location.relativePath }
之后我重建文件路径如下
if let assetPath = workout.downloadPath { let baseURL = URL(fileURLWithPath: NSHomeDirectory()) let assetURL = baseURL.appendingPathComponent(assetPath)
这有效:
try FileManager.default.removeItem(at: assetURL)
let att = try FileManager.default.attributesOfItem(atPath: assetURL.absoluteString)
我可以按如下方式加载视频资源并使用以下命令离线播放:
let avAsset = AVURLAsset(url: assetURL)
但这会给我一个空数组:
let tracks = avAsset.tracks(withMediaType: AVMediaTypeVideo)
我再次尝试获取离线HLS资产的文件大小.看来,使用FileManager获取文件大小的SO上的其他答案对于这些并不起作用,也没有为获取加载的AVAsset的大小做出答案.提前致谢.
解决方法
试试这个:
let att = try FileManager.default.attributesOfItem(atPath: assetURL.path)