AVAssetResourceLoaderDelegate 方法覆盖 loadingRequest
AVAssetResourceLoaderDelegate methods override loadingRequest
在播放解密的 HLS 视频时,我使用 GCDServer 托管 m3u8 文件,当我在 m3u8 文件中使用一组解密的块时,它播放得很好,但当我使用解密的块并尝试解密密钥和块时它不在那里玩。由于未使用 http 方案调用 AVAssetResourceLoaderDelegate 方法,如果我使用自定义方案,则 GCDServer 完成加载。有什么建议吗?
- 我们可以将加载请求覆盖回 http 吗?如果是那么如何。
- 如何从保存的部分获取 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
这是我在服务器日志中得到的内容。
[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/)
{ URL: tapow://192.168.1.183:8080/ },请求ID=1,内容信息请求=,数据请求=>
只是想分享答案以防万一有人需要,
- 我们可以将加载请求覆盖回 http 吗?如果是那么如何。
是的,我们可以。由于m3u8正在自己的文件夹中搜索文件,所以只需在AVAssetResourceLoaderDelegate和return中解密m3u8数据返回方法然后它会自动执行下一个任务。 P.S - 你也可以用其他服务器 ts 替换它我只是用它来在线流媒体。
- 如何从保存的部分获取 m3u8 文件和 .key 文件的内容,在此我想通知您 NSBundle.mainBundle 不适用于 .key、m3u8、m3u 和其他播放列表文件。
在iOS的变量中确实无法获取m3u8的引用,但可以直接将对象传递到需要的地方。我已经使用 GCDserver 来托管 m3u8 文件,我只是在参数中发送了 m3u8 文件的本地路径 url,然后 GCDserver 完成了它的工作并将文件托管在本地服务器上。后来我用 gcdserver url 来播放 avplayer。
在播放解密的 HLS 视频时,我使用 GCDServer 托管 m3u8 文件,当我在 m3u8 文件中使用一组解密的块时,它播放得很好,但当我使用解密的块并尝试解密密钥和块时它不在那里玩。由于未使用 http 方案调用 AVAssetResourceLoaderDelegate 方法,如果我使用自定义方案,则 GCDServer 完成加载。有什么建议吗?
- 我们可以将加载请求覆盖回 http 吗?如果是那么如何。
- 如何从保存的部分获取 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
这是我在服务器日志中得到的内容。
[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/) { URL: tapow://192.168.1.183:8080/ },请求ID=1,内容信息请求=,数据请求=>
只是想分享答案以防万一有人需要,
- 我们可以将加载请求覆盖回 http 吗?如果是那么如何。
是的,我们可以。由于m3u8正在自己的文件夹中搜索文件,所以只需在AVAssetResourceLoaderDelegate和return中解密m3u8数据返回方法然后它会自动执行下一个任务。 P.S - 你也可以用其他服务器 ts 替换它我只是用它来在线流媒体。
- 如何从保存的部分获取 m3u8 文件和 .key 文件的内容,在此我想通知您 NSBundle.mainBundle 不适用于 .key、m3u8、m3u 和其他播放列表文件。
在iOS的变量中确实无法获取m3u8的引用,但可以直接将对象传递到需要的地方。我已经使用 GCDserver 来托管 m3u8 文件,我只是在参数中发送了 m3u8 文件的本地路径 url,然后 GCDserver 完成了它的工作并将文件托管在本地服务器上。后来我用 gcdserver url 来播放 avplayer。