在不播放视频的情况下存储 AVURLAsset 的 ckc 密钥数据
Store ckc key data of AVURLAsset without play video
我想以编程方式调用
func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool
来自 AVPlayer
、AVAssetResourceLoaderDelegate
的代表的 AVURLAsset
,这样我就可以兑现 ckc 数据,以便我可以离线播放解密的内容。
我按照 https://developer.apple.com/videos/play/wwdc2016/504/
的步骤
如果我播放 AVURLAsset
兑现 ckc 密钥数据,然后关闭互联网并再次播放 AVURLAsset
它有效,我可以离线观看视频。
但是我需要在不播放视频的情况下调用resourseLoader
函数。
我无法执行这些步骤的原因是因为要获取 ckc 数据,我需要来自委托函数 resourceLoader
的 loadingRequest
对象。
有什么方法可以在存储密钥时不调用 play 方法并丢弃播放器来实现吗?
也许对你来说来晚了,我遇到了同样的问题。尝试在下载时将 preloadEligibleContentKeys 添加到 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)
我想以编程方式调用
func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool
来自 AVPlayer
、AVAssetResourceLoaderDelegate
的代表的 AVURLAsset
,这样我就可以兑现 ckc 数据,以便我可以离线播放解密的内容。
我按照 https://developer.apple.com/videos/play/wwdc2016/504/
的步骤如果我播放 AVURLAsset
兑现 ckc 密钥数据,然后关闭互联网并再次播放 AVURLAsset
它有效,我可以离线观看视频。
但是我需要在不播放视频的情况下调用resourseLoader
函数。
我无法执行这些步骤的原因是因为要获取 ckc 数据,我需要来自委托函数 resourceLoader
的 loadingRequest
对象。
有什么方法可以在存储密钥时不调用 play 方法并丢弃播放器来实现吗?
也许对你来说来晚了,我遇到了同样的问题。尝试在下载时将 preloadEligibleContentKeys 添加到 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)