Автономное воспроизведение HLS iOS - ошибка неподдерживаемого URL - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь реализовать онлайн и офлайн воспроизведение HLS на iOS. Я могу успешно воспроизводить видео в онлайн-режиме, ниже приведен код, используемый для воспроизведения потока HLS в онлайн-режиме, и я использую VuDRM в качестве поставщика DRM

private func playOnline()
{
    if self.assetDownloadTask == nil {
        if #available(iOS 10.0, *) {
            if (assetDetailsModel.assetURL != nil){
                let asset = AVURLAsset(url: assetDetailsModel.assetURL!)
                self.vudrm = vudrmFairPlay(asset: asset, contentID: assetDetailsModel.contentID, token: assetDetailsModel.token)
                assetDownloadTask = nil
                assetDownloadTask = assetUrlSession.makeAssetDownloadTask(asset: asset, assetTitle: assetDetailsModel.contentID, assetArtworkData: nil, options: nil)!
                assetDownloadTask.taskDescription = assetDetailsModel.contentID
                //self.getTasks()
            }

        }
    }

    guard let assetDownloadTask = self.assetDownloadTask else {
        return }
    self.customPlayer.play(asset: assetDownloadTask.urlAsset)
}

И это часть кода Я использую для воспроизведения видео в автономном режиме

private func playOffline()
{
    let baseURL = URL(fileURLWithPath: NSHomeDirectory())
    let localPath = localplaybackURLsWithContentIdDict[assetDetailsModel.contentID]!
    let offlineAssetURL = baseURL.appendingPathComponent(localPath)

    let offlineAsset = AVURLAsset(url: offlineAssetURL)
    if let cache = offlineAsset.assetCache, cache.isPlayableOffline {
        // Set up player item and player and begin playback
        print("is playable offline true")
        self.customPlayer.play(asset: offlineAsset)
    } else {
        // Present Error: No playable version of this asset exists offline
        print("Error: No playable version of this asset exists offline")
    }
}

После завершения загрузки указанного видео и получения обратного вызова в методе делегата URLSession didFinishDownloading, чтобы использовать относительный путь местоположения и сохранить тот, который используется позже. в методе playOffline. Я экспортировал контейнер приложения и обнаружил, что ресурс правильно загружен, и я также использовал FileManager.default.fileExists (atPath: "StorePath"), и он возвращает true. В методе playOffline я также проверяю свойство isPlayableOffline в offlineAsset.assetCache, и оно возвращает true. Но как только он подается на AVPlayer, проигрыватель возвращает следующую ошибку

NSURLConnection завершился с ошибкой - код -1002

Может кто-нибудь помочь мне в том, что идет не так?

При создании автономного URL-адреса я также использую URL-адрес этого метода (fileURLWithPath: ""), а не URL-адрес (строка: ""), но я все еще получаю вышеуказанную ошибку

...