全中国赚钱最容易的男歌手,舞台表演跑下去吃个夜宵都没人会发现,yoyo yoyo,这就是凤凰传奇组合里的玲花和曾毅~~重温的吐槽经典,看一遍笑一遍的大会:
好吧,今天偶然看到了一幅好玩的搞笑组图,于是把视频找了出来有空的朋友可以看看欧~~开始今天的主题吧:最近在调研一些关于音视频会员方面的内容,相信你一定很好奇天天都被使用到的播放软件的会员是怎么实现的吧~~下面就让我们一起来探索这个问题吧!
为了在软件中实现付费观看的音视频播放,团队成员们都在各自收集自己的方法以在会议上进行进一步的讨论。通过一番Google和调研和实现,对音视频的设计也有了些粗浅的看法,在这里用本文进行记录:
- 录制过程中对音视频文件内容进行加密,播放过程中对加密文件进行解密;
- 控制访问权限:
- 对链接加密;
- 防盗链技术;
- 设置专有资源访问接口,通过用户id判断是否进行视频播放授权;
方案一可以对安全性进行比较好的控制,但是开发的成本相对来说要大一些;方案二中对视频访问链接进行加密,增加防盗链以及设置专有资源接口可以控制用户直接获取资源,但是可以通过获取播放器访问资源时对请求从而获取资源的访问地址,并且无法杜绝后期做下载功能时用户有可能窃取视频资源。
注:防盗链技术中所需的字段:「Referer」在 Android 系统 4.0~6.0 中已被移除 参考链接,也就是不能使用系统原生播放器,可替代使用 ijkPlayer 但是由于此库中 .so 库所占空间较大可能使 app 体积大幅增加所以要斟酌使用。网上也有种说法用 User-Agent 字段代替 Referer 实现防盗链,如果希望采取此技术的筒子们可以详细尝试下~~
实际上从技术的角度很难去杜绝资源被窃取,我们只能去争取尽可能妥当的方案;还有一点需要考虑的是可以从法律的角度去保护隐秘资源的权益,这里就要使用我们的 DRM 技术啦,常用的就是给咋们的视频打上水印,打个水印还得防止别人给认为去除喽,使用 Google 爸爸的软件「Watermark Master」可以解决打水印的问题~~水印效果如下:
好啦,说了这么多我们来从技术的角度谈谈实现吧:
- 防盗链技术实现
实际就是控制 MediaPlayer 在访问过程中添加请求头,详情请参见:传送门
此外,上面也说了要使用 ijkPlayer
- 文件和字符串的加密解密技术
本文的重点来啦~~先来看一张思维导图吧:
图中可以看到:
从严格意义上来讲 Base64 和凯撒加密只能算作为一种编码的方式;
MD5,SHA1,HMAC 作为单向加密算法,不能被解密,一般也只能用于信息发送方的确认,比如高德、百度地图需要添加 SHA1 值作为验证开发者信息的手段;
复杂加密算法可分为对称加密和非对称加密,对称加密算法由于其公钥的普遍性所以并不是特别安全。非对称加密则必须要公私要配合使用,并且私钥作为验证用户身份的方式存在;
数字签名和数字证书的认证思路是一致的:发送方通过 MD5 加密明文获取信息摘要,然后通过私钥对明文+MD5 进行签名表明自己的身份。接受方必须通过 公钥进行验证签名;
具体代码实现请参见:BlankJ Encrypt