Objective c 使用AVPlayer播放加密视频

Objective c 使用AVPlayer播放加密视频,objective-c,encryption,avplayer,Objective C,Encryption,Avplayer,我正在实现一个包含视频播放器的应用程序。出于某些原因,视频文件是用AES加密的,这些文件的大小可能相当大,以避免将其作为一个整体加载到RAM中。我正在寻找一些方法来与AVPlayer一起玩 尝试: 1) 此处建议的自定义NSURL协议 没有工作,我建议AVPlayer使用它自己的,我的不会被调用 2) 使用AVAsset将视频切成小块,然后将其馈送给AVPlayer-失败,因为AVPlayer中没有用于此的API 任何解决方法都将不胜感激:)您有两种选择: 如果目标是iOS 7及更新版本,请查看

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

尝试:

1) 此处建议的自定义NSURL协议 没有工作,我建议AVPlayer使用它自己的,我的不会被调用

2) 使用AVAsset将视频切成小块,然后将其馈送给AVPlayer-失败,因为AVPlayer中没有用于此的API

任何解决方法都将不胜感激:)

您有两种选择:

  • 如果目标是iOS 7及更新版本,请查看AVAssetResourceLoaderDelegate。它允许您使用自定义NSURLProtocol做您想做的事情,但专门针对AVPlayer

  • 模拟支持范围标头的HTTP服务器,并将AVURLAsset指向localhost


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

    我刚刚下载了Apple示例项目,它似乎正是您想要的

    代理捕获每个
    avurlaste
    AVAssetResourceLoader
    调用并组成一个全新的
    .m3a8
    文件,其中包含一个自定义解密密钥。
    然后它向播放器提供
    m3a8
    中的所有
    .ts
    文件URL


    该项目很好地概述了如何使用HLS提要。

    如果您有加密的文件,我们至少应该知道其格式等。您是否考虑过创建一个进行解密的代理?你的期望/用例是什么(寻找等)?我不太明白,你的意思是什么。你提出要创建代理,但为了什么?在我看来,有以下算法:1。捕获加密数据,AVPlayer尝试通过url加载该数据。2.解密它。3.将解密的数据放入AVPlayer。这很可能是错误的,因为AVPlayer没有任何数据提供程序。但我不知道其他方法。你可以创建一个连接到实际内容的web代理,并将URL指向解密数据的本地服务。通过这种方式,您可以将加密/解密和播放视频分离。您在这方面运气好吗?我的情况也一样,除了音频文件。。。我已经实现了一个自定义的NSURLProtocol类,但它从未被调用。我正在经历“使用AVPlayerItemVideoOutput进行实时视频处理”,也许可以帮助您提供关于2的更多详细信息?我也有同样的问题。“请打开您的解决方案好吗。@JerneyStrasner您能提供关于#2的更多信息吗?”。多年来,我一直在尝试使用CocoaHTTPServer实现这一点,但我尝试播放的视频在播放3秒钟后出现了混乱。Jernej,你能提供更多关于1的详细信息吗?有实际的样本吗?