Ert*_*maa 13 encryption video playing
我接下来要做的是:我们需要保护视频内容(加密它)并能够播放它.
棘手的部分是我们不想立刻将所有内容加载到内存中并在那里解密.(尽管这也是一种选择)
基本上寻找的是我们从HDD播放加密视频内容的解决方案,这样只有我们的APPLICATIOn才能播放该视频.
然而它应该逐块读取文件(因为如果我们处理2GB文件,它不应该一次性加载到内存中).
请告诉我们,有什么可能的方法?
SilverLight4 DRM - 好的,这看起来像是合理的解决方案,足以满足我们的需求.但是,PlayReady SDK售价约为30,000美元,我们不想使用SilverLight.大概是C#或C++
我们有一个想法,就是将大视频文件拆分为单独的加密视频文件(如序列),然后加载每个文件("块")直接存储/解密并从内存中播放(并在序列文件之间交替),这似乎是最简单的,可能是真正做到的.但是,什么库能够从memoryStream播放视频文件?我相信VLC应该能够做到这一点..?
另一个想法是只采用未压缩的AVI,逐帧处理视频,修改每一帧(以某种方式加密),现在当我们播放视频时,我们在内存中重新处理帧并解密它.
只处理一个特定的编解码器并为它编写自定义解决方案 - 实际上这听起来很酷但我担心它会花费我们太多的时间,但请告诉我们这个方法
另一个,使用VLC从localhost播放加密流(例如,APPLICATION将加密的HDD文件流传输到localhost:800/BLAHBLAH),同一个应用程序在那里有VLC控制来解密加密流.我们仍然不知道HDD上的文件是否也可以实际加密(因此用户无法在另一个播放器上播放该文件),而且VLC是GPL,这对我们没有好处.
回放管道通常是一组插在一起的组件.在DirectShow其中一个API和最受欢迎的API中,有一个使用读取器,分离器,编解码器,后处理和称为过滤器的演示部件,整个过程都会播放.可以用自己的替代品替换读取器,读取加密内容并动态解码.它可以很容易地按需解码,不需要解码整个2GB块以便例如获得第一帧或缩略图.
只有连接阅读器部分,您可以自由选择加密方法,自定义算法,众所周知的API或外部库之一.
我仍然认为这个和其他(至少大多数其他)方式不能让你获得防弹保证编码内容无法逆转.其他人仍然可以挂钩管道并从那里获取解码内容.如果您对此至少需要复杂性和实施经验感到高兴,那么这种加密将会很好地解决.
好的,这就是我做的.(机器人)
加密视频放在SD卡中.RC4加密 - 因此它可以在流式传输时即时转换.然后我创建了一个在设备上运行的本地文件服务器(作为服务).输出流在发送数据之前会做一些额外的事情 - 它会在将其写入缓冲区之前通过RC4解密器对其进行过滤.然后只需将媒体播放器指向视频的网址(http:// localhost:port/abc.3gp).因此,来自SD卡的视频仍然是安全的 - 除非你有密钥,否则你无法播放它 - 你每个视频应该有所不同,以增加安全性.