In iOS 10 hinzugefügt Apple offline HLS. In der Dokumentation erwähnen sie:iOS offline HLS-Dateigröße
Wichtig: Heruntergeladene HLS-Assets werden auf der Festplatte in einem privaten Bundle-Format gespeichert. Dieses Bundleformat kann sich im Laufe der Zeit ändern, und Entwickler sollten nicht direkt versuchen, auf Dateien innerhalb des Bundles zuzugreifen oder sie zu speichern. Stattdessen sollten AVFoundation und andere iOS-APIs mit heruntergeladenen Assets interagieren.
Es scheint, dass der Zugriff auf Informationen über diese Dateien begrenzt ist. Ich versuche die Größe der gespeicherten Datei zu finden. Hier ist was ich tue. Nach dem Download beendet ist, speichere ich den relativen Pfad
func urlSession(_ session: URLSession, assetDownloadTask: AVAssetDownloadTask, didFinishDownloadingTo location: URL) {
//Save path
video?.downloadPath = location.relativePath
}
später habe ich den Dateipfad rekonstruieren, wie
if let assetPath = workout.downloadPath {
let baseURL = URL(fileURLWithPath: NSHomeDirectory())
let assetURL = baseURL.appendingPathComponent(assetPath)
folgt Dies funktioniert: Dieses
try FileManager.default.removeItem(at: assetURL)
nicht und gibt einen Fehler aus, dass die Datei existiert nicht:
let att = try FileManager.default.attributesOfItem(atPath: assetURL.absoluteString)
Ich kann im Video-Asset laden, wie und es folgt spielen offline mit:
let avAsset = AVURLAsset(url: assetURL)
Aber das gibt mir ein leeres Array:
let tracks = avAsset.tracks(withMediaType: AVMediaTypeVideo)
Wieder versuche ich nur die Datei zu erhalten Größe eines Offline-HLS-Assets. Es scheint, dass die anderen Antworten auf SO, um eine Dateigröße mit FileManager zu erhalten, nicht für diese arbeiten, noch tun die Antworten für die Größe eines geladenen AVAsset. Danke im Voraus.
Hey, jetzt aber ich tatsächlich Attribute, die Dateigröße völlig falsch zu sein scheint. Ich habe zwei Dateien heruntergeladen und beide geben 204 zurück für "let fileSize = attr [FileAttributeKey.size] as! UInt64" Erstens sollte keiner von ihnen so klein sein und sie sind beide sehr unterschiedlich groß. – NickDK
Gleiches Problem hier. –
Ich hatte das gleiche Problem, weshalb ich (im Allgemeinen) die Funktion aus diesem Gist nutze, um richtige Schätzungen der Dateigröße zu erhalten: https://gist.github.com/blender/a75f589e6bd86aa2121618155cbdf827 Wenn Sie das 'allocatedSizeOfDirectory (at :) verwenden 'Mit Ihrem AssetURL sollte es funktionieren. Ich habe 1435750400 Bytes, was genau das ist, was der Speicher des Telefons für dieses Asset schätzt (1.44Gb) – fruitcoder