2012-09-02 134 views
10

我正在寻找在iOS视频播放器中实现DRM,但我不知道如何实现这一点。为了实现视频DRM(同时仍然使用Apple的硬件加速H264解码),我需要一种方法将解密后的H264流提供给标准的iOS视频播放API。如何在iOS中实现视频DRM

根据this question,无法在2010年9月实施第三方DRM。有一个thread in the Apple Developer Forums无处可去。然而,截至今天,存在许多第三方DRM库:Widevine,Irdeto (PDF),Marlin。他们已经清楚地发现了一些将自定义流传送到Apple批准的应用程序中的媒体播放器的方法。

我发现了两条线索。其中一条是对create a custom URL protocol的建议,但人们在视频中使用这种方法似乎效果不佳。另一种是创建本地HTTP服务器线程,并通过HTTP实时流在iDevice内的127.0.0.1上提供内容。我希望能够确信苹果会在走上这条路线之前批准。

因此 - 第三方DRM实现使用哪些Apple认可的API来获取解密的视频数据到视频播放器?编辑:latest BBC iPlayer for iOS允许下载程序供以后查看。要么他们存储的内容是明确的,要么他们已经破解了这个问题。

+1

关于对127.0.0.1的HTTP实时流,我可以告诉你,它的工作原理,它是由苹果公司所接受。商业解决方案如Verimatrix使用这种方法。 –

+0

谢谢 - 我之前没有遇到过Verimatrix,我将它添加到我们的列表中。 –

+0

查看我最近写的这篇文章:http://aameer.github.io/articles/digital-rights-management-multi-drm/它详细介绍了如何实现多DRM – Aameer

回答

2

您可以开始将文件解密为另一个文件并在解密时回放该文件。你需要让它缓冲几秒钟的视频,但它会起作用。

此外,您需要确保moov原子在文件中的mdat原子之前,否则它将无法工作。 (例如,AVFoundation会创建MP4,其中moov原子位于mdat原子之后,因此它们需要修改才能工作)

+0

谢谢 - 我控制编码,所以文件的内部顺序应该很简单。这给我带来了一些问题 - 我是否可以处理用户尝试在视频中寻找前进的动作,以及如何处理文件系统中的大型解密文件。我不认为iOS支持稀疏文件,因此我可能需要将视频分成与HLS类似的块,以使其易于管理。 –

+0

是的,我不能告诉你什么正确的解决方案在你的情况。为了寻找,你可以使用'stbl'原子的子原子来计算你应该解密的文件的位置,然后从那里解密到一个新的文件中。我认为这样做会是滥用MP4容器的有趣练习。您可能也想避免同时解密整个事物,但您可以通过使用多个aassetreaders相当容易地避免这种情况 – jgh

+0

我认为每个答案都会成为破解,而我们刚刚开始考虑Android的体系结构版。我很惊讶这些移动API与DirectShow相比有多有限。 –