iOS离线HLS文件大小
在iOS 10中,Apple添加了离线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)
我可以按如下方式加载video资源并通过以下方式离线播放:
let avAsset = AVURLAsset(url: assetURL)
但这会给我一个空数组:
let tracks = avAsset.tracks(withMediaType: AVMediaTypeVideo)
我再次尝试获取离线HLS资产的文件大小。 看来,使用FileManager获取文件大小的SO上的其他答案对这些不起作用,也没有为获取加载的AVAsset的大小做出答案。 提前致谢。
试试这个:
let att = try FileManager.default.attributesOfItem(atPath: assetURL.path)
唯一的方法是将存储下载内容的文件夹中的所有文件大小相加。
- (NSUInteger)hlsFileSize:(NSURL *)fileURL { NSUInteger size = 0; let enumerator = [NSFileManager.defaultManager enumeratorAtURL:fileURL includingPropertiesForKeys:nil options:0 errorHandler:nil]; for (NSURL *url in enumerator) { NSError *error = nil; // Get values let resourceValues = [url resourceValuesForKeys:@[NSURLIsRegularFileKey, NSURLFileAllocatedSizeKey, NSURLNameKey] error:&error]; // Skip unregular files let isRegularFile = [resourceValues[NSURLIsRegularFileKey] boolValue]; if (!isRegularFile) { continue; } let fileAllocatedSize = [resourceValues[NSURLFileAllocatedSizeKey] unsignedLongLongValue]; size += fileAllocatedSize; } return size; }
- 目标C – SecItemAdd有错误:EXC_BAD_ACCESS(第一次)和errSecDuplicateItem(第二次)
- iOS初学者代表
- Cordova将文件types注册为“打开”列表
- 如何用NSUserDefaults保存UIColor?
- PhoneGap iOS无法使用HTML 5播放video
- 最简单的测量两个短audio的相似度的algorithm
- 如何在macOS上编写没有界面构建器的NSViewController。
- 在objective-c中,如果extern IP位于自己的子网范围内,则清理解决scheme以进行查找
- 在iOS7中检测MKOverlay的触摸(MKOverlayRenderer)