视频播放小程序插件

保利威云点播小程序播放插件基于保利威强大的后台能力和视频处理技术并深度融合自身视频云业务,为用户提供简单、快速、安全、稳定的视频播放服务,让用户轻松聚焦于业务发展本身,畅享极速高清播放体验。

只需把视频上传到到保利威云点播平台后得到一个vid即可使用插件播放视频,快速与自有业务集成。

点击进入微信官方页面查看本文档。

微信小程序接入方式

申请使用插件

首先,参见微信官方的插件使用文档申请插件权限,在申请使用插件的使用时,填写以下appid:wx4a350a258a6f7876

引入插件

详见官方文档,尽量使用最新版本插件。

// 使用插件前,使用者要在 app.json 中声明需要使用的插件
"plugins": {
  "polyv-player": {
    "version": "0.1.5",
    "provider": "wx4a350a258a6f7876"
  }
}
// 使用插件提供的自定义组件。在 json 文件定义需要引入的自定义组件时,使用 plugin:// 协议指明插件的引用名和自定义组件名
"usingComponents": {
  "polyv-player": "plugin://polyv-player/player"
}

使用播放器组件

wxml文件

<polyv-player 
  id="{{playerId}}" // 组件ID
  playerId="{{playerId}}" //播放器ID
  vid="{{vid}}" // 视频ID
  viewerInfo="{{viewerInfo}}" // 观众信息
  autoplay="{{true}}" // 是否自动播放
  bind:statechange="onStateChange" //事件绑定
  > 
</polyv-player>

组件元素支持的属性:

属性 类型 必填 默认值 说明
id String Y / 组件ID,需全局唯一。用于获取播放器实例进而手动控制播放。
playerId String Y / 播放器ID,预留属性。
vid String Y / 视频上传保利威云点播平台后生成的唯一ID
width String N 100% 播放器的宽度,支持rpx值和百分比两种方式,如300px或100%。
height String N / 播放器高度,支持rpx值和百分比两种方式。当height值为空时,会采用组件父容器的高度。
viewerInfo Object N / 自定义观众信息。设置后,播放器上报的观看行为日志中会附带观众信息。详见:观众信息设置与统计
sign String N / 播放Web加密视频所需的签名,由业务方服务端生成并返回给播放器。详见:播放加密视频
ts Number N / 播放Web加密视频需传入的13位毫秒级时间戳
autoplay Boolean N false 是否自动播放。
muted Boolean N false 是否静音播放
loop Boolean N false 是否循环播放。
startTime Number N / 播放开始时间,表示视频从第几秒开始播放,参数值需小于视频时长。
poster String N / 视频封面图URL
direction Number N / 设置全屏时视频的方向,0 正常竖向,90 屏幕逆时针90度,-90 顺时针90度,不指定则根据宽高比自动判断
title String N / 视频全屏时在顶部显示的标题。为空时不显示。
quality Array N {1,2,3} 视频画质选择列表,1 流畅,2 高清,3 超清
defaultQuality Number N / 默认画质。
注:播放器会记录上次使用的画质,若无记录则取后台设置的值。
showQualityBtn Boolean N true 是否显示画质选择按钮
playbackRate Array N {0.5,0.8,1.0,1.25,1.5,2.0} 倍速选择列表,支持0.5/0.8/1.0/1.25/1.5/2.0倍速
showPlaybackRateBtn Boolean N true 是否显示倍速选择按钮
showControls Boolean N true 是否显示播放控件
showSettingBtn Boolean N false 是否显示半屏时播放控制栏的设置按钮
showProgressBar Boolean N true 是否显示进度条
showFullscreenBtn Boolean N true 是否显示全屏按钮
enableAutoRotation Boolean N true 是否开启手机横屏时自动全屏,当系统设置开启自动旋转时生效
isAllowSeek String N yes 是否允许进度条拖拽:yes 允许,no 不允许,ifViewed 只允许在已播放过的进度范围内拖拽
marqueeConfig Object N / 跑马灯参数设置,详见文档下方跑马灯参数说明。
logoConfig Object N 后台播放器logo设置 播放器logo设置:
enable:是否显示logo
width/height:logo宽高,支持像素和百分比两种单位,如 100px 或 10%。logo要保持原图比例,如果width和height与原图片比例不一致,不拉伸图片。以较小的一边为准,另一边等比例转换。当播放器尺寸发生变化时(比如横竖屏切换),logo等比例变化。
src:logo图片的url
position:logo位置1 左上,2 右上(默认)3左下 4 右下
xOffset:水平偏移,以播放器左上角所在的点为基准,只支持百分比
yOffset:垂直偏移,以播放器左上角所在的点为基准
logoConfig:{enable:true,width:10%,src:'xxx.png',position:1,opacity:0.7,xOffset:10%,yOffset:2%}
注:只需要指定width参数即可,height按比例显示。
videoIntroConfig Boolean N 后台播放器片头设置 视频片头设置:
enable:是否播放片头
duration:片头显示时长。大于片头视频素材时长则以素材时长为准
src:片头素材url,支持常见的视频和图片格式
show-skip-btn:是否显示跳过片头按钮
videoIntroConfig:{enable:true,duration:15,src:'xxx.mp4',show-skip-btn:false}
videoOutroConfig Boolean N 后台播放器片尾设置 视频片尾设置,使用方式同片头参数一致。
enablePlayGesture Boolean N true 是否开启双击切换播放/暂停手势

