Не удается загрузить несколько аудиофайлов HLS одновременно - PullRequest
1 голос
/ 05 апреля 2019

Я пытался создать несколько аудиофайлов 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()

    }

}
...