批量删除视频

接口URL

http://api.polyv.net/v2/video/del-videos

接口说明

(接口调用有频率限制,详细请查看)

批量删除视频

返回结果支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型及范围 说明
userId true string 用户ID
vids true string 视频ID,多个视频以英文逗号(,)隔开,一次最多提交500个
sign true string 签名,40位大写的sha1值
ptime true string 当前13位毫秒级时间戳,3分钟内有效
deleteType false string 删除方式,1:删除到回收站,2:彻底删除,默认为:1

JSON示例

{
"code": 200,
"status": "success",
"message": "success",
"data": ""
}

返回错误json

签名不正确
{
"code":400,
"status":"error",
"message":"the sign is not right",
"data":""
}
时间戳过期
{
"code":400,
"status":"error",
"message":"ptime is too old.",
"data":""
}
参数为空
{
"code":400,
"status":"error",
"message":"xxx is empty",
"data":""
}
删除视频一次最多只能提交500个
{
"code":400,
"status":"error",
"message":"delete vids size can't greater than 500 once",
"data":""
}

字段说明

字段 说明
code 请求返回状态码
status 请求返回状态
message 请求返回信息
data 返回数据

java请求示例

public void testDeleteVideos() {
        String url = "http://api.polyv.net/v2/video/del-videos";
        String userId = "xxxxxxx";
        String vids = "e6bt3c6f513fbe025b94efdd10d7am47_e,e6bt3c6f513fbe025b94efddm0d7am47_e";
        String secretkey = "xxxxxxx";
        long ptime = System.currentTimeMillis();
        Map<String, String> params = new HashMap<>();
        params.put("deleteType", "1");
        params.put("ptime", String.valueOf(ptime));
        params.put("userId", userId);
        params.put("vids", vids);
        params.put("sign", getSign(params, secretkey));
        String response = HttpClientUtil.getInstance().sendHttpPost(url, params);
        System.out.println(response);
}

点播API签名规则

https://dev.polyv.net/2020/videoproduct/v-api/v-api-signs/vod-sign/

通用工具类

https://dev.polyv.net/2020/liveproduct/l-api/rule/live-api-java-detail/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

关于Flash Player即将停止服务的通知

Adobe公司将于2020年12月31日正式终止支持Flash Player,此后,Adobe将不会发布Flash Player更新或安全补丁。为了保护用户的系统安全,Adobe建议所有用户卸载其计算机上的Flash Player,并且将于2021年1月12日开始禁止基于Flash的内容在Adobe Flash Player中运行。同时,微软,苹果,谷歌和Mozilla等主流浏览器和操作系统厂商也将在终止日前停止对Flash Player的支持。详见:Adobe Flash Player End-of-Life Info

近年来,诸如HTML5、WebGL和WebAssembly之类的开放标准一直在不断成熟,主流的浏览器厂商也已经将这些开放标准集成到他们的浏览器中,并可以作为Flash内容的可行替代方案。

保利威作为专业的视频技术服务提供商,为广大用户提供了安全、易用的Web播放器服务。考虑到播放终端的兼容性,保利威Web播放器同时支持HTML5和Flash两种播放模式。虽然绝大多数的用户已经默认使用HTML5播放器,但我们也强烈建议您检查网站上播放器的播放模式,以免因Flash Player停用对业务产生影响。

检查指引

