最近有个需求,那就是要在原生端对视频进行加密。逛了一圈论坛,发现还没人分享相关方案,这里就简单分享一下。
为啥只有 android,因为项目不上 ios ,不需要处理。同时也因为最近要带领团队,全部转到 unity开发去了,没有时间去处理(ios 端实现起来也不难,思路大致差不多)。
这里的方案,只是针对的 android 原生播放器。如果为了跨平台,不想写两套,可以嵌入 FFmpeg 或者开源的第三方库,比如说哔哩哔哩的 ijkpalyer 等等。
回到正题,基本上只要分四步走就可以了。
-
选一个高性能的加密算法或者手撸一个,这里就选了rc4(因为不需要跨平台,这里就用了 Java 来写, 同时做了特殊处理,高性能的话可以自己考虑用 c++ 来写,通过 jni 去做解密)。

-
写一个类,继承 MediaDataSource, 只要实现它的 readAt 方法就行 (为了平衡性能,这里做了缓存和只加密补分数据处理)。
-
替换 Cocos 原本使用的播放器。
-
打包的时候,记得对视频进行加密。
大致就是这样。




