polyvVideo

来自于:保利威视立即使用

概述

保利威视简介

保利威视(商标名“POLYV”)是一个第三方视频技术服务商,提供视频云计算服务平台,为教育行业等提供视频解决方案,隶属于广州易方信息科技有限公司,实现网络视频跨终端播放,是一家拥有自主知识产权的高新技术企业。

保利威视特色功能

  • 无广告,不用再为视频播放前、暂停时的广告而烦扰和等待,向视频广告说NO!
  • 极速加载,全网络覆盖,包含电信、联通、移动、教育网等运营商,通过智能CDN技术,为用户带来极速播放体验。
  • 安全可靠,多副本的分布式存储系统保障数据安全性,三套CDN系统同时保障分发传输系统可靠性。
  • 金牌服务,提供7*24小时的技术支持服务,且可由开发者直接面对开发者,以最快速度解决用户问题,打造行业服务标杆。

模块概述

polyvVideo 模块封装了保利威视 Android 与 iOS 原生 SDK,集成了保利威视常用的基本接口。使用本模块可以轻松把保利威视 Android 与 iOS SDK 集成到自己的 app 中,实现保利威视视频播放、下载、上传等功能。目前本模块仅包含保利威视视频播放功能,其他功能及其文档将持续更新,并以子模块形式添加到本模块中,敬请期待。

注意事项

  • 使用本模块需要配置保利威视用户信息,即 app sdk 加密串(需配置到 res/key.xml 中),开发者通过调用配置子模块中的 setConfig 方法进行配置。

配置子模块

polyvConfigModule 封装了对本模块用户配置的功能。

开发者要播放保利威视视频,需要到 保利威视官网 注册账号,并上传视频,获取 app sdk 加密串,并将其配置到 key.xml 文件中,key.xml 文件需要放在 res 文件目录下。

key.xml 配置详解:

配置格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<security>
    <item name="config" value="Q8T911eMCDjuRv/QjEF6KDovkjJx/w+ysCHa63lI8rccLuZ04GziWqjb24jUZMLRjBs1ceEo0zhHd6XXOrvO4fjqd5sdEIW/mBFqII3gszi4P8MuNYmyR7sJudbdgU91JXtby30a+M6EI7gCnPWdwQ=="/>
    <item name="aeskey" value="VXtlHmwfS2oYm0CZ"/>
    <item name="iv" value="2u9gDPKdX6GyQJKU"/>
