我一直在努力让 AirPlay 与在 AVPlayer 中播放的加密流一起工作。
阅读Apple 的这一页对我没有多大好处。
从受保护的 HTTPS 领域提供密钥。在播放开始之前,您的应用可以使用 NSURLConnection 进行身份验证,提供隐藏的凭据。
我只能让它在模拟器中工作。不在设备上。
通过 HTTPS 使用 cookie。您的应用程序可以连接到 HTTPS 服务器并以应用程序定义的方式对应用程序进行身份验证。然后,您的服务器可以发出适用于关键 URL 的 cookie。您应该将 cookie 设置为在播放完成后很久才过期。然后,服务器必须要求在未来对密钥的 GET 请求中存在有效的会话 cookie。为了获得最大的可靠性,如果到期日期在不久的将来,服务器应在其对未来 GET 请求的响应中更新 cookie 的到期日期。
由于我没有直接访问服务器设置的权限,因此实际上没有尝试过,但如果没有其他答案出现,我会尝试。
使用应用程序定义的 URL 方案指定 .m3u8 文件中的密钥。应用应该注册一个自定义的 NSURLProtocol 来处理对这些 URL 的请求。然后,播放器在需要加载关键 URL 时回调到您的应用程序;然后,您的应用可以使用安全侧通道获取密钥并将其提供给播放器。
这似乎不起作用,因为 AVPlayer HTTP 连接完全绕过了 NSURLProtocol 系统。您只是无法拦截 AVPlayer 发出的任何 HTTP 请求。
如果有人能以与 AVPlayer 和 AirPlay 一起使用的方式解决加密密钥服务问题,我将永远感激不尽。