最佳实践 > 视频奇异果体育app竞彩官网下载的版权保护
视频奇异果体育app竞彩官网下载的版权保护
  • 概述
  • token模式
  • token计算规则
  • 获取userkey步骤
  • 获取jobid步骤

视频奇异果体育app竞彩官网下载的版权保护-奇异果体育app竞彩官网下载

更新时间:

概述

用户的视频内容一旦被盗用,损失巨大,为此 vod 实现了一套完善的奇异果体育app竞彩官网下载的版权保护方案,保障视频的播放安全。方案采用token模式,全面支撑 pc web、ios、android 端。

在您的转码模板中设置token加密模式后,经过加密的媒资,就可以受到奇异果体育app竞彩官网下载的版权保护:

token 模式接入相对复杂,但安全性更高,可实现媒资粒度的高级奇异果体育app竞彩官网下载的版权保护。

两种模式支持的范围如下:

播放端类型是否支持token模式
pc web在线
ios在线
android在线

token模式

原理

token模式下,引入用户企业服务器的业务鉴权和带过期时间的token临时授权播放。pc端和app端流程不同。

pc端接入

操作步骤:

  1. 选择“产品服务>音视频处理videoworks”,进入“处理设置>转码模版”页面;
  2. 单击左上角“新建转码模板”;
  3. 填写基础配置、片段提取、视频、音频模块中的必填项;
  4. 内容加密模块中选择“token,临时口令播放授权”;
        视频加密配置有以下可选项:  
-   open:开放密钥,系统自动生成加密密钥,密钥公开,不设访问控制。  
-   playerbinding:绑定播放器,系统自动生成加密密钥,密钥设有访问控制。 playerbinding模式下密钥设有访问控制,安全性比较高,推荐使用playerbinding模式。  
-   token: 临时口令播放授权,系统根据userkey生成密钥加密视频;播放时按照规则生成token并发送给密钥服务验证,校验通过才能播放,安全性比较高。
 
  1. pc web端播放时,企业app或网站,设置m3u8播放地址,播放器解析到是token模式加密时,提醒用户将播放者的信息(userkey、jobid、session等等)发送请求给企业服务;

  2. 企业服务器首先校验该播放者是否有权限播放该视频(是否登录、是否购买课程等),如果通过校验则使用joid、userid、userkey、expirationtime按照计算规则生成token(参见下文token计算规则),并通过设置settoken方法发送给播放器;

  3. 播放器将token、视频密钥id信息发送到后端进行校验是否合法与超时,通过校验后,将该视频加密后发送给播放器(https协议);

  4. 播放器解密密钥后进行视频内容解密播放。

    var player = cyberplayer('player-container').setup({ ... file: '', ak: '27add1b94dd5485d916cc866190be704' }); player.on('beforeplay', function (e) { if (!/m3u8/.test(e.file)) { return; } $.ajax('' e.file, function(e) { player.settoken(e.file, token); }); });

如果要同时设置多个视频的token(比如配置多个码率的视频时) ,参照下列方法:

player.settoken([
   {
    file: 'file1',
        tokentext: 'token1'
    },
      {
    file: 'file2',
    tokentext: 'token2'
  }
  
]);

ios端接入

与pc web端的差别在于,ios端token是在初始化播放器之前完成业务鉴权、生成的,并和m3u8播放地址一起初始化给播放器。

操作步骤:

  1. 企业ios app端播放时,首先对播放者进行业务鉴权,校验该播放者是否有权限播放该视频(是否登录、是否买课等),如果通过校验则使用userkey、jobid、expirationtime、userid按照计算规则生成token(参见下文token计算规则),并设置给播放器;
  2. 播放器将token、视频密钥id信息发送到后端进行校验是否合法与超时,通过校验后,将该视频加密后发送给播放器(https协议);
  3. 播放器解密密钥后进行视频内容解密播放。

ios端在线方案接入,用户需要调用此接口:

- (void)settoken:(nsstring*)token;

ios端离线下载需要token认证的视频时,需要实现下面的回调接口:

-(void)task:(cyberdownloadtask*)task needauthentication:(nsmutabledictionary*)parameters;