目前页面嵌入保利威Web播放器的代码有以下几种形式:

  1. 使用多终端嵌入代码,播放器引用地址为:<script src='//player.polyv.net/script/polyvplayer.min.js'></script>,代码示例如下:

    <script src='//player.polyv.net/script/polyvplayer.min.js'></script>
    <div id='player'></div>
    <script>
    var player = polyvObject('#player').videoPlayer({
       'width':'600',
       'height':'450',
       'vid' : '88083abbf5bcf1356e05d39666be527a_8' ,
       'forceH5':true ,  // 是否默认使用H5播放器
    });
    </script>
    

    使用这种嵌入代码的用户,需检查是否使用了forceH5参数

    • 如果forceH5参数值为true,则无需修改(默认会使用H5播放器,在不支持HTML5的低版本IE浏览器下会自动切换到Flash播放器)。
    • 如果未使用,则需修改代码,增加forceH5参数并把参数值设为true,否则会默认使用Flash播放器。一旦Flash无法使用会对业务产生影响。
  2. 使用H5播放器嵌入代码,播放器引用地址为:<script src="//player.polyv.net/script/player.js"></script>,代码示例如下:
    <div id="player"></div>
    <script src="//player.polyv.net/script/player.js"></script>
    <script>
     var player = polyvPlayer({
       wrap: '#player',
       width: 800,
       height: 533,
       vid: '88083abbf5bcf1356e05d39666be527a_8' ,
     });
    </script>
    

    使用H5播放器嵌入代码的用户,无需做任何修改(默认会使用H5播放器,在不支持HTML5的低版本IE浏览器下会自动切换到Flash播放器)。

  3. HTML代码,代码示例如下:

    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" height="324" id="polyvplayerf13e995735e25e0cd2c8b5d58bcdb9fa_f" width="600">
       <param name="movie" value="//player.polyv.net/videos/player.swf"></param>
       <param name="allowscriptaccess" value="always"></param>
       <param name="wmode" value="Transparent"></param>
       <param name="flashvars" value="vid=f13e995735e25e0cd2c8b5d58bcdb9fa_f"></param>
       <param name="allowFullScreen" value="true"></param>
       <embed allowfullscreen="true" allowscriptaccess="always" flashvars="vid=f13e995735e25e0cd2c8b5d58bcdb9fa_f" height="324" name="polyvplayerf13e995735e25e0cd2c8b5d58bcdb9fa_f" src="//player.polyv.net/videos/player.swf" type="application/x-shockwave-flash" width="600" wmode="Transparent"></embed>
    </object>
    

    HTML嵌入代码是比较旧的方式,使用的是Flash播放器。仍在使用这种代码的用户应尽快修改为HTML5的嵌入代码。详见:HTML5播放器集成文档

  4. Flash代码,代码示例如下:

    //player.polyv.net/videos/player.swf?vid=f13e995735e25e0cd2c8b5d58bcdb9fa_f
    或
    //player.polyv.net/videos/f13e995735e25e0cd2c8b5d58bcdb9fa_f.swf
    

    Flash嵌入代码也是比较旧的方式,使用的是Flash播放器。仍在使用这种代码的用户应尽快修改为HTML5的嵌入代码。详见:HTML5播放器集成文档

保利威平台即将调整的内容

在Flash Player停用后,保利威平台将相应地做出如下功能调整:

  1. 云点播管理后台→视频列表页→嵌入代码,将默认使用HTML5播放器的嵌入代码,同时删除纯Flash播放器的嵌入代码。
    image-20201211155747682
  2. 云点播管理后台→设置→视频设置→【优先使用H5播放器】选项将隐藏,以后默认都会优先使用H5播放器。
  3. H5播放器控制栏→设置→【Flash切换】选项将隐藏
    image-20201211160636366
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

视频禁播与解禁

接口URL

https://api.polyv.net/v2/video/{userid}/forbidden

接口说明

(接口调用有频率限制,详细请查看)

用于禁止、解禁播放视频,禁播后会将视频状态(status)设置成53,一次最多只能操作500个vid
支持https
注意点:
  只能修改“已发布”状态的视频为禁播状态,
  只能修改“已禁播”状态的视频为已发布状态,
  当请求中的vid包含多种状态时,只对符合条件的vid进行状态修改操作,并返回成功;若没有符合条件的vid则返回错误。

返回结果支持格式

JSON

请求方式

POST,GET

请求数限制

TRUE

请求参数

参数名 必选 类型及范围 说明
ptime true long 13位的当前时间毫秒级时间戳
sign true string 签名
userId true string userId,路径参数
vids true string 视频vid,多个视频以英文逗号分隔,如xxx,xxx,一次最多只能传500个vid
forbidden true int 1:禁播,0:解禁

返回结果

{
    "code": 200,
    "status": "success",
    "message": "success",
    "data": ""
}

请求失败返回json示例

签名错误
{
    "code": 400,
    "status": "error",
    "message": "the sign is not right.",
    "data": ""
}
时间戳过期
{
    "code": 400,
    "status": "error",
    "message": "ptime is too old",
    "data": ""
}

一次最多只能操作500个vid
{
    "code": 400,
    "status": "error",
    "message": "vid count can't over 500",
    "data": ""
}

只能修改“已发布”状态的视频为禁播状态
{
    "code": 400,
    "status": "error",
    "message": "只能修改“已发布”状态的视频为禁播状态",
    "data": ""
}

只能修改“已禁播”状态的视频为已发布状态
{
    "code": 400,
    "status": "error",
    "message": "只能修改“已禁播”状态的视频为已发布状态",
    "data": ""
}