组件支持的事件

属性 说明
bindstatechange 播放状态变更事件,包含loading(资源加载中), ready(资源加载完成), playing(播放中,包含广告和视频), ended(广告和视频都播放完成), error,回调函数接受两个参数newstate,oldstate
另外自定义组件抛出了小程序原生video抛出的所有事件
bindplay 当开始/继续播放时触发play事件
bindpause 当暂停播放时触发 pause 事件
bindended 当播放到末尾时触发 ended 事件
bindtimeupdate 播放进度变化时触发,event.detail = {currentTime, duration} 。触发频率 250ms 一次
bindfullscreenchange 视频进入和退出全屏时触发,event.detail = {fullScreen, direction},direction 有效值为 vertical 或 horizontal
bindwaiting 视频出现缓冲时触发
binderror 视频播放出错时触发
bindprogress 加载进度变化时触发,只支持一段加载。event.detail = {buffered},百分比
bindloadedmetadata 视频元数据加载完成时触发。event.detail = {width, height, duration}
bindcontrolstoggle 切换 controls 显示隐藏时触发。event.detail = {show}
bindenterpictureinpicture 播放器进入小窗
bindleavepictureinpicture 播放器退出小窗
bindseekcomplete seek 完成时触发

插件API

可通过插件获取播放器实例,包含以下方法:

名称 参数 返回值 说明
play / / 播放视频
pause / / 暂停播放
stop / / 停止播放
seek (Number) / 跳转到指定位置,参数单位为:秒
getDuration / Number 获取视频时长,返回值单位为:秒
getCurrentTime / Number 获取视频当前的播放时刻,返回值单位为:秒
getVideoPlayDuration / Number 获取当前视频已播放的时长,不包含广告、片头、暂停、片尾等时间
getPlayId / String 获取当前播放行为的唯一标识,与后台统计中观看日志的pid字段对应
changeVid (String) / 切换视频
switchQuality (Number) / 切换画质,参数取值{1,2,3},分别对应流畅、高清、超清
playbackRate (Number) / 设置倍速播放,支持 0.5/0.8/1.0/1.25/1.5/2.0速率
requestFullScreen (Object) / 进入全屏。若有自定义内容需在全屏时展示,需将内容节点放置到 video 节点内。参数是Object类型,需包含direction属性,用于设置全屏时视频的方向,0 正常竖向,90 屏幕逆时针90度,-90 顺时针90度,不指定则根据宽高比自动判断direction合法值。
exitFullScreen / / 退出全屏

示例代码:

