我用AVPlayer在线播放音频,想在avplayer加载完流后将音频数据/流保存到本地。
我是这样实现的:
let fileUrl = NSURL(string: strUrl)!
let asset = AVURLAsset(URL: fileUrl)
asset.resourceLoader.setDelegate(self, queue:dispatch_queue_create("AVARLDelegateDemo loader", nil))
self.pendingRequests = [AVAssetResourceLoadingRequest]()
asset.loadValuesAsynchronouslyForKeys(["playable"]){
dispatch_async( dispatch_get_main_queue()){
self.prepareToPlayAsset(asset, requestedKeys: ["playable"])
}
}
func resourceLoader(resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool {
.......
return false
}
当 url 为 http/https 时,它不会调用 resourceLoader(resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource.... -, 当 url 为自定义时(例如:' test'), 它调用resourceLoader(resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource...
谁知道原因,难道resourceLoader不支持http/https?
最佳答案
当播放器不知道如何加载文件时,它会调用 resourceLoader(resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource...
方法。所以因为它知道如何加载 URL,所以不会调用此方法,因此您必须传递自定义 URL。
关于ios - 使用avplayer播放音频时如何将音频缓存到本地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33518463/