字段说明

字段 类型 说明
code int 请求返回状态码
status string 请求返回状态
message string 请求返回信息
data string 请求返回数据

Java示例代码

public class Test {

    public static void main(String[] args) throws Exception {
        String userId = "xxxxxx";
        String secretkey = "xxxxxxx";
        String url = "https://api.polyv.net/v2/video/%s/forbidden";

        Map<String, String> maps = new HashMap<>();
        maps.put("vids", "xxxxxx,xxxxxx");
        maps.put("forbidden", String.valueOf(1));
        maps.put("sign", getSign(maps, secretkey));

        url += "?" + buildUrl(maps);
        url = String.format(url, userId);
        HttpClient client = new HttpClient();
        GetMethod getMethod = new GetMethod(url);
        client.executeMethod(getMethod);
        System.out.println(url);
        System.out.println(getMethod.getResponseBodyAsString());
    }

    public static String buildUrl(Map<String, String> maps) {
        List<String> tmp = new ArrayList<>();
        for (Map.Entry<String, String> key : maps.entrySet()) {
            tmp.add(key.getKey() + "=" + key.getValue());
        }
        return String.join("&", tmp);
    }
}

sign的生成规则

签名规则

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

问答弹题

问答弹题功能是指在视频播放的指定时间点弹出问答题目,适合在教学、培训类视频中使用。使用问答功能,既可以增加学生与内容的互动,有利于教学质量的提升,又可以评估学生的学习效果和课件内容的质量。由于必须提交答案后才会继续播放视频,所以问答功能还可以有效防止挂机播放视频的情况。

wenda
保利威云点播平台支持通过以下两种方式来实现问答弹题功能:

方式一:通过点播管理后台设置

  1. 登录云点播管理后台,点击 【视频列表】 → 选择视频→ 右边栏【添加问答】,进入问答设置页面。
  2. 在问答设置弹窗中设置问答题目:
    image-20210126143725270

管理后台设置问答题目后,在视频播放到指定时间点时,播放器会弹窗显示问答题目,学员需要提交答案后才能继续观看视频。

方式二:通过播放器接口实现

如果您的业务场景需要更加灵活的控制方式,或者题库在自身的业务系统,还可以通过播放器提供的问答接口来实现。

问答相关的播放器接口

名称 参数及类型 说明
sendQuestion (Array) 设置视频关联的问答题目
changeQuestion (Number,Array) 替换指定时间点对应的问答题目

事件:

名称 说明
onQuestionPopUp 问题弹出时触发
onQuestionSkip 问题被跳过时触发
onAnswerResult 提交答案后触发

使用方式

在播放器初始化后,可以通过sendQuestion接口设置本次视频播放过程中需要显示的问答题目。通过监听问答相关事件,可以进行自身业务的处理。changeQuestion用于修改指定时间点需要显示的问答题目,比如,答错回退后,再次弹题时显示不同的问题。

代码示例如下:

<div id="player"> </div> 
<script src="//player.polyv.net/script/player.js"></script> 
<script>
  var player = polyvPlayer({
    wrap: '#player',
    width: 800,
    height: 533,
    vid: '88083abbf5bcf1356e05d39666be527a_8',
});
player.on('s2j_onPlayerInitOver',
function(e) {
    var question1 = [{
        "examId": "1699e49ffeb",
        "question": "第1个问题:1 x 2 = ?",
        "choices": [{
            "answer": "1"
        },
        {
            "answer": "2",
            "right_answer": 1
        },
        {
            "answer": "3"
        },
        {
            "answer": "4"
        }],
        "answer": "",
        "wrongAnswer": "",
        "skip": true,
        "wrongTime": 5,
        "showTime": 10
    }];
    player.sendQuestion(question1);
});
window.onQuestionSkip = function(data, vid) {
    console.log('onQuestionSkip', data, vid);
}
window.onQuestionPopUp = function(data, vid) {
    console.log('onQuestionPopUp', data, vid);
}
window.onAnswerResult = function(isRight, data, msg, seekTime, vid) {
    console.log('onAnswerResult',isRight, data, msg, seekTime, vid);
    if (!isRight) {
        var question2 = [{
            "examId": "1699e49ffef",
            "question": "第2个问题:2 x 2 = ?",
            "choices": [{
                "answer": "1"
            },
            {
                "answer": "2"
            },
            {
                "answer": "3"
            },
            {
                "answer": "4",
                "right_answer": 1
            }],
            "answer": "",
            "wrongAnswer": "",
            "skip": true,
            "wrongTime": 5,
            "showTime": 10
        }];
        player.changeQuestion(10, question2);
    }
}
</script>