var polyvPlayerContext = this.selectComponent('#myComponentID'); // 通过插件的自定义组件ID获取
polyvPlayerContext.play();  // 播放
polyvPlayerContext.pause(); // 暂停
polyvPlayerContext.stop() //停止
polyvPlayerContext.seek(100);  //跳转到指定位置,单位:秒
polyvPlayerContext.playbackRate(1.5); // 设置播放速率

跑马灯参数

marqueeConfig参数属性如下:

属性 类型 必填 默认值 说明
text String Y / 跑马灯文字内容
fontSize Integer N 16 跑马灯字号
fontColor String N 0x000000 跑马灯字体颜色
textAlpha Float N 1 文字透明度,0~1
border Boolean N false 是否描边
borderColor String N 0x000000 描边颜色
borderAlpha Float N 1 描边透明度,0~1
borderWidth Integer N 5 描边宽度 0~255
animationEffect String N roll 跑马灯动画效果:
roll:从右到左滚动
blink :随机位置闪烁
displayDuration Number N 5 单次跑马灯显示的时长,单位:秒。
动画效果为roll时,表示单次滚动的时长(从开始滚入到完全滚出)
动画效果为blink时,表示从开始显示到完全消失所需的时长

错误代码

错误代码 说明
#001 套餐过期,请联系客服续期。
#002 套餐内流量已用完,请联系客服购买流量。
#003 视频配置文件加载失败。一般是由于网络问题导致无法加载视频配置文件,建议检查/切换网络并重试。
#004 视频不存在。请检查vid是否正确,视频是否已经被删除。
#005 视频审核不通过。只有“已发布”状态的视频才可以播放。
#007 视频文件加载失败。一般是由于网络问题导致无法加载视频文件,建议检查/切换网络并重试。
#008 视频文件加载超时。一般是由于网络问题导致加载视频文件超时,建议检查/切换网络并重试。
#009 视频正在审核中。只有“已发布”状态的视频才可以播放。
#010 视频正在编码中。只有“已发布”状态的视频才可以播放。
#012 跑马灯加载错误。请检查跑马灯接口返回的参数是否正确,详见:授权播放和跑马灯
#013 视频授权播放认证失败。请检查授权认证接口,详见:授权播放和跑马灯
#025 基于视频版权保护考虑,播放器会禁止app加密视频小程序上播放。详见:视频加密

Q&A

  • Q. 视频播放资质问题?

  • A. 使用视频插件播放不要求小程序主体具有文娱/视频资质是因为视频插件具有文娱/视频资质了,如果小程序主体还有用其他方式播放视频,那也需要文娱/视频资质的,详细资质说明请点此查看

版本迭代记录

  1. V0.1.0

    • 保利威云点播小程序播放插件发布
  2. V0.1.1
    • 播放器组件支持宽、高属性设置
  3. V0.1.2
    • 支持Logo设置参数:logoConfig
    • 支持跑马灯参数:marqueeConfig
  4. V0.1.3
    • 部分机型下样式出现错位问题修复
  5. V0.1.4
    • 新增播放器参数:

      1. videoIntroConfig&videoOutroConfig:支持片头片尾设置
      2. showSettingBtn:是否显示半屏状态下的设置按钮
      3. isAllowSeek:是否允许拖拽进度条
  6. V0.1.5
    • 内部优化
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

批量删除视频

接口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 long 当前13位毫秒级时间戳,3分钟内有效
deleteType false int 删除方式,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

请求数限制

TRUE

请求参数

参数名 必选 类型及范围 说明
ptime true long 13位的当前时间毫秒级时间戳
sign true string 签名
userId true string userId,路径参数
vids true string 视频vid,多个视频以英文逗号分隔,如a2dc4f25179499d6586362672838cc2d_a,a2dc4f25179499d6586362672838cc2d_a 一次最多只能传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";
        url = String.format(url, userId);
        Map<String, String> params = new HashMap<>();
        params.put("vids", "xxxxxx,xxxxxx");
        long ptime = System.currentTimeMillis();
        params.put("ptime", String.valueOf(ptime));
        params.put("forbidden", "1");
        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...

问答弹题

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

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...