</security>
  • 字段描述:

    • config:(必须配置)保利威视账号下的 app SDK 加密串(登录账号后,进入 云点播 \ 设置 \ API接口 \ SDK加密串
    • aeskey:(可选配置,默认值VXtlHmwfS2oYm0CZ)保利威视账号下的 app SDK 加密串的加密密钥,用来解密SDK加密串(登录账号后,进入 云点播 \ 设置 \ API接口 \ 加密密钥
    • iv:(可选配置,默认值2u9gDPKdX6GyQJKU)保利威视账号下的 app SDK 加密串的加密向量,用来解密SDK加密串(登录账号后,进入 云点播 \ 设置 \ API接口 \ 加密向量

setConfig

配置本模块来自保利威视注册账号的用户信息,本方法只需调用一次

setConfig()

示例代码

var polyvConfig = api.require('polyvConfigModule');
polyvConfig.setConfig();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

视频播放子模块

polyvVideoModule 封装了保利威视视频播放功能。

open

打开一个视频播放器,通过回调返回播放状态

open({params},function(ret))

params

rect

  • 类型:JSON对象
  • 描述:(可选项)模块的位置及尺寸,(仅对视频有效)
  • 内部字段:
{
    x: 0,    //(可选项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:0
    y: 0,    //(可选项)数字类型;模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:0
    w: 320,    //(可选项)数字类型;模块的宽度;默认:所属的 Window 或 Frame 的宽度
    h: 300    //(可选项)数字类型;模块的高度;默认:w的3/4
}

path

  • 类型:字符串
  • 描述:(可选项)文档的路径,要求本地路径(fs://),在 android 平台上不支持 widget,若 vid 不为空,则忽略本参数

vid

  • 类型:字符串
  • 描述:(可选项)视频的vid,播放网络视频时需要,若本参数不为空,则忽略 path 参数

autoPlay

  • 类型:布尔
  • 描述:(可选项)打开时是否自动播放
  • 默认值:true(自动播放)

fixedOn

  • 类型:字符串
  • 描述:(可选项)模块所属 Frame 的名字,若不传则模块归属于当前 Window

fixed

  • 类型:布尔
  • 描述:(可选项)模块是否随所属 Window 或 Frame 滚动
  • 默认值:true(不随之滚动)

callback

ret:

  • 类型:JSON对象
  • 描述:本回调函数在播放状态改变时执行
  • 内部字段:
{
    eventType:    //字符串类型;回调事件类型,取值范围如下:
                //show (打开播放器成功并显示)
                //start(开始播放)
                //stop(停止播放)
                //pause(暂停播放)
                //resetPath(重设媒体资源路径)
                //complete(播放完毕)
}

err:

  • 类型:JSON对象
  • 描述:本回调函数在播放错误时执行
  • 内部字段:
{
    msg:    //字符串类型;错误信息
}

示例代码

var obj = api.require('polyvVideoModule');
obj.open({
    rect: {
        x: 0,
        y: 0,
        w: 320,
        h: 240
    },
    path:'fs://res/intro.mp4', // 传递本地路径
    // vid:'sl8da4jjbx1c8baed8a48212d735d905_s', // 传递 vid
    autoPlay: true,
    fixedOn: api.frameName,
    fixed: false
},function(ret,err){
    var eventType = ret.eventType;
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setPath

设置视频的文件路径

setPath({params})

params

path

  • 类型:字符串
  • 描述:文档的路径或 HTTP 协议视频 URL,要求本地路径(fs://),在 android 平台上不支持 widget

示例代码

var obj= api.require('polyvVideoModule');
obj.setPath({
    path:'fs://res/video.mp4'
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setVid

设置播放视频的 vid

setVid({params})

params

vid

  • 类型:字符串
  • 描述:视频 vid

示例代码

var obj= api.require('polyvVideoModule');
obj.setVid({
    vid:'sl8da4jjbxc5565c46961a6f88ca52e5_s',
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

start

开始播放

start()

示例代码

var obj= api.require('polyvVideoModule');
obj.start();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

pause

暂停播放

pause()

示例代码

var obj= api.require('polyvVideoModule');
obj.pause();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stop

停止播放

stop()

示例代码

var obj= api.require('polyvVideoModule');
obj.stop();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

close

关闭播放器

close()

示例代码

var obj= api.require('polyvVideoModule');
obj.close();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

show

显示视频播放视图

show()

示例代码

var obj= api.require('polyvVideoModule');
obj.show();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

hide

隐藏视频播放视图

hide()

示例代码

var obj= api.require('polyvVideoModule');
obj.hide();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

fullScreen

全屏播放(横屏模式)

fullScreen()

示例代码

var obj= api.require('polyvVideoModule');
obj.fullScreen();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

cancelFullScreen

取消全屏播放

cancelFullScreen()

示例代码

var obj= api.require('polyvVideoModule');
obj.cancelFullScreen();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getDuration

获得当前视频时长

getDuration(callBack(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    duration:    // 数字类型;当前视频时长
}

示例代码

var obj = api.require('polyvVideoModule');
obj.getDuration(function(ret,err){
    alert(ret.duration);
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getCurrentPosition

获取视频当前播放位置(时间)

getCurrentPosition(callBack(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    currentPosition:    // 数字类型;视频当前播放进度(时间)
}

示例代码

var obj = api.require('polyvVideoModule');
obj.getCurrentPosition(function(ret,err){
    alert(ret.currentPosition);
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getBufferPercentage

获取视频当前缓存进度

getBufferPercentage(callBack(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    bufferPercentage:    // 数字类型,取值:0~100;当前缓存进度
}

示例代码

var obj = api.require('polyvVideoModule');
obj.getBufferPercentage(function(ret,err){
    alert(ret.bufferPercentage);
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

isPlaying

当前视频是否正在播放

isPlaying(callBack(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    isPlaying:    // bool 类型;视频是否正在播放
}

示例代码

var obj = api.require('polyvVideoModule');
obj.isPlaying(function(ret,err){
    alert(ret.isPlaying);
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

forward

快进

forward(params)

params

seconds

  • 类型:数字
  • 描述:快进的秒数

示例代码

var obj= api.require('polyvVideoModule');
obj.forward({
    seconds:5
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

rewind

快退

rewind(params)

params

seconds

  • 类型:数字
  • 描述:快退的秒数

示例代码

var obj= api.require('polyvVideoModule');
obj.rewind({
    seconds:5
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

seekTo

跳转

seekTo(params)

params

seconds

  • 类型:数字
  • 描述:跳转到音视频播放的秒数

示例代码

var obj= api.require('polyvVideoModule');
obj.seekTo({
    seconds:20
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setBrightness

设置屏幕亮度

setBrightness(params)

params

brightness

  • 类型:数字
  • 描述:(可选项)设置的屏幕的亮度,取值范围:0-100,在 IOS 平台上设置的是系统屏幕亮度。Android 平台上设置的本应用内的屏幕亮度
  • 默认值:80

示例代码

var obj = api.require('polyvVideoModule');
obj.setBrightness({
    brightness:50
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getBrightness

获取当前屏幕亮度值

getBrightness(callBack(ret))

callback(ret)

ret

  • 类型:JSON对象
  • 内部字段:
{
    brightness:    //数字类型;当前屏幕亮度值
}

示例代码

var obj = api.require('polyvVideoModule');
obj.getBrightness(function(ret,err){
    alert(ret.brightness);
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setVolume

设置音量

setVolume({params})

params

volume

  • 类型:数字
  • 描述:(可选项)音量大小,取值范围:0-1
  • 默认值:0

示例代码

var obj = api.require('polyvVideoModule');
obj.setVolume({
    volume:0.6
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getVolume

获取当前音量

getVolume(callBack(ret,err))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    volume:    //数字类型;当前音量值
}

示例代码

var obj = api.require('polyvVideoModule');
obj.getVolume(function(ret){
    alert(ret.volume)
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

addEventListener

添加手势监听(当全屏或者 fixed 为 true 且页面不能被左右滑动时有效)

addEventListener({params},callBack(ret,err))

params

name

  • 类型:字符串
  • 描述:所要监听的手势名称
  • 取值范围:
    • leftUp:播放器靠左的二分之一内的上滑事件,每滑动5(百分比)回调执行一次
    • leftDown:播放器靠左的二分之一内的下滑事件,每滑动5(百分比)回调执行一次
    • rightUp:播放器靠右的二分之一内的上滑事件,每滑动5(百分比)回调执行一次
    • rightDown:播放器靠右的二分之一内的下滑事件,每滑动5(百分比)回调执行一次
    • swipeLeft:播放器上的左滑事件,每滑动5(百分比)回调执行一次
    • swipeRight:播放器上的右滑事件,每滑动5(百分比)回调执行一次
    • click:点击播放器事件(单击手势)

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    start:    //布尔类型;事件是否开始,true|false
    end:    //布尔类型;事件是否结束,true|false
            //手指处于滑动屏幕状态时,start、end 均为false
}

示例代码

var obj = api.require('polyvVideoModule');
obj.addEventListener({
    name:'leftUp'
},function(ret){
    alert('leftUp');
}

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

removeEventListener

移除手势监听

removeEventListener({params})

params

name

  • 类型:字符串
  • 描述:所要移除的监听的手势名称
  • 取值范围:
    • leftUp:播放器靠左的二分之一内的上滑事件,每滑动5(百分比)回调执行一次
    • leftDown:播放器靠左的二分之一内的下滑事件,每滑动5(百分比)回调执行一次
    • rightUp:播放器靠右的二分之一内的上滑事件,每滑动5(百分比)回调执行一次
    • rightDown:播放器靠右的二分之一内的下滑事件,每滑动5(百分比)回调执行一次
    • swipeLeft:播放器上的左滑事件,每滑动5(百分比)回调执行一次
    • swipeRight:播放器上的右滑事件,每滑动5(百分比)回调执行一次
    • click:点击播放器事件(单击手势)

示例代码

var obj = api.require('polyvVideoModule');
obj.removeEventListener({
    name:'leftUp'
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setControlStyle

设置播放控制组件样式(仅对iOS有效!)

setControlStyle({params})

params

controlStyle

  • 类型:字符串
  • 描述:播放控制组件样式
  • 取值范围:
    • none:无播放控制组件
    • embedded:默认播放控制组件
    • fullscreen:全屏样式播放控制组件

示例代码

var obj= api.require('polyvVideoModule');
obj.setControlStyle({
    controlStyle:'none'
});

可用性

iOS系统

可提供的1.0.0及更高版本

setPlayerFrame

设置播放器位置与尺寸(仅对iOS有效!)

setPlayerFrame({params})

params

x

  • 类型:数字类型
  • 描述:播放器横坐标值

y

  • 类型:数字类型
  • 描述:播放器纵坐标值

w

  • 类型:数字类型
  • 描述:播放器宽度

h

  • 类型:数字类型
  • 描述:播放器高度

示例代码

var obj= api.require('polyvVideoModule');
obj.setPlayerFrame({
    x: 0,
    y: 20,
    w: 320,
    h: 320
});

可用性

iOS系统

可提供的1.0.0及更高版本

视频下载子模块

polyvVideoDownloadModule 封装了保利威视视频下载功能,支持断点下载。

addDownloader

通过 vid 和 指定码率(level) 创建一个视频下载器,并添加到下载列表

addDownloader({params},function(ret))

params

downloadArr

  • 类型:字典数组
  • 描述:包含多个需要下载的“vid + level”视频;每个 vid 只能下载一个码率,要想下载新的码率的视频,需删除该 vid 已下载的视频,才能添加下载
  • 内部字段:
[
    {
        vid:        // 字符串类型;视频 vid
        level:    // 数字类型;视频码率(1 为流畅,2 为高清,3 为超清;如果设置的码率不存在,就会下载默认最高清的码率)
    },
    {
        vid:        // 视频 vid
        level:    // 视频码率
    },
    ...
]

callback

ret:

  • 类型:JSON对象
  • 描述:下载器状态列表。本回调函数在下载器开始下载后,下载状态发生变化时执行
  • 内部字段:
{
    vid0: {
                downloadStatus:    // 字符串类型;回调事件类型,取值范围如下:
                                // ready(下载器准备就绪)
                                // stopped (下载被停止)
                                // finished(下载完成)
                                // failed(下载失败)
                                // downloading(下载中)
                downloadPercentage:    // 数字类型,取值:0~100;当前下载进度
            }, // 以 vid(字符串) 为键,下载器状态(字典)为值
    vid1: {...},
    ...
}

err:

  • 类型:JSON对象
  • 描述:本回调函数在下载失败时执行
  • 内部字段:
{
    vid0: "msg0", // 以 vid(字符串) 为键,错误信息(字符串)为值
    vid1: "msg1",
    ...
}

示例代码

var obj= api.require('polyvVideoDownloadModule');
obj.addDownloader({
    downloadArr: [{
        vid:'sl8da4jjbx1c8baed8a48212d735d905_s',
        level:1
    }]}
,function(ret,err){
    for (var vid in ret){
        var statusDict = ret[vid];
        var downloadStatus = statusDict.downloadStatus;
        alert(vid + "\n" + downloadStatus);
    }
    for (var vid in err){
        alert(vid + "\n" + err[vid]);
    }
});

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

getDownloadList

返回下载列表

getDownloadList(function(ret))

callback

ret:

  • 类型:JSON对象
  • 描述:下载器列表,包含成功添加到下载列表的视频的 vid 和 码率。
  • 内部字段:
{
    downloadList: [
        {
            vid:    // 视频 vid
            level:    // 视频码率
        },
        {
            vid:    // 视频 vid
            level:    // 视频码率
        },
        ...
    ]
}

示例代码

var obj= api.require('polyvVideoDownloadModule');
obj.getDownloadList(function(ret, err){
    var downloadList = ret.downloadList;
    for (var i in downloadList){
        var dict = downloadList[i];
        var vid = dict.vid;
        var level = dict.level;
        alert(vid + " - " + level);
    }
});

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

startDownloader

启动指定下载器的下载

startDownloader({params})

params

vid

  • 类型:字符串
  • 描述:视频vid

示例代码

var obj= api.require('polyvVideoDownloadModule');
obj.startDownloader({
    vid:'sl8da4jjbx1c8baed8a48212d735d905_s'
});

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

startALLDownloader

启动下载器列表中所有下载器的下载

startALLDownloader()

示例代码

var obj= api.require('polyvVideoDownloadModule');
obj.startALLDownloader();

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

stopDownloader

停止指定下载器的下载

stopDownloader({params})

params

vid

  • 类型:字符串
  • 描述:视频vid

示例代码

var obj= api.require('polyvVideoDownloadModule');
obj.stopDownloader({
    vid:'sl8da4jjbx1c8baed8a48212d735d905_s'
});

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

stopAllDownloader

停止下载器列表的所有下载器的下载

stopAllDownloader()

示例代码

var obj= api.require('polyvVideoDownloadModule');
obj.stopAllDownloader();

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

downloadedVideoExist

判断指定已下载视频是否存在

downloadedVideoExist({params},function(ret))

params

vid

  • 类型:字符串
  • 描述:视频的 vid

level

  • 类型:整型数字
  • 描述:视频码率

callback

ret:

  • 类型:JSON对象
  • 描述:指定vid已下载视频是否存在本地布尔值
  • 内部字段:
{
    vid:    // 字符串类型;视频vid
    exist:    // 布尔类型;文件存在为true,否则false
}

示例代码

var obj= api.require('polyvVideoDownloadModule');
obj.downloadedVideoExist({
    vid:'sl8da4jjbx1c8baed8a48212d735d905_s',
    level:1
}, function(ret, err){
    var vid = ret.vid;
    var exist = ret.exist;
    alert(vid + " ?\n" + exist);
});

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

deleteVideo

删除指定下载视频

deleteVideo({params})

params

vid

  • 类型:字符串
  • 描述:视频的vid

示例代码

var obj= api.require('polyvVideoDownloadModule');
obj.deleteVideo({
    vid:'sl8da4jjbx1c8baed8a48212d735d905_s'
});

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

deleteAllVideo

删除所有下载视频(包含下载中视频)

deleteAllVideo()

示例代码

var obj= api.require('polyvVideoDownloadModule');
obj.deleteAllVideo();

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setDownloadingCallbackIntervalTime

设置下载中(downloadStatus=downloading)回调间隔时间(秒)

setDownloadingCallbackIntervalTime({params})

params

seconds

  • 类型:数字
  • 描述:间隔时间
  • 取值范围:0和正整数(iOS 支持正实数)
  • 默认值:0 (无间隔时间)

示例代码

var obj= api.require('polyvVideoDownloadModule');
obj.setDownloadingCallbackIntervalTime({
    seconds:1
});

可用性

iOS 系统,Android 系统

可提供的1.0.0及更高版本

视频信息子模块

polyvVideoInfoModule 封装了获取保利威视视频信息功能。

getDuration

通过 vid 获取发布状态视频的时长。

getDuration({params},function(ret))

params

vid

  • 类型:字符串
  • 描述:视频的 vid
{
    vid:    // 字符串类型;视频 vid
}

callback(ret)

ret:

  • 类型:数字
  • 描述:视频播放时长
  • 单位:秒
{
    duration:    // 数字类型;视频播放时长
}

示例代码

var obj = api.require('polyvVideoInfoModule');
obj.getDuration({
    vid: 'sl8da4jjbx1c8baed8a48212d735d905_s'
}, function(ret, err) {
    alert("视频时长:\n" + ret.duration + "秒");
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getFileSize

通过 vid 和指定码率(level)获取发布状态视频的文件大小。

getFileSize({params},function(ret))

params

vid

  • 类型:字符串
  • 描述:视频的 vid

level

  • 类型:整型数字
  • 描述:视频码率
{
    vid:    // 字符串类型;视频 vid
    level:    // 数字类型:码率
}

callback(ret)

ret:

  • 类型:数字
  • 描述:视频文件大小
  • 单位:字节
{
    fileSize:    // 数字类型;视频文件大小(字节)
}

示例代码

var obj = api.require('polyvVideoInfoModule');
obj.getFileSize({
    vid: 'sl8da4jjbx1c8baed8a48212d735d905_s',
    level: 1
}, function(ret, err) {
    alert("文件大小:\n" + ret.fileSize + "字节");
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本