参数说明

参数名称 是否必填 默认值 描述
examId - 生成规则:Long.toHexString(System.currentTimeMillis()),11位的字符串,比如:1699e49ffeb,传值后可通过答题记录查询接口查询记录。
showTime - 题目出现时间,单位:秒
question - 题目
choices - 选项
right_answer - 正确答案
answer - 回答正确后的解答
wrongAnswer - 回答错误后的解答
wrongTime -1 回答错误后退回第几秒,-1代表不回退
skip true 能否跳过题目继续播放视频
illustration - 问答图片的URL
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

属性和接口说明

播放器属性

将所有参数以对象形式传入播放器,可以设置的属性包括:

名称 类型 是否必填 描述
vid string 上传到保利威平台的音视频的唯一ID
viewerInfo object 可选 自定义观众信息。设置后,播放器上报的观看行为日志中会附带观众信息。详见观众信息设置与统计
wrap string 可选 需要载入播放器的css选择器
skin string 可选 播放器皮肤(white / grey),如果使用自定义播放器皮肤,则不需传该参数。
autoPlay boolean 可选 是否自动播放。注:目前大多数浏览器都会限制自动播放,该参数可能无效。
loop boolean 可选 是否循环播放
volume number 可选 音量(范围0~1)
speed number 可选 倍速播放
startTime number 可选 从第几秒开始播放,需小于视频时长
playsafe function | string 可选 PC端播放加密音/视频所需的授权凭证,若要在PC端播放加密音视频才需要该参数,非加密音视频可忽略。详见:播放加密视频
playsafeUrl string 可选 获取PC端播放加密音/视频凭证的接口URL。与playsafe参数二选一。
sign string 可选 移动端播放加密音/视频所需的签名,非加密音/视频可忽略。详见:播放加密视频
ts string 可选 移动播放加密音/视频需传入的时间戳。

静态属性

可以通过 PlvAudioPlayer[key] 获取。

名称 类型 描述
EventType object 回调事件的汇总。

实例属性

每个播放器实例都有以下属性:

名称 类型 描述
audio object 原生的 audio 对象。
currentTime number 当前播放位置,单位:秒。
duration number 当前音频时长,单位:秒。
paused boolean 当前是否暂停状态。

播放器接口

API需要在播放器初始化完成之后调用,比如:

plvAudioPlayer.on('ready', function() {
  console.info('播放器初始化完毕');
  plvAudioPlayer.seek(100); // seek到第100秒
});

播放器接口列表如下:

名称 参数类型 说明
play / 开始播放
pause / 暂停播放
(async) changeVid (String|Object) 切换媒体文件。可传入vid字符串,或包含playsafe、sign、ts、vid属性的对象。
seek Number 跳转到指定位置播放,参数单位为:秒。
setLoop Boolean 是否循环播放
setSpeed Number 设置倍速播放,参数取值(0,16]。非法值将设置为 1。
setVolume Number 设置音量,参数取值[0,1]。非法值将设置为1。
stop / 终止播放
(async) updateParam / 更新播放器参数,音频会结束播放并重新下载。支持本文档中所列的播放器属性参数。
destroy / 销毁当前播放器实例

播放器事件

播放器提供了一些常用的事件回调,使用方法如:

plvAudioPlayer.on('ready', function() {
  console.info('ready');
});

事件列表如下:

名称 说明
ready 播放器初始化完毕,播放器提供的方法需在此事件发生后才可以调用。参数返回包含音频信息的data对象,可通过data.audioInfo 获取音频相关信息。
loadstart 在媒体开始加载时触发。
play 媒体播放时触发
playing 播放中,会触发多次
pause 暂停时触发
seeking 在跳跃操作开始时触发
seeked 在跳跃操作完成时触发
ratechange 在播放速率改变时触发
timeupdate 当前播放时间点(currentTime属性)改变时触发
waiting 在一个待执行的操作(如播放)因等待另一个操作(如跳跃或加载)被延迟时触发。
ended 播放结束时触发
stop stop方法完成后触发
hlsError 播放hls文件发生错误时触发
serverError 发生播放错误时触发,参数返回保护报错信息的data对象,可以通过 data.code 获取报错信息的错误码
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

H5同层播放

