2017-03-03 86 views
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大小的答案。提前致謝。

回答

0

試試這個:

let att = try FileManager.default.attributesOfItem(atPath: assetURL.path) 
+1

嘿,我居然得到的屬性然而現在,文件大小似乎完全錯誤的。我下載了兩個文件,並且它們都返回204,因爲「let fileSize = attr [FileAttributeKey.size] as!UInt64」首先它們都不應該那麼小,它們都是非常不同的尺寸。 – NickDK

+0

同樣的問題在這裏。 –

+0

我曾經有同樣的問題,這就是爲什麼我(一般)使用這個要點的函數來獲得適當的文件大小估計:https://gist.github.com/blender/a75f589e6bd86aa2121618155cbdf827當使用'allocatedSizeOfDirectory(at :) '用你的assetURL它應該可以工作。我獲得了1435750400字節,這正是手機的存儲估計值(1.44Gb) – fruitcoder