首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVAssetResourceLoaderDelegate方法覆盖loadingRequest

AVAssetResourceLoaderDelegate方法覆盖loadingRequest
EN

Stack Overflow用户
提问于 2017-08-03 09:39:55
回答 1查看 510关注 0票数 2

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

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

尝试但没有成功。

代码语言:javascript
复制
  let urlComponents = NSURLComponents(url: loadingRequest.request.url!, resolvingAgainstBaseURL: false)
    urlComponents?.scheme = "http"
    var mutableLoadingRequest = loadingRequest.request
    mutableLoadingRequest.url = urlComponents?.url
    loadingRequest.request = mutableLoadingRequest

这就是服务器日志中的内容。

代码语言:javascript
复制
[DEBUG] Did open IPv4 listening socket 5

调试打开了IPv6侦听套接字7 INFO GCDWebServer,从端口8080启动,并可在http://192.168.1.183:8080/ Get主机url可访问(http://192.168.1.183:8080/){ URL: //192.168.1.183:8080/ },请求ID = 1,内容信息请求=,数据请求=>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-30 08:29:38

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

  1. 我们能把加载请求重写回http吗?如果是的话那该怎么做。

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45480435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档