在Android手机上使用H5播放视频时,大多数的国内浏览器厂商都会在视频播放时劫持<video>标签,使用浏览器自带的播放器播放视频,而且播放器会处于最高层级,视频上面无法显示其它html元素。比如在Android微信下播放视频,Polyv播放器的皮肤控件没有显示出来,也是这个原因。对于这种情况暂时没有有效的解决办法。

但是由于X5内核的浏览器(微信、QQ浏览器)提供了一些属性可以解决覆盖Dom元素的问题,腾讯命名为同层播放。Polyv播放器支持在Android手机上开启同层播放功能,此功能只对使用了腾讯X5内核的浏览器有效,比如微信、QQ。

开启同层播放的播放器代码示例如下:

<div id="player"></div>
<script src="//player.polyv.net/script/player.js"></script>
<script>
var player = polyvPlayer({
    wrap: '#player',
    width: 800,
    height: 533,
    vid: '88083abbf5bcf1356e05d39666be527a_8',   
    useH5Page: true // 开启同层播放
});
</script>

注:经测试发现,小部分机型的微信、QQ内同层播放参数可能不生效。

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

授权播放和防录屏跑马灯

屏幕录像是最难防范的一种视频盗版方式,保利威播放器提供的防录屏跑马灯功能,通过设定文字内容(一般是观众的身份ID信息)在视频上不规则滚动,以此来警示盗版者,达到视频版权保护的效果。

另外在用户网站中,除了通过登录信息(cookies)验证观众是否有权限访问视频播放页面外,还可以通过保利威播放器验证观众是否有播放某一个视频的权限,从而实现对观众权限的双重验证。

防录屏跑马灯的视频介绍:防录屏神器–跑马灯(视频)

实现流程

image-20200831160621474

实现步骤

一、管理后台设置

  1. 登录云点播管理后台,点击 【设置】【视频设置】,进入视频设置页面。
  2. 在授权播放和防录屏跑马灯接口设置栏中,填写业务方的接口服务URL。
    image-20200831161317380

播放器在请求授权接口时,会自动适配以下情况:

  1. 当填写的是完整的URL时,播放器会直接请求,例如:http://mywebsite.com/interface/validate。
  2. 当填写的是不带协议头的接口地址时,播放器会根据当前页面的请求协议自动补全。例如填写的是://mywebsite.com/interface/validate,当前页面使用https协议访问,那么实际请求的是:https://mywebsite.com/interface/validate。
  3. 当填写的是不带协议头和HOST的接口地址时,播放器会根据当前页面的请求协议和HOST自动补全。例如填写的是:/interface/validate 或 interface/validate,当前页面的域名是mywebsite2.com,且页面使用http协议访问,那么实际请求的是:http://mywebsite2.com/interface/validate。

二、业务方服务端实现

1、播放器端请求

当管理后台设置授权播放和跑马灯接口后,Polyv播放器在播放视频时会首先请求后台设置的接口,请求的方式为GET,并且会附带vid、code、t、callback这四个参数,例如:https://www.mywebsite.com/validate?vid=e2e84a73837363106d8d257f60e55c4c_e&code=&t=1457938821973&callback=polyvObject16209048491895664483_1457938783908&_=1457938784101。

其中code为播放器嵌入代码中的参数,值可以自定义;t为播放器产生的随机数。播放器示例代码如下:

<script src='https://player.polyv.net/script/player.js'></script>
<div id='player'></div>
<script>
var player = polyvPlayer({
    wrap: '#player',
    width: 800,
    height: 533,
    vid: '88083abbf5bcf1356e05d39666be527a_8',   
    code: 'myCodeValue'  // 用户可自定义参数值,也可以不设置此参数,那么在请求接口时该参数值为空。参数值为中文时需要做base64URLSafe。
});
</script>

由于H5播放器通过Ajax方式请求用户接口,需要跨域请求,因此需要callback参数。而Flash播放器是通过跨域文件实现跨域,所以不需要callback参数,请求接口时只会提交vid、code和t三个参数。Flash播放器实现跨域请参考跨域访问设置

2、服务端接口实现

业务方服务端接口如果只需实现授权验证的功能,只需返回 status、username、sign三个参数给播放器验证即可。

服务端实现的PHP示例如下:

// validate.php
<?php
$username = "elvis"; // 用户昵称, 若值为中文需要urlencode('张三'),可从session获取
$secretkey = "secretkey"; // 登录保利威管理后台,点击 【设置】 → 【API接口】获取
$vid=$_GET["vid"];
$t = $_GET["t"];
$code = $_GET["code"];

