2012-03-16 167 views
16

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

尝试:

1)定制NSURLProtocol的建议在这里http://aptogo.co.uk/2010/07/protecting-resources/ 没有工作,我建议AVPlayer使用它自己和我不会被调用。

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

任何解决办法,将不胜感激:)

+0

如果你有加密的文件,我们应该至少**知道格式等。你有没有考虑过创建一个解密代理?你有什么期望/用例(寻求等)? – 2012-03-17 13:13:34

+0

我不明白,你是什么意思。你提供创建代理,但为什么?在我看来,有以下算法: 1.抓住加密的数据,AVPlayer尝试通过url加载。 2.解密它。 3.将解密的数据放入AVPlayer。 很可能这是错误的,因为AVPlayer没有任何数据提供者。但我不知道其他方式。 – Asya 2012-03-19 07:49:13

+0

您可以创建一个连接到实际内容的Web代理,并将URL指向解密数据的本地服务。通过这种方式,您可以解密加密/解密并播放视频。 – 2012-03-19 10:52:47

回答

4

你有2种选择:

  1. 如果定位的iOS 7及更高版本的退房AVAssetResourceLoaderDelegate。它允许你做一个自定义的NSURLProtocol,但专门用于AVPlayer。

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

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

+0

您可以提供更多关于2的细节。 ? – 2014-04-03 11:21:52

+0

我有同样的问题。你介意打开你的解决方案吗? – Sauvage 2014-05-05 12:55:18

+0

@JerneyStrasner你能否提供关于#2的更多信息。我一直试图用'CocoaHTTPServer'来实现这个功能,但是我的视频在播放3秒后会尝试播放。 – vaughan 2014-05-18 22:25:16