Я пытался создать несколько аудиофайлов HLS вместе в iOS.Файлы зашифрованы ключом.Мне нужно получить ключ и сохранить его локально для автономного использования.Когда я загружаю небольшое количество (2 или 3 файла) файлов одновременно, это работает нормально, но если я начинаю загружать 10-15 файлов одновременно, большинство из них завершается с ошибкой -
Error Domain =AVFoundationErrorDomain Code = -11800 «Операция не может быть завершена» UserInfo = {NSLocalizedFailureReason = Произошла неизвестная ошибка (-17377), NSLocalizedDescription = Операция не может быть завершена}
Я получаю сообщение об ошибкеот NSURLErrorDomain
, но они редки.Ссылка подхода, который я использую для извлечения ключа для автономного использования, приведена ниже -
Воспроизведение автономного HLS с шифрованием AES-128 iOS
Любая помощь будетприветствуется.
класс AudioDownloader {
var productKey: String
var downloadUrl: URL
var downloadSession: AVAssetDownloadURLSession?
var fakeDownloadUrl: URL?
var downloadTask: AVAssetDownloadTask?
func downloadAudio() {
if downloadSession == nil {
let configuration = URLSessionConfiguration.background(withIdentifier: self.productKey)
downloadSession = AVAssetDownloadURLSession(configuration: configuration, assetDownloadDelegate: self, delegateQueue: OperationQueue.main)
configuration.shouldUseExtendedBackgroundIdleMode = true
configuration.httpShouldSetCookies = true
configuration.httpShouldUsePipelining = false
configuration.allowsCellularAccess = true
configuration.isDiscretionary = true
}
self.fakeDownloadUrl = self.convertToScheme(url: self.downloadUrl, scheme: "fakehttp")
let asset = AVURLAsset(url: self.fakeDownloadUrl!)
let loader = asset.resourceLoader
loader.setDelegate(self, queue: DispatchQueue(label: "dispatch2"))
self.downloadTask = downloadSession?.makeAssetDownloadTask(asset: asset, assetTitle: "assetTitle \(self.productKey)", assetArtworkData: nil, options: nil)!
self.downloadTask?.taskDescription = self.productKey
self.downloadTask?.resume()
}
}