if($username=="elvis"){ 
  $status = 1; // 业务方可自定义授权验证逻辑
}else {
  $status = 2;
}
if(!empty($_GET["callback"])){
  $callback = $_GET["callback"];
}else{
  $callback = '';
}

$sign=md5("vid=$vid&secretkey=$secretkey&username=$username&code=$code&status=$status&t=$t");
$array=Array("status"=>$status,"username"=>$username,"sign"=>$sign);
$Json = json_encode($array);

if($callback!=''){ //PC H5播放器会提交callback参数
  echo $callback."(".$Json.")";
} else{ //Flash播放器不提交callback参数
  echo "(".$Json.")";
}
?>

其中,sign的计算规则为:拼接vid、secretkey、username、code、status、t参数做MD5计算:

Plain ="vid=" + vid + "&secretkey=" + secretKey + "&username=" + username + "&code=" + code + "&status=" +status + "&t=" + t
sign = MD5.hash(Plain);

以下为接口返回示例:

  polyvObject16208229674372271079_1478765178186({
  "status":1,
  "username":"elvis",
  "sign":"1cca74bd55c6076091ed84807065e5b7"
  })
// 不提交callback参数时
{
  "status":1,
  "username":"elvis",
  "sign":"2c2bfb00314da7d768d50a7d1e93bd9f"
}

如果除了授权验证,还需实现跑马灯功能,则接口需要返回跑马灯相关的参数。

服务端实现的PHP示例如下:

// validate.php
<?php
$username = "elvis"; // 用户昵称, 若值为中文需要urlencode('张三'),可从session获取
$secretkey = "secretkey"; // 登录保利威管理后台,点击 【设置】 → 【API接口】获取
$vid=$_GET["vid"];
$t = $_GET["t"];
$code = $_GET["code"];
$fontSize="40";
$fontColor="0xFFE900";
$speed="200";
$filter="on";
$setting="3";
$alpha="1";
$filterAlpha="1";
$filterColor="0x3914AF";
$blurX="2";
$blurY="2";
$tweenTime="1";
$interval="5";
$lifeTime="3";
$strength="4";
$show="on";
$msg="Errormessage!";

if($username=="elvis"){ // 业务方可自定义授权验证逻辑
 $status = 1;
}else {
 $status = 2;
}

if(!empty($_GET["callback"])){
 $callback = $_GET["callback"];
}else{
 $callback = '';
}

$sign=md5("vid=$vid&secretkey=$secretkey&username=$username&code=$code&status=$status&t=$t&msg=$msg&fontSize=$fontSize&fontColor=$fontColor&speed=$speed&filter=$filter&setting=$setting&alpha=$alpha&filterAlpha=$filterAlpha&filterColor=$filterColor&blurX=$blurX&blurY=$blurY&interval=$interval&lifeTime=$lifeTime&tweenTime=$tweenTime&strength=$strength&show=$show");
$array = Array("status"=>$status,"username"=>$username,"sign"=>$sign,"msg"=>$msg,"fontSize"=>$fontSize,"fontColor"=>$fontColor,"speed"=>$speed,"filter"=>$filter,"setting"=>$setting,"alpha"=>$alpha,"filterAlpha"=>$filterAlpha,"filterColor"=>$filterColor,"blurX"=>$blurX,"blurY"=>$blurY,"tweenTime"=>$tweenTime,"interval"=>$interval,"lifeTime"=>$lifeTime,"strength"=>$strength,"show"=>$show,);
$Json = json_encode($array);

if($callback!=''){
 echo $callback."(".$Json.")";
} else{
 echo $Json;
}
?>

其中,sign的计算规则为(参数必须按照示例中的顺序拼接):

Plain = "vid=" + vid + "&secretkey=" + secretKey + "&username=" + username + "&code=" + code + "&status=" + status + "&t=" + t + 
"&msg=" + msg + "&fontSize=" + fontSize + "&fontColor=" + fontColor + "&speed=" + speed +"&filter=" +filter + "&setting=" + setting + 
"&alpha=" + alpha + "&filterAlpha=" + filterAlpha  + "&filterColor=" + filterColor + "&blurX=" + blurX + "&blurY=" + blurY + 
"&interval=" + interval + "&lifeTime=" + lifeTime + "&tweenTime=" + tweenTime + "&strength=" + strength + "&show=" +show;
sign = MD5.hash(Plain);

