AVAssetResourceLoaderDelegate方法覆盖loadingRequest

问题描述:

在播放解密的HLS视频时,我使用GCDServer来主持m3u8文件,当我在m3u8文件中使用一组解密的块时,它演奏的很好,但是当我使用解密的块并尝试解密密钥大块它不是在那里玩。由于未使用http方案调用AVAssetResourceLoaderDelegate方法,并且如果使用自定义方案,则GCDServer完成加载。任何建议?AVAssetResourceLoaderDelegate方法覆盖loadingRequest

  1. 我们可以重载加载请求回http吗?如果是,那么如何。
  2. 如何从保存的部分获取m3u8文件和.key文件的内容,在这里我想通知您,NSBundle.mainBundle不适用于.key,m3u8,m3u和其他播放列表文件。

尝试但没有成功。

let urlComponents = NSURLComponents(url: loadingRequest.request.url!, resolvingAgainstBaseURL: false) 
    urlComponents?.scheme = "http" 
    var mutableLoadingRequest = loadingRequest.request 
    mutableLoadingRequest.url = urlComponents?.url 
    loadingRequest.request = mutableLoadingRequest 

这是什么m进入服务器日志。

[DEBUG] Did open IPv4 listening socket 5 

[DEBUG]难道开放的IPv6监听套接字7 [INFO] GCDWebServer端口8080,到达开始在http://192.168.1.183:8080/ 获取主机url可选(http://192.168.1.183:8080/) {网址:tapow://192.168.1.183: 8080 /},请求ID = 1,内容信息请求=,数据请求=>

只是要共享的情况下,任何人是有此需要的答案,

  1. 我们可以覆盖加载请求回http吗?如果是,那么如何。

是的,我们可以。由于m3u8正在他自己的文件夹中搜索文件,所以只需解密AVAssetResourceLoaderDelegate中的m3u8数据并返回到方法,然后它将自动执行下一个任务。 P.S - 你可以用其他服务器代替它,我只是用它来在线流媒体。

  1. 如何从保存的部分获取m3u8文件和.key文件的内容,在这里我想通知您NSBundle.mainBundle不适用于.key,m3u8,m3u和其他播放列表文件。

的确,您无法在iOS中获取m3u8变量的引用,但可以直接将对象传递给所需的位置。我已经使用GCDserver来托管m3u8文件,并且我只是在参数中发送了m3u8文件的本地路径url,然后GCDserver完成了它的工作并将文件托管在本地服务器上。后来我用avplayer的gcdserver url。