我正在实施一个包含视频播放器的应用程序。由于某些原因,视频文件使用AES加密,并且这些文件的大小可能相当大,以避免将其作为一个整体加载到RAM中。我正在寻找一些方法来播放AVPlayer。
尝试:
1)根据此处的建议自定义NSURLProtocol http://aptogo.co.uk/2010/07/protecting-resources/ 没有用,我建议AVPlayer使用它自己,我的不会被调用。
2)使用AVAsset将视频切成小块,然后将它们提供给AVPlayer - 失败,因为AVPlayer中没有API。
非常感谢任何解决方法:)
答案 0 :(得分:4)
您有两个选择:
如果定位iOS 7及更新版本,请检查AVAssetResourceLoaderDelegate。它允许您使用自定义NSURLProtocol,但专门用于AVPlayer。
模拟支持Range标头的HTTP服务器,并将AVURLAsset指向localhost。
之前我实施了#2,如果需要可以提供更多信息。
答案 1 :(得分:3)
我刚刚下载了Apple示例项目https://developer.apple.com/library/ios/samplecode/sc1791/Listings/ReadMe_txt.html,它似乎完全符合您的要求。
代表会抓住每个AVURLAsset
的{{1}}来电,并制作一个全新的AVAssetResourceLoader
文件,其中包含自定义解密密钥。
然后,它会向播放器提供.m3a8
中的所有.ts
个文件网址。
该项目很好地概述了可以用HLS提要做什么。