例如:当vid="8f8482aaab11dd5f45f183a9192a04c5_8",secretkey="AiDQw1mAmi",username="suki",code="abc",status="1",t="143020010115550947",msg="Errormessage!",fontSize="40",fontColor="0xFFE900",speed="200",filter="on",setting="3",alpha="1",filterAlpha="1",filterColor="0x3914AF",blurX="2",blurY="2",interval="5",lifeTime="3",tweenTime="1",strength="4",show="on"时,
拼凑起来去MD5计算的字符串为:
vid=8f8482aaab11dd5f45f183a9192a04c5_8&secretkey=AiDQw1mAmi&username=suki&code=abc&status=1&t=143020010115550947&msg=Errormessage!&fontSize=40&fontColor=0xFFE900&speed=200&filter=on&setting=3&alpha=1&filterAlpha=1&filterColor=0x3914AF&blurX=2&blurY=2&interval=5&lifeTime=3&tweenTime=1&strength=4&show=on
则sign为MD5计算后32位小写的值:3b07f56f29b7fd728bf20020442338e7

以下为接口返回示例:

{
  "status":1,
  "username":"elvis",
  "sign":"6ab63590797e513d1b6c46b407413478",
  "msg":"Errormessage!",
  "fontSize":"40",
  "fontColor":"0xFFE900",
  "speed":"200",
  "filter":"on",
  "setting":"3",
  "alpha":"1",
  "filterAlpha":"1",
  "filterColor":"0x3914AF",
  "blurX":"2",
  "blurY":"2",
  "tweenTime":"1",
  "interval":"5",
  "lifeTime":"3",
  "strength":"4",
  "show":"on"
}

三、接口返回参数说明

参数名 类型 必填 默认值 说明
status Integer / 是否允许播放:1 允许 2 禁止
username String / 观众名称,也会用于跑马灯显示的文字内容。如果是中文需要做URLEncode
sign String / 接口签名,用于校验返回内容是否被篡改
show String off 当参数值为“on”时表示显示跑马灯,默认不显示
setting Integer 1 跑马灯滚动的样式:1 从右到左滚动 2 随机位置闪烁 3 从右到左闪烁滚动
speed Integer 200 跑马灯文字从右侧移至左侧所需时间,单位:1/10秒
lifeTime Integer 3 跑马灯文字显示时间,单位:秒
interval Integer 5 跑马灯文字隐藏间隔时间,单位:秒
tweenTime Integer 1 跑马灯文字渐隐渐现时间,单位:秒
fontSize Integer 30 跑马灯文字的字体大小
fontColor String 0x000000 跑马灯文字颜色,使用十六进制颜色值表示,如0xFF0000,默认为黑色
alpha Float 1 跑马灯文字透明度,取值范围0.01~1,参数值不能小于0.01
filter String off 跑马灯文字是否描边,on 描边 off 不描边
filterAlpha Float 1 文字描边透明度,取值范围0~1
filterColor String 0x000000 文字描边颜色,使用十六进制颜色值表示,如0xFF0000,默认为黑色
strength Integer 4 描边强度,取值范围0~255
blurX Integer 2 描边水平模糊量,取值范围0~255
blurY Integer 2 描边垂直模糊量,取值范围0~255
msg String / 自定义错误提示信息
  1. 当接口只做授权验证用途时,只需返回 status、username和sign三个参数,跑马灯相关参数可不返回。
  2. 请确保接口返回数据是utf-8编码,注意 status参数是整型,不能是字符串类型。
  3. 目前跑马灯功能不支持在移动端H5播放器上使用。
  4. 请尽量不要对播放器样式或\标签进行修改
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

视频加密

域名黑白名单、授权播放等安全机制主要用于控制视频播放请求来源的合法性,能够有效保障用户的合法访问。但这些机制不会对视频数据本身进行加密,对于付费观看视频的业务场景,用户只需通过一次付费行为拿到视频资源URL便可将视频下载到本地并进行二次分发,因此,这些机制对于视频版权保护是不够的。

保利威视频加密采用私有的加密算法,提供包括加密转码、安全传输、解密播放等一体化的视频安全方案。通过对视频数据本身进行高强度的加密,视频文件即使被下载到本地也无法直接播放和传播,可有效防止视频泄露和盗版问题。

核心优势

