版权保护最佳实践
1. 功能介绍
保利威致力于提升视频播放的安全性,保护您的视频资源。通过自研的视频版权保护方案(VRM)和自有专利的加密算法,保利威能够最大限度保证视频文件的安全。您在对接保利威 PlaySafe 视频保护功能时,建议参考本文的最佳实践,以获得最佳的视频安全保护效果。
2. 整体方案
对接视频加密功能,需要您的服务器侧和客户端侧进行一定量的修改,以下流程图展示了播放加密视频功能的整体工作流程:

接下来对流程图中的各个步骤进行详细描述:
您的终端向您的服务器请求Token
在播放视频前,您的终端(包括 Web 端、移动 App 端、pc 播放器等)应使用待播放视频的vid,通过您内部自己开发的接口,向您的服务器请求播放 Token。为了加强 Token 的安全性,您的接口应当使用 HTTPS 协议。
您的服务器向保利威服务器请求Token
您的服务器端应通过 获取视频播放凭证 接口向保利威服务器请求加密视频播放所需的 Token。
建议您联系保利威技术支持设置IP白名单 限制功能,在设置白名单后,只有您指定的 IP 可以通过该接口获取 Token,其它 IP 均无法请求该接口获得 Token
保利威服务器返回Token给您的服务器
保利威服务器在收到您的获取指定视频播放凭证的请求后,在校验无异常时,会向您的服务器返回一个用于播放加密视频的 Token
您的服务器端返回Token给您的终端
您的服务器在收到保利威返回来的 Token 时,需要向终端返回该 Token。在向终端返回 Token 时,您应当使用自己定义的一套加密规则对 Token 加密,以免该 Token 在网络传输过程中被泄露出去。
您的终端使用点播SDK播放视频
在播放加密视频前,您需要调用点播 SDK 的接口,传递从您的服务器获得的 Token。若您在服务器已经对 Token 进行了加密,您需要在终端先根据对应的规则进行解密,再传递真实的 Token 给点播 SDK
下面将对您需要改动的地方进行说明,并提供示例代码以供参考。
3. 服务器侧
您的服务器需要关注的是上图中“客户服务器和保利威服务器的交互”这一部分。

在服务器侧,您应该提供一个接口实现从保利威服务器申请播放对应视频(指定vid)的 Token 并返回的功能,以便您的终端可以通过服务器获取到播放 Token,具体功能点如下:
1)获取接口请求参数:视频 vid,用户 viewerId,以及其他参数;
2)请求保利威服务器的 获取视频播放凭证 接口,移动端请求需对 viewerId 进行 base64 处理;
3)解析接口返回值,获取到 Token;
4)通过自己定义的一套加密规则对 Token 加密,以免泄露;
5)向客户端返回加密后的 Token。
3.1 示例代码
其中 requestTokenFromServer 方法实现了调用保利威服务器 获取视频播放凭证 接口获取 Token
更详细的代码可以移步 Gitee地址 进行浏览
3.2 GetTokenRequestVO 参数描述
videoId
true
String
视频id,例如:e6b23c6f519c5906e54a13b8200d7bb0_e
viewerId
true
String
观看者id,要求不同的观看者使用不同的id;移动端请求需对viewerId进行base64处理
viewerIp
false
String
观看者ip,如果为空,会自动获取调用该接口时的ip
viewerName
false
String
观看者名称
expires
false
Long
token有效时长,单位为秒。为空时默认为10分钟,有效期为最长24小时。
disposable
false
Boolean
token有效期,默认为false true:token仅一次有效(验证一次后,token就失效了) false:在有效期内可以进行多次验证。
iswxa
false
Integer
是否微信小程序播放,默认为0 1:是 0:否
extraParams
false
String
自定义的其它参数
3.3 TokenVO 参数描述
token
String
token值
userId
String
保利威点播账户id
appId
String
账号appId
videoId
String
视频id,例如:e6b23c6f519c5906e54a13b8200d7bb0_e
viewerId
String
观看者id
viewerIp
String
观看者ip
viewerName
String
观看者名称
ttl
Long
token有效时长,单位为豪秒
disposable
Boolean
token有效期 true:token仅一次有效(验证一次后,token就失效了) false:在有效期内可以进行多次验证。
iswxa
Integer
是否微信小程序播放 1:是 0:否
extraParams
String
自定义的其它参数
createdTime
Long
token创建时间,13位毫秒级时间戳
expiredTime
Long
token过期时间,13位毫秒级时间戳
4. 终端侧
终端侧需要关注的是上图中“客户终端和客户服务器的交互”、“客户终端和保利威点播SDK的交互”这两部分。

在终端侧,您需要做的事情如下:
1)视频播放前,调用您的服务器自行开发的接口,通过视频vid,获得对应视频的播放 Token。
注意,移动端(iOS端和android端)向您的服务器请求获取播放 Token 时,请求参数的 viewerId 必须经过 Base64 编码。
2)若您在服务器侧已经对 Token 进行了加密,您还需要先根据自定义的规则对获取到的 Token 进行解密。
3)通过保利威点播 SDK 所提供的 API 传递解密后的 Token。
上述步骤1和2,属于“客户终端和客户服务器的交互”,需要您自行开发,这里不予细述,以下示例代码主要展示了步骤3——如何调用点播 SDK 的 API 传递 Token,这部分属于“客户终端和保利威点播SDK的交互”。
4.1 Web 端
完整的示例代码请参考 点播 JS SDK 播放加密视频
4.2 iOS 端
完整的示例代码请参考 点播 iOS SDK 4.视频播放 4.1.2 外部传入播放凭证。
4.3 Android 端
4.3.1 视频播放
完整的示例代码请参考 点播 Android SDK 4.视频播放 1.2 外部传入播放凭证
4.3.2 视频下载
完整的示例代码请参考 点播 Android SDK 5.视频下载
4.4 C++ SDK
C++ SDK 如何传递 Token 并播放视频代码示例:
4.5 APICloud 平台
APICloud 如何调用点播 SDK 的 API 传递 Token 并播放视频代码示例:
4.6 uniapp 平台
uniapp 如何调用点播 SDK 的 API 传递 Token 并播放视频代码示例:
Last updated
Was this helpful?