Leo*_*Leo 5 ios avplayer avurlasset avasset swift
我使用 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
}
Run Code Online (Sandbox Code Playgroud)
当 url 为http/https 时,它不调用resourceLoader(resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource .... - 当 url 是自定义的(例如:'test')时,它调用resourceLoader(resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource...
谁知道原因,resourceLoader不支持http/https吗?
当播放器不知道如何加载文件时,它会调用resourceLoader(resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource...方法。因此,由于它知道如何加载 URL,因此它不会调用此方法,因此您必须传递自定义 URL。
| 归档时间: |
|
| 查看次数: |
4357 次 |
| 最近记录: |