保利威视频加密的核心优势有:

  • 保利威视频加密功能采用自有知识产权的专利技术,视频的加密转码、传输、解密播放全部受私有算法保护,破解难度极高。
  • 每个视频文件都有独立的私钥,能有效避免一个密钥的泄露引起大范围的安全问题。播放器和服务端使用加密协议进行密文传输,有效防止密钥被窃取。
  • 提供多套不同安全级别的加密方案,可根据自身业务场景选择。
  • 提供安全的播放器SDK,覆盖H5、Flash、iOS、Android、小程序、桌面客户端等多平台,且加密视频必须使用保利威安全播放器才能播放。
  • 云点播平台提供了完整的加密视频播放授权体系,开发者只需获取播放凭证并传入Polyv播放器即可实现加密播放,免去了凭证和密钥的管理、验证、分发等开发工作。
  • Polyv播放器提供的授权播放和防录屏跑马灯功能,进一步加强了版权保护能力。
  • 保利威服务于上千家在线教育客户,视频版权保护技术不断更新迭代,始终处于行业领先水平。

流程架构

点播视频加密和解密播放的整体架构流程如下:

video-encryption

使用说明

一、后台配置

在云点播管理后台,支持针对整个账号或某个视频分类进行加密设置,操作流程如下:

1、登录云点播管理后台,点击 【设置】【加密设置】,进入加密设置页面。

image-20200915115350189

  • 视频加密设置:打开后,新上传的视频都会经过加密转码。
  • 加密视频授权设置:播放加密视频有四种授权方式,分别为:非加密授权、Web授权、App授权和小程序授权。这四种授权方式的安全级别不同,支持播放的终端也不同,您可以根据自身业务场景选择合适的授权方式。详见下表:

    授权方式/支持终端 PC Web 手机H5 手机APP PC 客户端 微信小程序
    非加密授权
    WEB授权
    APP授权 × ×
    小程序授权 ×
    1. 安全级别从高到低排序为:APP授权 > 小程序授权 > WEB授权 > 非加密授权。
    2. 如果您的业务场景只有手机APP播放,建议选择“APP授权”,如果有手机H5播放视频的需求,建议选择“WEB授权”,但Web授权的安全级别低于APP授权。
    3. 加密视频只能通过保利威提供的安全播放器SDK才能播放。

2、开启加密设置后,所有新上传的视频都会经过加密转码。管理后台还支持只对某一视频分类进行单独设置。操作方式为:点击 【视频列表】【视频分类管理】,选中某个分类,点击【分类属性设置】,进行分类下的加密设置。

image-20200915135521582

二、播放加密视频

加密视频必须使用保利威提供的播放器才能播放,云点播提供Web端、iOS、Android、小程序、桌面客户端等多平台的播放器SDK,以便您快速在自身应用或网站中集成。

  • Web播放器(PC/手机 H5、Flash):通过引入Polyv Web播放器代码,可在自己的Web页面嵌入播放器并实现播放,详见:Web端播放加密视频
  • 移动端播放器(iOS、Android SDK):用户可以通过SDK快速集成视频播放能力到自己的应用中,详见:iOS SDKAndroid SDK
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

视频水印

视频水印是指在视频转码时,将水印图片编码进视频流中,使水印图片成为视频的一部分。企业可以把专属的Logo等信息作为视频水印显示在视频画面中,以此来展示企业版权信息和品牌形象。

需要注意的是,由于水印图片已经编进视频流,所以转码后的视频无法再次修改和隐藏水印。如需修改,只能重新设置水印并上传视频。

关于水印与播放器Logo的区别,详见:如何区分水印和LOGO

在管理后台设置水印

在云点播管理后台,支持针对整个账号或某个视频分类进行水印设置,操作流程如下:

  1. 登录云点播管理后台,点击 【设置】【视频设置】,进入视频设置页面。
  2. 在视频水印设置栏中,上传水印图片并设置水印的显示位置。设置水印后,会对账号下所有新上传视频生效。

    image-20200914115910569

  3. 如果只想针对某个视频分类进行水印设置时,点击 【视频列表】【视频分类管理】,选取要设置水印的某个分类,点击【分类属性设置】,打开分类属性的设置弹窗。在视频水印处,可以上传水印图片并指定显示位置。

    image-20200914140742617

注:
1. 水印图片需要为png格式,图片宽或高的尺寸超过256px时会被等比缩放。
2. 水印设置成功后,只对新上传的视频生效,旧视频不受影响。
3. 云点播平台还支持利用ASS字幕文件来实现动态水印的效果,详见:通过ASS字幕实现动态视频水印效果

通过API设置水印

您可以通过API来设置账号或分类级别的水印,详见:设置视频水印

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...