Posts

Post not yet marked as solved
1 Replies
961 Views
Trying to download an encrypted HLS stream we faced the following issue: When we start a new download, calling resume() function of AVAssetDownloadTask, the download process gets stuck (not every time) and neither of urlSession(_:assetDownloadTask:didFinishDownloadingTo:) or urlSession(_:task:didCompleteWithError:) delegate functions (AVAssetDownloadDelegate) are getting called. There are cases where not even the urlSession(_:assetDownloadTask:didLoad:totalTimeRangesLoaded:timeRangeExpectedToLoad:) delegate function is getting called. Any suggestions on how to troubleshoot?
Posted
by gcharita.
Last updated
.
Post not yet marked as solved
2 Replies
522 Views
Trying to download an encrypted HLS stream we faced the following behaviour: Setting requestCachePolicy and/or urlCache properties of URLSessionConfiguration that used to create the AVAssetDownloadURLSession seems to have no effect at all. In our application the user can add multiple encrypted HLS streams at a queue. Before adding them in queue, we make sure that the manifest gets cached using the shared URLSession like this: URLSession.shared.configuration.urlCache = .shared let task = URLSession.shared.dataTask(with: media.url) { _, _, _ in self.addMediaToQueue(media) } task.resume() and we setup our AVAssetDownloadURLSession like this: // Create the configuration for the AVAssetDownloadURLSession. let backgroundConfiguration = URLSessionConfiguration.background(withIdentifier: "AAPL-Identifier") backgroundConfiguration.urlCache = .shared backgroundConfiguration.requestCachePolicy = .returnCacheDataElseLoad // Create the AVAssetDownloadURLSession using the configuration. assetDownloadURLSession = AVAssetDownloadURLSession(     configuration: backgroundConfiguration,     assetDownloadDelegate: self,     delegateQueue: .main ) Here is an example of the caching headers that we use: Last-Modified: Thu, 11 Mar 2021 02:23:57 GMT Cache-Control: max-age=604800 This is important for us since our manifest url is signed and expires after 12 hours. Example of manifest URL: https://example.host.gr/v1/791/888/773923397316/773923397316.ism/.m3u8[…]~hmac=ee37a750b8238745b5c8cf153ebcd0b693dd5d83 If the client followed the HTTP cache policy and didn’t request the .m3u8 manifest file over the internet, the download would start, despite the 12 hours limit. Is this the intended behaviour of the download process or some kind of an issue? Could you suggest a workaround?
Posted
by gcharita.
Last updated
.
Post not yet marked as solved
0 Replies
547 Views
Trying to download an encrypted HLS stream we faced the following behaviour: Setting requestCachePolicy and/or urlCache properties of URLSessionConfiguration that used to create the AVAssetDownloadURLSession seems to have no effect at all. This is important for as since we need the HTTP caching policy to be applied for the .m3u8 manifest file of the stream. Is this the intended behaviour of the download process or some kind of an issue?
Posted
by gcharita.
Last updated
.