用户可以取得task中的信息,来判断这个任务是否需要相关鉴权信息。如果需要时,在parameters字段中设置正确的鉴权信息。

parameters 中可设置的字段包括:

字段说明
tokentoken模式时,设置此字段

ios端视频离线下载后,videoworks会使用手机设备特征标识信息对视频密钥再次进行加密,以保证即使视频被拷贝到别的手机设备上也无法播放。

android端接入

android端设置token模式的步骤与pc web端一样。 android端在线方案接入方法如下:

非加密视频的播放请参考播放器文档,加密视频与非加密视频的两个不同之处如下,

  • 设置播放路径, bvideoview类
函数参数备注
public void setvideopath(string path, string token)path 视频路径
token 加密口令
使用token加密时,用该方法设置视频路径
  • 多分辨率支持,静态方法,bvideoview类
函数参数备注
public static int getmediainfo(context ctx, string path, string token)path 视频路径
token 加密口令
使用token加密时,用该方法启用多分辨率探测

注意:
多分辨率探测独立于视频播放。调用getmediainfo方法之后,即可调用bvideoview.getsupportedresolution()获得视频分辨率数组,详见demo代码。

android端离线下载方案接入方法:

与非加密视频的相比,仅在开启下载时,调用的接口不同:videodownloadmanager类

函数参数备注
public void startorresumedownloaderwithtoken(string url, string token, downloadobserver observer)url 视频路径
token 加密口令
observer 下载状态与进度监听器
使用token加密时,用该方法启用下载

android端视频离线下载后,videoworks会使用手机设备特征标识信息对视频密钥再次进行加密,以保证即使视频被拷贝到别的手机设备上也无法播放。

token计算规则

名词解释:

  • userid: 百度智能云用户唯一标识,可在百度智能云管理控制台账号基本信息中得到,32位字符串。
  • userkey:用户密钥,是aes-128内容密钥,用于对jobid和expirationtime组成的串进行加密。长度为16字节,用32位十六进制数表示。
  • signature: 签名,是用userkey给jobid和expirationtime加密生成的字符串。长度为32字节,用64位十六进制数表示。
  • jobid:百度智能云videoworks工作流每个步骤的唯一标识。
  • expirationtime:signature的过期时间,是一个unix时间戳,以秒为单位。
  • token:由signature_userid_expirationtime组成的字符串。
  • hmac-sha-256:签名算法,详见

token的生成方法:

  1. 生成签名signature = hmac-sha-256(userkey,string.format("/%s/%s", jobid, expirationtime),sample code见hmac-sha-256加密算法 sample code
  2. 利用下划线(_) 连接signature,userid,expirationtime组合成token = string.format(“%s_%s_%s”, signature, userid,expirationtime)

hmac-sha-256加密算法 sample code

import javax.crypto.mac;
import javax.crypto.spec.secretkeyspec;
import java.nio.charset.charset;
import org.apache.commons.codec.binary.hex;
public class main {
    static final charset charset_utf8 = charset.forname("utf-8");
    public static string sha256hex(string signingkey, string stringtosign) {
        try {
            mac mac = mac.getinstance("hmacsha256");
            mac.init(new secretkeyspec(signingkey.getbytes(charset_utf8), "hmacsha256"));
            return new string(hex.encodehex(mac.dofinal(stringtosign.getbytes(charset_utf8))));
        } catch (exception e) {
            system.out.println(e.getmessage());
        }
        return null;
    }
    public static void main(string[] args) {
        string gtestuserkey = "testuserkey";
        string gtestjobid = "testjobid";
        system.out.println(sha256hex(gtestuserkey, "/"   gtestjobid   "/"   (system.currenttimemillis
()/1000   3600))); //过期时间以秒为单位
    }
}

获取userkey步骤

userkey无法通过videoworks平台直接获取,需要进入音视频处理mcp平台获取。

获取jobid步骤

获取jobid有两种方式

方式一:

  1. 在视频处理的媒资列表点击相应的媒资名称/id。

  2. 点击实例列表。

  3. 鼠标移动至【转码】模块,点击任务id。

  4. 复制获取jobid。

    方式二:

    通过工作流运行实例接口获取jobid videoworks工作流运行实例接口

网站地图