AVAssetResourceLoaderDelegate方法覆盖loadingRequest

时间:2017-08-03 09:39:55

标签: ios swift encryption streaming avplayer

在播放解密的HLS视频时,我正在使用GCDServer来托管m3u8文件,当我在m3u8文件中使用解密的一组块时它运行良好但是当我使用解密的一个并试图解密密钥和块时它是不在那里玩由于未使用http方案调用AVAssetResourceLoaderDelegate方法,并且如果我使用自定义方案,则GCDServer完成加载。有什么建议吗?

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

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

    这就是我在服务器日志中获取的内容。

    [DEBUG] Did open IPv4 listening socket 5
    

    [DEBUG]打开IPv6侦听套接字7 [INFO] GCDWebServer在端口8080上启动,可在http://192.168.1.183:8080/处访问 获取主机网址可选(http://192.168.1.183:8080/)  {URL:tapow://192.168.1.183:8080 /},请求ID = 1,内容信息请求=,数据请求=>

1 个答案:

答案 0 :(得分:0)

只是想分享答案以防任何人有需要,

  1. 我们可以将加载请求覆盖回http吗?如果是,那么如何。
  2. 是的,我们可以。由于m3u8正在自己的文件夹中搜索文件,因此只需解密AVAssetResourceLoaderDelegate中的m3u8数据并返回方法,然后它将自动执行下一个任务。 P.S - 您也可以将其替换为其他服务器,我只是将其用于在线流媒体。

    1. 如何从保存的部分获取m3u8文件和.key文件的内容,在这里我想通知您NSBundle.mainBundle不适用于.key,m3u8,m3u和其他播放列表文件。
    2. 确实,您无法在iOS中的变量中获取m3u8的引用,但您可以将对象直接传递到所需的位置。我使用GCDserver来托管m3u8文件,我只是在参数中发送了m3u8文件的本地路径url,然后GCDserver完成了它的工作并在本地服务器上托管了该文件。后来我使用gcdserver网址进行了avplayer。