Я пытаюсь реализовать онлайн и офлайн воспроизведение 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-адрес (строка: ""), но я все еще получаю вышеуказанную ошибку