使用AVPlayer播放加密视频

时间:2012-03-16 16:25:38

标签: objective-c encryption avplayer

我正在实施一个包含视频播放器的应用程序。由于某些原因,视频文件使用AES加密,并且这些文件的大小可能相当大,以避免将其作为一个整体加载到RAM中。我正在寻找一些方法来播放AVPlayer。

尝试:

1)根据此处的建议自定义NSURLProtocol http://aptogo.co.uk/2010/07/protecting-resources/ 没有用,我建议AVPlayer使用它自己,我的不会被调用。

2)使用AVAsset将视频切成小块,然后将它们提供给AVPlayer - 失败,因为AVPlayer中没有API。

非常感谢任何解决方法:)

2 个答案:

答案 0 :(得分:4)

您有两个选择:

  1. 如果定位iOS 7及更新版本,请检查AVAssetResourceLoaderDelegate。它允许您使用自定义NSURLProtocol,但专门用于AVPlayer。

  2. 模拟支持Range标头的HTTP服务器,并将AVURLAsset指向localhost。

  3. 之前我实施了#2,如果需要可以提供更多信息。

答案 1 :(得分:3)

我刚刚下载了Apple示例项目https://developer.apple.com/library/ios/samplecode/sc1791/Listings/ReadMe_txt.html,它似乎完全符合您的要求。

代表会抓住每个AVURLAsset的{​​{1}}来电,并制作一个全新的AVAssetResourceLoader文件,其中包含自定义解密密钥。
然后,它会向播放器提供.m3a8中的所有.ts个文件网址。

该项目很好地概述了可以用HLS提要做什么。