В iOS 10 Apple добавила автономный HLS. В документации они упоминают:
Важно: загруженные ресурсы HLS хранятся на диске в формате закрытого пакета. Этот формат пакета может меняться со временем, и разработчикам не следует пытаться напрямую обращаться к файлам или хранить их в пакете, а вместо этого следует использовать AVFoundation и другие API-интерфейсы iOS для взаимодействия со загруженными активами.
Оказывается, доступ к информации об этих файлах ограничен. Я пытаюсь найти размер сохраненного файла. Вот что я делаю. После завершения загрузки я сохраняю относительный путь
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 для получения размера файла с помощью FileManager не работают для них, равно как и ответы для получения размера загруженного AVAsset. Заранее спасибо.