Здравствуйте, я пытаюсь отправить пользовательский заголовок с запросом avplayer, поэтому я добавил пользовательскую схему, такую как
let asset = AVURLAsset(url: URL(string: "mycustomscheme://tungsten.aaplimg.com/VOD")!, options: nil)
, потому что этот запрос не выполняется, и вызывается метод делегата shouldWaitForLoadingOfRequestedResource
.
В shouldWaitForLoadingOfRequestedResource
я делаю пользовательский запрос и получаю данные с сервера, но avplayer все еще не воспроизводит файл.Вот мой код:
func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool {
resourceLoader.delegateQueue?.async {
var request: URLRequest? = loadingRequest.request
request?.url = self.url
// Add header
request?.setValue(HeadersForWS.DeviceOS, forHTTPHeaderField: HeadersForWS.DeviceType)
request?.setValue(Utility.getUserId(), forHTTPHeaderField:HeadersForWS.UserId )
if let aRequest = request {
let session = URLSession(configuration: .default, delegate: self, delegateQueue: nil)
session.dataTask(with: aRequest as URLRequest) { (data, response, error) in
guard let data = data else {
try? loadingRequest.finishLoading()
return
}
loadingRequest.dataRequest?.respond(with: data)
loadingRequest.finishLoading()
}.resume()
}
}
return true
}
Если я сохраняю полученные данные в файл sample.mp4 и извлекаю файл из приложения, а затем пытаюсь воспроизвести его, значит, воспроизведение означает, что я правильно получаю видеоданные.В чем может быть проблема здесь ??
Заранее спасибо