2017-03-03 16 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資産のサイズ。 FileManagerを使用してファイルサイズを取得するためのSOのその他の答えは、これらのためには機能しません。また、ロードされたAVAssetのサイズを取得するための答えもありません。前もって感謝します。

答えて

0

代わりにこれを試してみてください:

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

ねえ、私は実際に取得した属性になりましたが、ファイルサイズが完全に間違っているようです。私は2つのファイルをダウンロードし、両方とも「let fileSize = attr [FileAttributeKey.size] as!UInt64」のように204を返します。 – NickDK

+0

同じ問題があります。 –

+0

私は同じ問題を抱えていました。これは、一般的に、この要点の関数を使って適切なファイルサイズを推定しています。https://gist.github.com/blender/a75f589e6bd86aa2121618155cbdf827 'allocatedSizeOfDirectory(at :) 'あなたのassetURLでうまくいくはずです。私は1435750400バイトを取得しました。これは、この資産(1.44Gb)の電話のストレージ見積もりとまったく同じです – fruitcoder

関連する問題