Хранить данные ключа CKC AVURLAsset без воспроизведения видео - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу программно вызвать

func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool

или AVURLAsset от делегата AVPlayer, AVAssetResourceLoaderDelegate, чтобы я мог обналичить данные CKC, чтобы я мог играть в расшифрованном видесодержание в автономном режиме.

Я выполнил шаги https://developer.apple.com/videos/play/wwdc2016/504/

Если я сыграю AVURLAsset, получу наличные данные ключа CKC, а затем закрою Интернет и снова воспроизведу AVURLAsset, это сработает иЯ могу посмотреть видео в автономном режиме.

Но мне нужно вызвать функцию resourseLoader без воспроизведения видео.

Причина, по которой я не могу выполнить эти шаги, заключается в том, что для получения данных ckc мне нужен loadingRequestобъект из функции делегата resourceLoader.

Есть ли способ выполнить это без вызова метода воспроизведения и сброса плеера при сохранении ключей?

1 Ответ

0 голосов
/ 04 апреля 2019

Может быть, поздно для вас, у меня была та же проблема.Попробуйте установить preloadElitableContentKeys в true в загрузчик ресурсов при загрузке.

let asset = AVURLAsset(url: url)        
// ADD THIS  LINE TO PRELOAD BEFORE PLAYING
asset.resourceLoader.preloadsEligibleContentKeys = true
asset.resourceLoader.setDelegate(self, queue: DispatchQueue.main)

let downloadTask = downloadSession?.makeAssetDownloadTask(asset: asset, assetTitle: "Asset title", assetArtworkData: nil, options: nil)
...