3
在iOS 10中,Apple添加了离线HLS。在文档中,他们提到:iOS离线HLS文件大小
重要说明:下载的HLS资产以专用 捆绑格式存储在磁盘上。此捆绑格式可能随时间而改变,开发人员不应尝试直接访问或存储捆绑软件包 中的文件,而应使用AVFoundation和其他iOS API与 交互下载资产。
看起来对这些文件的信息访问是有限的。我试图找到存储文件的大小。这是我做的。下载完成后,我保存的相对路径
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资产的大小。它看起来用SO获取文件大小的其他答案不适用于这些,也不能做出获取已加载AVAsset大小的答案。提前致谢。
嘿,我居然得到的属性然而现在,文件大小似乎完全错误的。我下载了两个文件,并且它们都返回204,因为“let fileSize = attr [FileAttributeKey.size] as!UInt64”首先它们都不应该那么小,它们都是非常不同的尺寸。 – NickDK
同样的问题在这里。 –
我曾经有同样的问题,这就是为什么我(一般)使用这个要点的函数来获得适当的文件大小估计:https://gist.github.com/blender/a75f589e6bd86aa2121618155cbdf827当使用'allocatedSizeOfDirectory(at :) '用你的assetURL它应该可以工作。我获得了1435750400字节,这正是手机的存储估计值(1.44Gb) – fruitcoder